Docker And Kubernetes: Furthering The Goals Of DevOps Automation
Containers are a hot topic, yet production usage remains low, according to Gartner, with most enterprise container adoptions in an early phase. A recent survey by Diamanti backs this up, finding that while almost half (47%) of the IT leaders it surveyed plan to deploy containers in a production environment, only 12% have already done so.
Despite this low adoption, the hype is for good reason, as containers can make a significant impact on development and production environments, infrastructure cost and time to delivery.
For those of you still getting your arms around the concept of containers, they are aptly named, as they hold everything an application needs — including the application, configuration files, libraries, etc. — all in one container. The benefit is that the application is essentially self-sufficient. Not needing to interoperate with underlying infrastructure, the containerized app is now mobile and able to run nearly anywhere without making any changes. (For additional background on containers, Forbes Technology Council member Murli Thirumale wrote a thorough piece on what containers do.)
Containers And DevOps
As I wrote in an earlier column, “DevOps allows us to turn the one-lane road of traditional IT into a broad, paved expressway safe for travellers of every stripe.” The application of automation, coupled with guardrails and rules of the road, increases development and operations productivity while removing human-error-induced risk from the system.
Containers build on these DevOps benefits. By removing the need to tailor code for each and every different system dependency, containerized applications can easily be delivered to service agnostic infrastructure for faster deployment. Using our expressway analogy, containers are like tractor trailers that are able to deliver many elements together without consideration for the underlying infrastructure, and in the process, they’re able to move each one faster to their destination and with less risk.
Practically speaking, to deliver this within the DevOps environment, operations teams create the DevOps highway with guardrails and road signs, and development teams are responsible for driving on it. Operations then create the framework for running containers, and from there, development teams own the containers.
Docker And Kubernetes
When it comes to containers, there are two key technologies that you’ve undoubtedly heard a lot about: Docker and Kubernetes. Docker is an attractive option for many enterprises, as it is lightweight, portable and hardware-agnostic. (Full disclosure: Docker is a partner company of Flux7.)Docker’s packaging enables a developer to write an application in any language and then easily move it (e.g., from a laptop to a test server).
This level of easy portability is extremely attractive and fueled early Docker popularity among developers, and it is now beginning to catch on across production environments. In addition, Docker in production:
- Addresses mismatches between development and production environments.
- Optimizes infrastructure cost.
- Decreases provisioning time.
However, to run containers at enterprise scale is a different proposition than running containers in development: It’s helpful to have an orchestration layer that manages resources, scheduling, load balancing and more. There are many choices for container orchestration. In addition to Kubernetes, other choices include solutions like Docker EE, Azure Kubernetes Services (AKS) and AWS ECS, which all now support Kubernetes. Tools like Red Hat OpenShift and Google Kubernetes Enterprise are also based on Kubernetes, which is quickly becoming the de facto standard for container orchestration.
In addition to tools for container orchestration, there are also many tools for managing IT automation, but they are designed to automate everything from bare metal servers to serverless, introducing unneeded complexity. Kubernetes is purpose-built with a simplicity of design that has made it the container orchestration tool of choice. More and more, Docker is what helps development create containers, and Kubernetes is what operations uses to orchestrate and manage them.
Mobility As A Foundation For DevOps-Based Innovation
An enterprise media company that also happens to be a Flux7 customer provides one example of how Docker containers and Kubernetes are being used to balance improvements in efficiency with innovative digital experiences. The CIO of this public company was experiencing pressure from stakeholders to dramatically improve the performance of several hundred applications and workloads to improve customer experience and overall business agility.
Docker and Kubernetes were a core piece of the platform for innovation that helped this media company gain greater mobility and business agility. The deployment had containers replacing VMs as the de facto unit of computing, and without underlying dependencies, developers were able to produce applications faster that were immediately transportable. Moreover, as the applications are now able to run on an abstracted resource pool, the enterprise has moved from managing configurations to managing deployment units. The result is a faster time to market, greater automation and less risk.
As the buzz around Docker and Kubernetes continues to grow, large enterprises are starting to build container strategies for both development and operations. While Docker and Kubernetes are a natural fit for furthering DevOps automation, enterprises should be sure to map out complete strategies, including technology, process and training to ensure they retool where necessary. With a solid strategy in place, containers have the ability to make meaningful impacts on development and production environments, infrastructure cost and time to delivery.