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
Post a Comment