Containers All the Way Down
Container-based architectures for developers and operations teams create a new angle on a story that dates back to an age when the client and the server were tightly bound. Virtual machines were an abstraction that allowed the operating system to be disconnected from the underlying server. This allowed for hypervisors to emerge as platforms to run virtual machines on hosted environments.
The container runs as a process on a host, independent of the operating system. Virtualization technology is below the operating system and virtualizes the server, not the application. Wherever the virtual machine goes, the operating system has to go with it. It has to be taken down, then booted back up and configured to run with the database and the rest of the stack that it depends on. Containers are symbolic of the cloud native ecosystem, and will be core to modern application architectures.
Now Comes Cloud Native, A Further Abstraction
Cloud native computing allows teams to build and manage services using container architectures and stringing them together into applications, without worrying about servers at all. This is what cloud native computing is all about. Containers, connecting services, microservices, immutable infrastructure and declarative APIs exemplify this approach, all working together in a loosely-coupled approach for maximum flexibility and development agility.
“Cloud native technologies are used to develop applications built with services packaged in containers, deployed as microservices and managed on elastic infrastructure through agile DevOps processes and continuous delivery workflows.”
— Writes Janakiram MSV, principal analyst at Janakiram & Associates and an adjunct faculty member at the International Institute of Information Technology.
Where Compute is Made of Services Communicating via API
In cloud native computing, the base unit of compute is the service, which can communicate with other services via APIs. Ideally, each service should be encapsulated within a container, and offer a single function — hence the name “microservice.” Containerizing the microservice makes it easy to develop, as it can be moved along a single workflow of development and testing, and onto production, a process called continuous integration and continuous deployment (CI/CD).
Building on the Kubernetes open source container orchestration engine — first developed by Google — the Cloud Native Computing Foundation ensures that there is a stack of open source software on which to run cloud native applications, without being locked into a proprietary software vendor or commercial software.