IBM Developer Day | Bengaluru | March 14th Register now
By Robert (Bob) Spory, Rafi Afzal Published January 31, 2019
“Awww, come on guys, it’s so simple. Maybe you need a refresher course. … It’s all ball bearings nowadays.” (Source: Irwin “Fletch” Fletcher in the 1985 movie “Fletch”).
Sadly, it is not all about ball bearings nowadays. It’s all about containers. If you’ve heard about containers, but not sure what they are, you’ve come to the right place. This blog post will cover the following:
Across organizations, there is a spectrum of container adoption. Many people are just learning about containers. Some companies are further along in their journey. If you’re at all considering containerization, it’s time to join the fun where you can see real business results:
The best analogy for understanding containers is a shipping container. That’s why the majority of all container articles and blogs, you will see a photo of a shipping container – including this one. I’m sure you’ve seen the transport of those big steel shipping containers. (I’ve also seen some “off-the-grid-type” people using them to build houses and swimming pool.) The shipping industry standardized on a consistent size container. Now, the same container can move from a ship to a train to a truck without unloading the cargo. The container contents do not matter.
Just like a shipping container, a software container is a standardized package of software. Everything needed for the software to run is inside the container. The software code, runtime, system tools, system libraries, settings are all inside a single container.
Once you start diving into containers, it’s impossible to avoid reading about microservices. (No, microservices are not those tiny cars you step on in the dark. Those are Micro Machines. Maybe I’m dating myself?) Microservices is an architectural style. A microservices architecture structures an application by using as a collection of loosely coupled services, which deliver specific business capabilities. Containers help make it happen.
About ten years ago, Netflix was one of the first to begin using containers extensively. They rewrote the applications that ran their entire video service by using a microservices architecture. Netflix estimates that it employs around 700 microservices to control each of the many functions that make up Netlifx. Let’s look at a few (not all 700):
Netflix has about 250 million hours of video per day, with around 118 million subscribers in 190 countries. At this scale, providing entertainment in a matter of a few seconds puts their application to the test. So, yes, containers work for small and the largest of companies.
(Source: How Netflix works: the (hugely simplified) complicated stuff that happens every time you hit Play | Mayukh Nair)
Now that we understand what a container is, it’s time to introduce you to Docker. (I am not referring to the comfortable Casual Friday pants, Dockers.) Docker is the name of the open-source containerization technology that enables the creation and use of containers. It shouldn’t come as a surprise, but IBM is very active in the Docker open source community.
Docker isn’t new, in fact it’s been around since 2008. There are other container options, but most believe Docker has “won” the container war. (Some of you may remember the BlueRay vs. HD-DVD standard battle years ago. BlueRay was triumphant. Docker is like BlueRay using this analogy.) Docker allows you to package, ship, and run applications on any public or private cloud. Being able to run applications anywhere will help you avoid vendor lock-in and move to a new environment anytime.
There is another critical concept that needs an introduction: orchestration. If you have one container, it is easy to manage. However, as you create more containers it is crucial to manage them. If you don’t, you will likely descend into chaos. (Chaos is not good.) Kubernetes saves you from the aforementioned chaos. (Fun fact: Kubernetes is a Greek word meaning helmsmen or pilot.) Kubernetes is an open source system that pilots or orchestrates your fancy containerized applications. Think of Kubernetes as the crane that moves and controls your containers. As with Docker, IBM is very active in the Kubernetes open source community.
As mentioned, Kubernetes orchestrates your containers. What does really mean, though? Kubernetes will scale your application up or down. Kubernetes rolls out changes and upgrades to your application. If something goes wrong, Kubernetes will roll back the change and restart containers that fail, replaces containers when nodes die, and kills off containers that don’t respond to your health check. This management results in saving resources without sacrificing availability and provides auto load-balancing.
As the name suggests, a virtual machine is software that emulates a computer system. A VM enables teams to run what appear to be multiple machines on a single computer. If you need to run software on a different type of hardware or operating system, a VM provides that option without using additional hardware.
The primary difference between a container and a VM is that with a VM, the team creates virtual environments – containing operations systems – where different types of software can run. A container, however, isolates the software from the environment and the operating system, enabling it to run almost anywhere.
(Source: Containers vs. VMs: What’s the difference?)
Just like the famous saying, “A journey of a thousand miles begins with a single step,” your container journey begins the same way – with one container. There are plenty of benefits with containerizing your applications, but the question is where to start? Or, how to start?
Here are three ways to get started:
Regardless of what works best for your organization, take the first step!
There are different approaches to Kubernetes and your Docker containers. Remember, Docker allows you to package, ship, and run applications on any public or private cloud. Most organizations today do not lock in with a single cloud vendor. This a good practice. Seventy-one percent of companies use 3 or more clouds, and 8 out of 10 are committing to a multi-cloud strategy. We like to think of clouds in 3 different ways:
IBM Cloud Private (ICP) is a cloud platform. It is a fully supported and integrated environment. It enables you to design, develop, deploy and manage on-premises containerized cloud applications behind your firewall. IBM Cloud Private conveniently includes both Docker and Kubernetes. (Funny how that works out, right?) You might be thinking, “Well if Docker and Kubernetes are both open source, why don’t I build my own?” Here are some reasons why:
Containers are building blocks for the future and more than the “new cool kid at school” and are here to stay. From delivering applications more quickly, to supercharging development to deployment to reducing infrastructure and software costs, containers provide organizations, both small and large, with real business results. Below are links to videos, hands-on test drives, tutorials, and other helpful information to help you get started today.
One of the most common questions developers seem to ask is whether they should be using Docker vs. Kubernetes. Most…
Learn how to create and connect to a MySQL database in a Docker container and Loopback development environment.
In spite of the drawbacks, microservices continue to be popular with developers and enterprises as it greatly benefits their application…
Microservices are definitely the hot new thing in commercial application development. The term microservice has replaced Agile, DevOps, and RESTful…
Back to top