Software Architecture

How Ruby Survives in the Cloud Native World

How Ruby Survives in the Cloud Native World

by Uchio KONDO

The video titled "How Ruby Survives in the Cloud Native World" features Uchio Kondo discussing the role of Ruby in modern cloud-native technologies during the RubyKaigi 2018 event. Kondo begins by introducing the concept of cloud-native applications, which utilize microservices and dynamic orchestration through containers. He highlights his experiences since 2016, particularly focusing on his development of Haconiwa, a Ruby-based container runtime, and the accompanying challenges and successes in integrating Ruby into cloud-native practices. Key points covered include:

  • Definition of Cloud-Native: Kondo explains that cloud-native refers to applications designed for cloud environments, which can dynamically scale and adjust according to demand.
  • Container Orchestration: He discusses the importance of managing container lifecycles and resources effectively to meet operational needs.
  • Development of Haconiwa: Introduced in 2016, Haconiwa simplifies container configuration with features that facilitate easy deployment and management, including a domain-specific language that optimizes resource allocation.
  • Flexible System Architecture: Kondo emphasizes the importance of creating reusable systems that adapt to various operational requirements while ensuring ease of customization.
  • Challenges Faced: He shares insights on issues encountered during development, such as resource management and the integration of ephemeral containers, which enhance agility by running only when needed.
  • Future Projects: Kondo expresses his vision for developing a fully integrated ecosystem for managing containers, focusing on flexibility and operational efficiency.
  • Conclusion: Kondo believes that with appropriate tools and frameworks, Ruby can thrive within the cloud-native ecosystem, enabling developers to create effective solutions. He expresses optimism about future collaborations in exploring cloud-native technologies.

Overall, the talk underlines the potential for Ruby in cloud application development and the continual efforts to enhance its functionality within the cloud-native landscape.

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.