Imagine a friend invites you to a fancy $100 a plate restaurant. Then you start tearing into a 15-ounce steak with your teeth instead of cutting it. Wouldn’t that be a very frustrating experience? Also, you’d probably be getting a look from your friend, wondering whether or not he/she should invite you out again.
As with the steak, software becomes easier to manage if you split it up into smaller chunks before using it. This approach is actually used by lots of larger service providers nowadays. Whereby they split whatever it is they’re providing into lots of small microservices.
The Concept of Microservices and Virtual Machines (VMS)
To explain what a Microservice is, let’s imagine you’re using a site like Netflix. Now imagine you perform some small action on the website such as skipping forward, logging in, or paying a bill. All of these functions are handled by different dedicated Microservices. This is a concept that Netflix actually pioneered. Also, all these microservices are held in virtual containers.
Traditionally, for a site to handle many users at once, it ran lots of separate instances of the same code. This was done in virtual machines (VMs). The basic idea behind virtualization is that a VM is a separate session of an operating system —which is running inside another operating system.
The Problem With VMs
Servers can run many VMs at once, which helps a great deal when many people are accessing a website. However, having a full VM running as well as the required software will typically need millions of lines of code. Oftentimes, a user requesting to complete a simple task may require more full VMs to be opened by the server.
This becomes very inefficient and can end up hogging CPU cycles and other resources. Microservices in containers by contrast only contains the code for a specific task. Thus we could be considering just a few thousand lines of code instead of millions.
Let us revisit our Netflix example. You may have different containers each for, say, credit card authentication, volume slider, and review system, etc. Hence, if lots of people are using certain microservices, the system can just create more instances of that specific container. That is instead of having to open up more full-fat VMs.
Also Read: Buying TWS Earbuds: 5 Features to Consider
Kubernetes and Containers
In fact, Google also runs about 2 billion containers at any given time. That is because they’re so easy to scale. Thanks in part to a system called Kubernetes. Kubernetes is a Greek word meaning Captain. Google developed Kubernetes to manage containers automatically.
Important Note: Kubernetes are a container management system from Google.
Why Should You Care What Kubernetes and Containers Are?
I know this sounds like it might only be relevant to network and software engineers. However, it actually has real benefits for you as the home consumer. Imagine there’s a problem with a service which is affecting you, or that developers want to add a new feature to the service. With Kubernetes, they don’t have to search through 10 million lines of code to find the issue.
Working through millions of lines of code to fix an issue could possibly break the entire system in the process. Instead, they can just change the one or two microservices that they want and leave the others untouched. Meaning that fixes and new features can be pushed out quickly with less risk of causing other problems.
The container paradigm also offers speed enhancements. Servers can run smaller microservices much more easily without tons of VMs slowing them down. This has back-end reliability implications too because it usually takes mere seconds to deal with a problematic container. Meaning that the potential for lengthy amounts of downtime is lower.
Some Applications of Kubernetes and Containers
So all this means that developers are using containers for tons of applications. Games like League of Legends and Fortnite rely heavily on containers to reduce lag by easing the load on their servers. Pokemon Go also used containers to fix issues shortly after the game’s launch.
Pokemon Go again used containers to add new features without disrupting the millions of users who were playing the game at the time. Banks are also using containers with Kubernetes to handle loads of transactions at once to avoid slowdowns.
Even IBM’s Supercomputer Watson, which has been heavily utilized in the healthcare industry, has transitioned to using containers instead of monolithic virtual machines. So it turns out that containers have actually made life a lot easier. You may think of them to be like digital Tupperware.😉