RubyKaigi 2018

How Ruby Survives in the Cloud Native World

The container orchestration technology is attracting the Ops/SRE's attention along with the gaining importance of microservices and server-less architecture. But in my opinion, around these "cloud-native" development
s, the Ruby language shows smaller activities than other younger languages(especially Go and Rust).
By the way, in 2016, I created a container runtime Haconiwa with mruby. In 2017, I also scratched up the containers platform for my company's web hosting service using Ruby and mruby in many components. Here in 2018,
I'm going to create the brand-new container orchestration tool fully implemented in Ruby and mruby.
I will talk about how I used Ruby and mruby in these container and orchestration implementations. In addition, I will show my opinion about what kind of Ruby's features are good for these implementations, and what kind of features are required for cloud-native Ruby.

RubyKaigi 2018 https://rubykaigi.org/2018/presentations/udzura

RubyKaigi 2018

00:00:02.419 Hello everyone, konichiwa! I'm super happy to be here and talk to you.
00:00:12.410 Since 2016, I've been involved with cloud-native technologies, and today I'm going to discuss how Ruby can survive in the cloud-native world.
00:00:21.119 Do you know what cloud-native means? Today, I'm going to explain how I believe Ruby can thrive in this new environment.
00:00:39.390 First, let me introduce myself. My name is Uchio Kondo, and I am a software engineer at GMO capable. I'm from Co corner. Here are a few of my projects, which are primarily written in Japanese. These are my open-source products, including a client for Ruby called Haconiwa.
00:01:11.970 I have been involved with container orchestration for several years now. In 2016, I released Haconiwa, a container runtime using mruby. My experience has taught me valuable lessons about the usability of Ruby in container technologies.
00:01:23.130 As the organizer of the Cocoa Regional group, I have had the chance to explore cloud-native technologies in depth. Regarding frameworks, my main tool has been the Ruby-based library for orchestration.
00:01:53.909 Let's start by discussing what cloud-native is. Cloud-native refers to an approach used to build and run applications that take full advantage of the cloud computing model.
00:02:10.550 The Cloud Native Computing Foundation (CNCF) promotes the cloud-native movement, describing cloud-native applications as dynamic and orchestrated microservices. This means they can automatically adjust and scale according to load.
00:02:26.220 Emerging technologies, such as container orchestration and microservices, are becoming vital for developers and operators. My question is: why are these technologies gaining more attention now?
00:02:48.770 I would like to answer these questions based on my experiences and insights into the past few years regarding containerization and orchestration.
00:03:17.180 Now I will share what I have worked on over the last few years to address issues related to containers and orchestration. Let’s start with how I decided to create my own container language.
00:03:45.270 In my role at my company, we needed a system that could scale efficiently. We began using containers, but we faced significant challenges with configuration and management.
00:04:16.470 For instance, managing container configuration was challenging. I created a configuration system that utilized a Ruby-based stack, allowing the containers to dynamically adjust their resource allocations.
00:05:06.060 These adaptations presented obstacles, such as requiring a restart for memory changes. To overcome many of these challenges, I aimed to create a container system that streamlined these operations.
00:06:09.720 The result was Haconiwa, which I released in 2016. Haconiwa allowed for flexible use cases and was built around the concept of ease of deployment.
00:06:22.590 The design of Haconiwa offered us a domain-specific language which simplified container setup. Using this, we could adjust parameters like namespaces and resource allocations dynamically.
00:07:01.210 Later, I released a hosting platform powered by these containers, using Haconiwa as a foundation. This experience confirmed for me the potential of Ruby in cloud-native environments.
00:07:20.110 Despite some initial skepticism from colleagues about the product’s utility compared to other container solutions, I maintained that Haconiwa was advantageous due to its customizability and the simplicity of adding features.
00:08:17.610 I received feedback that highlighted the distinct advantages of Haconiwa, including its compatibility with existing tools and the ease of extending functionalities.
00:08:57.840 Additionally, we developed capability hooks within the system, enhancing usability for specialized requirements.
00:09:34.130 This flexibility made Haconiwa an attractive choice for hosting environments, where features like resource management were crucial.
00:10:03.630 However, the architecture had its challenges; we encountered issues with resource allocation and adaptation as various features required careful integration and management.
00:10:50.860 One of the solutions we identified was utilizing the concept of ephemeral containers, designed to run only for the one-time requests and terminate afterward. This dynamic approach enhances agility.
00:11:44.220 Ephemeral containers also needed a state management system to track their status for seamless operation replacements.
00:12:01.870 For orchestration, we required a reusable system to manage multiple container lifecycles efficiently.
00:12:22.250 In this landscape, we developed system tools in Ruby and integrated these with existing orchestration frameworks.
00:12:37.710 For managing resources effectively and maintaining operational control, we implemented core API frameworks.
00:12:49.700 Throughout the development process for containers, we focused on ensuring our system was robust while remaining easily customizable.
00:13:03.240 We integrated Ruby capabilities into our orchestrators and centralized management approaches, allowing us to leverage existing knowledge effectively.
00:13:30.750 However, we found that existing orchestrators such as Kubernetes posed limitations regarding deep customization targeting resource allocation amongst containers.
00:14:08.590 Our goal was to build a tailored orchestration layer that allowed for extensive control, which we achieved through Ruby's flexibility.
00:14:33.060 As we pushed forward into developing this new orchestration layer, we incorporated several Ruby and container technologies to enhance scalability and efficiency.
00:15:06.830 Looking ahead, our team aims to create a fully integrated ecosystem for managing containers and orchestration, focusing on flexible resource scaling and efficient deployment.
00:15:57.690 While this concept is still in development, I envision a series of continuous operations that will redefine how we interact with cloud-native platforms.
00:16:29.580 In conclusion, I believe that with the right frameworks and tools, Ruby can thrive in the cloud-native environment, enabling developers to create efficient and powerful solutions.
00:17:13.260 Thank you for your time. I look forward to collaborating more as we explore cloud-native technologies that elevate development and operational efficiencies.