Business pressures and agile cycles are increasing the required release frequency for feature delivery. Lean thinking is inspiring new approaches to achieving continuous flow in DevOps and creating a smooth path to deliver quality software. These developments are pushing organizations to explore more effective ways to engineer their releases. One that is gaining significant appeal for many development organizations is container technology.
Containers are on fire right now, as businesses increasingly need to deliver secure and reliable solutions without sacrificing release velocity and while controlling cost. This container momentum is apparent in virtually every analyst report on DevOps.
The State of Containers
By 2023, 70% of organizations will be running three or more containerized applications in production, according to recent research from Gartner. With enterprise IT innovation, DevOps and digital transformation moving at light speed, containers are key to helping organizations increase their competitiveness and operating agility.
As indicated in Figure 1, the appeal of containers is undeniable. Their design means that efficiency and speed far outstrip bare-metal installations and even virtual environments. Despite the lure—and promise—of container technology, it introduces a new ecosystem of technologies, which adds complexity.
Within the software ecosystem, containers impact everything including runtime, management, structure and operations. Yet, their capacity to accelerate software delivery cycles while ensuring process reliability make them invaluable for many organizations.
Containers’ Nearly Limitless Potential
Containers can dramatically improve software delivery speed, platform independence, resource utilization and process reliability. They are a great path forward for organizations in today’s lean and accelerating world.
Platform independence/run anywhere: Containers package code with the configurations and dependencies they need to run consistently in any environment. This portability allows organizations to build once and deploy many times, whether on-premises or utilizing any of the cloud providers, without rebuilding the application or container.
- Improved resource utilization: Containers provide process isolation that allows fine-grained control over CPU and memory for better use of resources. While a VM often measures in gigabytes, a container measures in megabytes, allowing more containers to run on a single server than is possible with VMs. As a result of lower resource needs, organizations enjoy a significant cost reduction in moving from VMs to a container ecosystem.
- Rapid boot and spin down: Each container runs as a separate process that shares the resources of the underlying operating system. Virtual machines may take several minutes to boot their operating systems and begin running the applications they host, while containerized applications can be started within seconds.
- Greater modularity and security: Rather than run an entire complex application inside a single container, the application can be split into modules (microservices). Applications built this way are easier to manage, since each module is relatively simple, and changes can be made to modules without recompiling the entire application. Container isolation also decreases security risks: If one application was to be hacked or breached by malware, any resulting issues would not impact other containers running the same application.
- Streamlined development pipeline: Utilizing a container ecosystem eliminates environmental inconsistencies, allowing developers to ensure applications work as designed. Developers spend less time testing and debugging environmental versions and configurations, since containers can be replicated for an organization’s dev, test, QA and production environments.
- Simplified production deployment: Updating an application in production becomes easier using containers. It can be performed using various deployment methods (e.g. blue-green or canary), so once changes are deployed, if failures are encountered in production, they can be immediately rolled back to the previous version. This reduces the impact of deployment failures on an organization’s customers.
The Role of Containers in Achieving Continuous Flow
Adopted from the manufacturing world, lean and continuous flow have become an ideal that many DevOps organizations strive to achieve but struggle to implement. To apply lean practices to software delivery models in a meaningful way, process flow must support the movement of code changes to production quickly, reliably and continually.
A continuous containers approach helps clear the fog as organizations try to meet the modern demands for faster cycles and move toward a container footing. There are nine key aspects to address as you move to containers that enable speed and agility to be executed throughout the life cycle in an integrated and automated fashion. This impacts people, process, technology and cultural changes.
Nine Key Aspects:
- Containerization: The key to achieving continuous containers is containerizing existing and new applications.
- Container Automation: With faster cycles and required quality confidence, container automation is critical.
- Containers Operations: Operating in a container ecosystem means changing traditional operations approaches. It requires understanding the new toolchain and the overall life cycle.
- Container Connectivity: Containers necessitate new ways of connecting and communicating. Understanding how they fit together and relate is critical.
- DevOps: Maturing DevOps capabilities means connecting traditional silos, re-examining processes and streamlining the life cycle and pipeline.
- Pipeline Integration: A fundamental component of continuous containers is understanding and integrating the toolchain and the overall life cycle.
- Container Architecture: Driving to containers must include a well-thought-out architecture designed to meet your needs.
- Change Culture: Continuous containers involve changing the way people think at every level of the organization, the way people are connected and the way they work.
- Aligning People and Organization: Continuous containers mandate a shift in responsibilities, empowering many teams and individuals to contribute throughout the life cycle and pipeline.
Companies can realize substantial improvements with containers. However, containers are not an “out of the box” solution. Leveraging them correctly, ensuring they are secure and deploying them successfully are complex operations. These are the critical points to consider:
- Adopting, implementing and managing containers is most easily achieved with a comprehensive plan and long-term strategy.
- Entrenched behaviors and territorialism among teams can be serious impediments to adoption.
- Despite their appealing moniker, containers are not a self-contained solution. Associated activities and ecosystem tooling must accompany the deployment.
- For lasting success, organizations preferably will already have a mature DevOps practice.
Even with these caveats, the benefits for firms that adopt containers in terms of software process speed, agility and efficiency are undeniable.