To quote Michael Dell, “the cloud isn’t a place, it’s a way of doing IT.” According to the Cloud Native Computing Foundation (CNCF), in the past 9 months, production cloud native deployments - across public clouds and private data centers - have increased by over 200%. Cloud native provides numerous benefits, but with an ever expanding landscape of tools, projects, and providers it can be confusing to know where to start - let along where to go.
While developers and operators can turn to the variety of resources, like StackOverflow or community Slack channels, to help them understand and implement these technologies, there are vastly fewer resources for building the business case for cloud native computing. Without an understanding of the business case, it can be difficult for IT departments to get buy-in across departments to transition towards much needed cloud native computing.
Every business is premised on providing a product or service to their customers that is better, faster, cheaper, or, ideally, a combination of the three. This blog is the first of a seven-part series examining how cloud native can help businesses deliver on their promise of better, faster, cheaper. They will cover containerization, pets vs. cattle, open source, backup and disaster recovery, API driven programming, monitoring, and security. The goal of the series is to provide a roadmap to help teams build the business case for a cloud native approach.
Containerization is actually the first step on the CNCF Cloud Native Trail Map. There are multiple reasons to adopt containers including legitimate portability (better), improved developer experience, productivity, and velocity (faster), and reduced resource utilization (cheaper). From a pure P&L point of view, this last point is the most tangible.
A container is a standardized packaging of code - and all of its dependencies - that allows applications to run quickly and reliably from one environment to another. It is a further abstraction of a virtual machine (VM) (check out our blog post “Cloud Native for Non-Coders” if you want to learn or refresh the difference between a container and VM). Instead of having to virtualize everything including the kernel and OS for every application, like when using VMs, multiple applications, each in a separate container, can share the same OS. This provides many benefits tangible business benefits including isolating dependencies to create a better product, increasing delopyment speed, and reducing computing expenses. Below is a deeper dive into how containerization cuts costs.
When designing our Kubermatic Container Engine, we knew containerizing the management components of user Kubernetes clusters would reduce the overall cost of management for our customers. Using containers rather than virtual machines (VMs), like kubespray, kops, and Rancher, allows us to reduce our customer’s infrastructure costs 5x.
Below is an example cost comparison between Kubernetes cluster managed with VMs and clusters managed with containers. All pricing information is pulled from the AWS calculator.
To run in production stable, high availability mode, each user Kubernetes cluster requires 3 t3.medium VMs with at least 2 vCPU & 4GB RAM. Pulling pricing from the the AWS calculator Frankfurt region, each user cluster costs $105.42 per month. Thus, to run 1,000 clusters in production for a month costs $105,420 in just management overhead.
Kubermatic follows cloud native best practices and instead uses containers to manage user Kubernetes clusters. Each Kubernetes cluster only requires 2 GB of RAM to host the containers of the control components. Thus, Kubermatic can run 1,000 clusters on only 33 m5.4xlarge VMs each with 16 vCPU & 64GB - at a total cost of only $ 22,223.52 per month. Using a container rather than a VM based management model helps us reduce the cost of cluster management for our customers almost 5x.
1 User Clusters = 3 x VM
= 3 x t3.medium
= 3 x $35.14
1,000 User Clusters = 3000 VMs for Masters = $105,420 per month
1 User Cluster = 2 GB RAM
30 User Clusters = 1 x m5.4xlarge
= 1 x $ 673.44
1,000 User Cluster = 33 VMs for Masters = $22,223.52 per month
Containerization is only the first step on the cloud native journey and is only part of the cloud native business case. Check out part two: Pets vs Cattle to understand how to design a better production system.