Tired of hearing colleagues talk about ‘containers’ and ‘microservices,' as though they are the greatest thing since sliced bread, but without ever taking the time to explain what they are? Or why we should care?
Simply put, containers are self-contained application execution environments that share the Linux kernel of the host operating system. Containers have their own isolated CPU, memory, and network resource allocations, and have been used for years as an approach to componentize complex systems. (Instead of a hotel, imagine a campground full of RV campers.) An important detail is that containers do not include a full operating system (OS), as virtual machines (VM) do. While VMs emulate physical hardware, containers can be thought of as simulating the OS components necessary for the application. Both VMs and containers can be replicated many times over on a shared infrastructure. They also are not mutually exclusive and are often used together.
Docker, the most popular container standard, is used widely to automate the deployment of applications, especially when it comes to cloud computing. As you may have figured out already, containerized applications are highly portable, reduce complexity, and provide distributed computing capabilities.
For those looking for more information about containers, I recommend these two excellent articles:
- Containers 101: Linux containers and Docker explained, Chenxi Wang, Infoworld
- The essential guide to software containers for application development, David Linthicum, TechBeacon
A microservice architecture takes the idea of containerized applications to the extreme. Each container includes only a single process, so a complex system is composed of many independent micro-applications working in a coordinated way with well-defined rules for how each container operates as part of the larger collection.
Why do we care and what does this have to do with Software Defined Access? Containers are used widely in NFV infrastructure (NFVi) and SDN orchestration to manage the lifecycle of virtual systems. At Calix, we use containers to quickly scale up our virtualized management connectors, AXOS DPx and AXOS OFx. Containers make it easy to set up 1000s of virtual cable modems, virtual CMTS, virtual OLTs,… you get the point. Containers are an important tool on the path to highly automated systems that speed service creation and reduce complexity.
Have questions or comments? Please add your voice to the conversation, and we’ll be sure to respond.