The Best Concise Definition of DevOps, Containers, And Container Orchestration (like Kubernetes), Ever!

In my travels I came across this (the below), and thought it was worth remembering (why I blog), so here it is:

1: Introduction
Recently the terms DevOps and containers have become the buzzwords in the tech industry. Oftentimes these two words are a part of the same conversation.

2: DevOps “Software DEVelopment" and "information technology OPerationS”
It’s the term referred to where the development teams and the IT operations team works hand-in hand and breaking the barrier. Without DevOps it is often a wait game for the developers - or in other words - they were more dependent on their operations team for various IT related activities, such as: provisioning, configuring and scaling resources. The goal of DevOps is reducing friction and enable better communication between operations and development teams.

The desired result of this improved collaboration includes better quality of the application, faster time to market for features and fixes, and ultimately driving better business outcomes leveraging IT.  The implementation of DevOps, where development and applications teams consume the resources of the operations and infrastructure teams is typically accomplished using automation, empowering applications to use the resources needed on-demand, where, when, and how they need them.

3: What is a Container?
Containers often help the DevOps model making development, testing and modifying code very easy. In other-words, containers can make it easy to package the application and move it from dev to test to production, reducing complexity and friction between stages.

Containers are an application packaging technology.  They decouple the application from the operating system, making it portable across runtime environments.  This means that the developer can write and test code on their laptop, package it as a container, and put it into the testing process.

Containers ensure that the application has the same set of libraries, binaries, and tools in the test/QA environment as they did on the developer workstation.  When the application is deployed to production, the same level of confidence that it will reliably deploy and execute will remain. By containerizing the application platform and its dependencies, differences in OS distributions and underlying infrastructure are abstracted away.

In other words, containers are enablers for DevOps.

4: What is Docker?
Docker is the world’s leading software container platform, that automates the deployment of applications inside software containers. Docker (the daemon/CLI tool) makes it easy for anyone to package an application into a container image, distribute that image, and deploy it onto servers.

Docker uses container technology to instantiate an application in an isolated environment. Because containers just uses libraries and dependencies packed without having operating system dependency, application or software portability becomes much easier, meaning it can run anywhere regardless of where it is deployed.

Image: What is Docker?

5: What is Container Orchestration?
A single container is a great way to deploy a single instance of an application or one of its components. However, modern cloud native applications often consist of dozens or hundreds of services, often referred to as microservices, which can each have hundreds or thousands of instances.

Q: How do you manage thousands of instances of containers?
A: By using a container orchestrator.

Orchestrators abstract a cluster of compute, storage, and network resources into a single pool and then schedule containers to be run across those resources. This enables the developer to simply define the overall application architecture - for example “I need 10 web servers, 2 load balancers, and 3 database instances” - without having to manage individual container instances.

There are a large-number Container Orchestrators.  The most common ones used on-premises today are Kubernetes (the number 1), Rancher, Docker Swarm, and Mesos with Marathon.  Some hyperscale cloud providers also offer Containers-as-a-Service environments which customers can use to deploy containers as needed without having to manage an orchestrator.

Comments