Introduction
Containers and Kubernetes container orchestration have emerged as highly desirable technologies that give enterprises the agility to embrace new business opportunities in a cloud-centric world. To capture these opportunities, organizations must respond more quickly than ever to retain customers and grow the business in the face of increasing global competitive pressures. The customer experience is paramount, and having the right applications and infrastructure in place at the right time—secured and ready to scale—can make or break critical strategic initiatives.
Modern hyperscale public clouds redefine possibilities for applications and infrastructure, yielding highly available, resilient, and massively scalable services. Containers also open new opportunities for applications that are deployed on a private cloud. Built to enable the hybrid cloud, containers represent a fundamental opportunity to move beyond traditional, slow, and cost-intensive ways of developing and deploying applications toward truly programmable infrastructure without arbitrary limitations. Beyond merely moving applications to the cloud, containers fully exploit the benefits of cloud environments—whether public, private, or hybrid in nature.
It is no surprise that container usage is growing (Figure 1) alongside growth in the public cloud. Container adoption is increasing dramatically, driven by digital transformation pressures and the need to increase the pace of software development and application innovation. IDC forecasts that there will be roughly 1.8 billion enterprise containers deployed by 2021, representing a 5-year compound annual growth rate (CAGR) of 79%. Many of these containers are already running business-critical enterprise applications.
Beyond virtualization: Faster innovation requires better tools
Many organizations say that they want to innovate with their applications and services. Unfortunately, many are stuck spending most of their resources maintaining their existing legacy application infrastructure—leaving innovation as an opportunity cost. Virtualization and virtualized applications contributed significantly to better infrastructure utilization through server consolidation. Containers, orchestration, and cloud infrastructure take these gains further, bringing speed, agility, and portability to app development and deployment.
What are containers?
Containers allow you to package and isolate applications with their entire runtime environment—all of the files necessary to run. While this sounds like a simple technical innovation, it fundamentally changes the application landscape. With containers, applications can be moved between environments (e.g., dev, test, production) while retaining full functionality. Containerized applications can also be deployed equally on private, public, or hybrid cloud infrastructure. Containers are also an essential part of IT security. By building security into the container pipeline and defending your infrastructure, container-based applications are reliable, scalable, and trusted.
Why use containers?
Shortening the system development life cycle has become critical, along with providing continuous delivery and high software quality. Containers help because they reduce conflicts between your development and operations teams by separating areas of responsibility. Developers can focus on their apps, while operations can focus on the infrastructure. Because Linux® containers are open source technology, the latest advancements are immediately available. Container technologies—including CRI-O, Kubernetes, and Docker—help your team simplify, accelerate, and orchestrate application development and deployment.
What is container orchestration?
Container orchestration manages container deployments across an enterprise. Kubernetes, originally designed by Google and maintained by the Cloud Native Computing Foundation, is an open source platform that automates and orchestrates container operations. It eliminates many of the manual processes involved in developing and scaling containerized applications. Kubernetes gives you the platform to schedule and run containers on clusters of physical or virtual machines. It also offers developers a self-service environment for building applications and delivers full-stack automated operations on any infrastructure.
What can you do with containers?
When your business needs portability across multiple environments, containers are an easy decision. Containers are appropriate for myriad workloads and use cases ranging from large to small. They give your team the underlying technology needed for a cloud-native development style so that you can get started with DevOps, use continuous integration and continuous delivery (CI/CD), or even go serverless. Container-based applications can work across highly distributed cloud architectures. Containers are the ideal deployment unit for each microservice in a microservices architecture, as well as the service mesh network that connects them.
Containers benefit the business
Any new technology transition comes with costs, challenges, and a learning curve, and no technology is worth the investment if it does not promise benefits to the business. Those who have already deployed containers are seeing significant gains. A recent IDC study sponsored by Red Hat projected that investing in containers will yield a US$10.89 million value per organization,1 with benefits that include: