One of the most talked about pieces of technology today is the concept of containers. Containers more easily allow organizations to reliably run software when moved from one computing environment to another by providing an entire runtime environment (an application, plus all its dependencies, libraries and other binaries, and configuration files needed to run it).
Whether it is moving from staging to production, or from a physical data center to a virtual one, containers are revolutionizing the entire software lifecycle.
Curious about how containers could benefit your organization? Here are 7 features that will help you understand why this technology is vital for the growth of your organization.
1) DevOps & Continuous Delivery
When the application consists of multiple containers with clear interfaces between them, it is a simple and low-risk matter to update a container, assess the impact, and then either revert to the old version or roll the update out across similar containers. By having multiple containers provide the same capability, upgrading each container can be done without negatively affecting your stateless services.
2) Replicating Environments
When using containers, it's a trivial matter to instantiate identical copies of your full application stack and configuration. These can then be used by new hires, partners, support teams, and others to safely experiment in isolation.
3) Accurate Testing
You can have confidence that your QA environment exactly matches what will be deployed – down to the exact version of every library.
By architecting an application to be built from multiple container instances, adding more containers scales out capacity and throughput. Similarly, containers can be removed when demand falls. Orchestration frameworks – such as Kubernetes and Apache Mesos – further simplify elastic scaling.
Every container running on the same host is independent and isolated from the others as well as from the host itself. The same equipment can simultaneously host development, support, test, and production versions of your application – even running different versions of tools, languages, databases, and libraries without any risk that one environment will impact another.
Unlike VMs (whether used directly or through Vagrant), containers are lightweight and have minimal impact on performance.
7) High Availability
By running with multiple containers, redundancy can be built into the application. If one container fails, then the surviving peers – which are providing the same capability – continue to provide service. With the addition of some automation (see the orchestration section of our paper), failed containers can be automatically recreated (rescheduled) either on the same or a different host, restoring full capacity and redundancy.
The rich functionality, simple tools, and powerful APIs make container and orchestration functionality a favorite for DevOps teams who integrate them into Continuous Integration (CI) and Continuous Delivery (CD) workflows.
Want to learn more? Read our new white paper on Enabling Microservices:
About the Author - Andrew Racine
Andrew is Director, Demand Generation at MongoDB where he helps customers learn how to turn their giant ideas into reality. Prior to joining MongoDB, Andrew was the Director of Marketing at Conjur, an infrastructure security startup. Before Conjur, Andrew spent nearly 5 years at HubSpot in a variety of customer-focused roles.