Containerization


Containerization and how well containers fit in the Google Cloud

Containerization is a topic that has greatly gained traction in the software development tech space over recent years. This has been necessitated by the need for continuous integration (CI) and continuous deployment (CD) when building software. To achieve the CI/CD aspect of software architecture, developers make use of containers. A container is essentially a fully packaged portable and self-dependent computing environment. Containerization can thus be defined as a form of virtualizing an operating system to make portable, lightweight, software-defined environments in which software can run in isolation of other software running on the physical host machine. 

An entire line of products such as Docker, Kubernetes, tools, and best practices have emerged to enable a myriad of applications to be containerized. You can containerize just about any software application starting from microservices, web servers, database management systems, containers within VMs to increase security, and more. 

Major cloud providers such as Google, Azure, AWS, Digital Ocean, among others are fighting for the top spot in providing environments for running containers. Google, being a data-focused tech giant, happens to be a frontrunner in this since it offers other services on top of containerization such as Big Data, Machine Learning, etc. 

So, how well do containers fit in the Google Cloud?

Google Cloud is large on containerization, in fact, everything at Google apparently runs in containers. If you are wondering why, I will discuss the benefits of containerization in a section below. They have gone ahead to provide the necessary tools you may need to use containers, from development to production. These tools and solutions include:

  • Google Cloud Run – is a Google Cloud’s implementation that enables you to run stateless/server-less containers that you can invoke through the web or Pub/Sub events. It automatically scales up and down from zero instantly depending on the traffic hitting your application. 
  • Google Kubernetes Engine (GKE) – is a Google Cloud’s container management solution that takes care of the health, state, scaling, and scheduling of your containers. If configured properly, GKE can auto-repair failing nodes. 
  • Google Container Registry (GCR) – container registries are like repositories where developers host their containers, either privately or public for other developers to use. Docker hub is an example of a container registry. GCR offers a similar solution to its users, where you can push, pull, and manage the visibility of your container images. 
  • Google Compute Engine (GCE) – This is the infrastructure in which you can deploy virtual machines on-demand, and then use those virtual machines to run your containers. 
  • Google’s Container Optimized OS – Google Cloud has actually developed an OS image based on the open-source Chromium OS project. It is optimized for running Docker containers. It offers fast boot times and comes with all Kubernetes components installed for container management. It has cloud-init, Compute Engine’s metadata framework, and the necessary tools needed to configure an instance during boot up to ensure your application is served fast enough.

Why is Containerization Good?

  • Scalability – this is one of the major reasons containers are popular. Containers can reside alongside other containers on the same computer without interfering with the processing of each other. This saves you from requiring a lot of server space for your applications. 
  • Portability – containers have been designed to run comfortably in any digital workspace. Basically, the application inside the container will run the same in whatever host operating system you choose to use. You can predict how your application will run across different implementations.
  • Automated container management – through solutions such as Kubernetes, you can automate deployments, restarts in case of failure, and rollbacks. If for example, your application is getting more traffic than it can handle, another containerized application can be started to balance the load and ensure your users don’t experience downtime. 
  • Reliability – containers are isolated and self-reliant. A failure in one container running in one host OS will not affect the other containers. You can have several instances of your application running in several containers, and if one container has a crash, the other instances will continue running.