Containerization and the Cloud: A Perfect Match

Image Source

 

Many are claiming that containerization is the future of the cloud and maybe even of application development in general. Supporting this is the fact that Google alone launches more than two billion containers each week. In fact, almost all of the Google services you know and use are built on containers.

Containers are the latest trend in application development, but many don’t understand what “containerized” really means. In this article, you’ll learn what containers are and how they’re used in the cloud. You’ll also learn about the most popular options for using containers in the cloud.

 

What Is Containerization?

Containerization is a process in which application code is bundled with all its required dependencies, libraries and configuration files. This bundle is a container image that you can run as a package on runtime software such as Docker. A container image becomes a container when run. A container can be an entire application or parts of an application, in the form of microservices.

Containers run on top of your host system, using the host Operating System (OS) and hardware. Containers are different than Virtual Machines (VMs), which must be bundled with an OS. Containers abstract the application layer while VMs abstract the hardware layer. In comparison, containers usually require less storage and memory than VMs. You can also initialize containers faster than VMs.

Containers enable you to run applications regardless of your environment. With containers, you can create distributed applications, prevent interdependencies, and eliminate single points of failure. You can scale containerized applications by creating mirrors of containers that workloads can be distributed across. Distribution and communication between containers occur through API.

Container formats and runtime software are standardized by the Open Container Initiative (OCI). The most common container system is Docker and the most common orchestration tool is Kubernetes (k8s). Containers can be used on bare-metal servers, in VMs, or in cloud instances.

 

How Is Containerization Used in the Cloud?

Containerization is primarily used in the cloud to take advantage of cloud-native benefits such as high availability, scalability, and global distribution. Cloud-native applications are developed in containers from the start. Alternatively, you can use containers to repackage legacy applications, granting them cloud benefits you wouldn’t otherwise gain.

Containers enable you to more easily implement Continuous Integration and Continuous Delivery (CI/CD). With containers, updates can be uniformly pushed with zero down-time. Development is faster because containers eliminate the need to test applications in multiple environments. Containers also enable you to develop with less concern for limited server memory, resource provisioning, and performance restrictions.

Another reason to use containerization in the cloud is to ensure that you are not limited by vendor lock-in. Containers are system agnostic, meaning that you can use them on almost any infrastructure. When transferring containers, you only need to be concerned if you are using proprietary managed services.

Using containers also enables you to achieve closer to 100% utilization of instances. You can run multiple and variable amounts of containers per instance and containers can communicate across instances. This is different than instances used like VMs which don’t allow you to use provisioned resources for other VMs.

 

Managed Services for Containers in the Cloud

Most container deployments are orchestrated and managed using Kubernetes (k8s). Kubernetes is an open-source platform that enables you to configure, orchestrate and automate container deployments. It is the most mature offering for orchestration, and benefits from massive community support.

Alternatives to Kubernetes include Docker Swarm, Apache Mesos, Rancher, and OpenShift. Many of these alternatives are based on k8s. These alternatives typically offer managed services that are not available directly with k8s.

A popular option for enterprise deployments is OpenShift. To gain a better understanding of the differences between your options, check out this comparison of OpenShift vs Platform9. If you are using one of the big three cloud providers, you can also take advantage of some level of managed services.

 

Google Kubernetes Engine (GKE)

GKE provides a managed environment for the deployment and scaling of containers. It enables you to run k8s without having to install, manage, or operate your clusters. With GKE, you use Google Compute Engine instances to form a cluster. It includes features for logging and monitoring via Stackdriver and automatic k8s upgrades.

 

Amazon Elastic Container Service for Kubernetes (EKS)

EKS provides management of the Kubernetes control plane. To use it, you must first provision worker nodes and connect them to EKS. It uses EC2 Spot instances but can be used with On-Demand and Reserved instances as well. EKS includes the ability to run on bare-metal nodes, which is not an option with the other cloud managed services. You also have the option of managing your own k8s if you use Elastic Container Service (ECS).

 

Azure Kubernetes Service (AKS)

AKS provides management of hosted Kubernetes and includes Container as a Service integration. It uses dedicated container instances or “serverless” instances through Azure Container Instances (ACI). AKS includes features for integrated CI/CD and the use of the Visual Studio integrated development environment. You also have the option to use Azure Container Service if want to use Apache Mesos or Docker Swarm to orchestrate your containers.

 

Conclusion

Containerization is not an entirely new technology. The technology that it is based on—chroot in Unix V7—originates in 1979. It wasn’t until 2013, with the emergence of Docker, that containerization exploded. This growth seems unlikely to stop anytime soon.

Becoming comfortable with containers can help you take better advantage of cloud services now and in the future. Hopefully, this article helped you better understand what containerization is, why it has become a driving force in cloud development, and your options for adopting it.

 


Author Bio

Gilad David Maayan author image

Gilad David Maayan is a technology writer who has worked with over 150 technology companies including SAP, Samsung NEXT, NetApp and Imperva, producing technical and thought leadership content that elucidates technical solutions for developers and IT leadership.

LinkedIn: https://www.linkedin.com/in/giladdavidmaayan/