The container can include the runtime services, system tools and libraries. These services are brought together into a filing system so that they can be installed on a server or on the cloud. The benefit of the container is that it ensures the software will consistently and predictably run on any environment. In addition, a container makes it easy to create a self-healing and auto-scaling process. Unlike a virtual machine, the container does not require an operating system, and software environment services. On the other hand, a virtual machine communicates through a hypervisor on a shared physical hardware envi- ronment. A VM must contain its own operating system and does not get direct access to its host’s resources. Therefore, a container has a much smaller footprint when compared to a virtual machine. Rather than requiring a copy of the operating system, a container utilizes the host’s operating system. Available for both Linux- and Windows-based applica- tions, containerized software will always run the same way, regardless of the environment. Containers isolate software from its surroundings such as differences be- tween development and staging environments, and helps reduce conflicts between teams running different soft- ware on the same infrastructure. The value of microservices Before we get into the details of containers and Kuber- netes, it is important to understand the importance of microservices - one of the architectures that is core to the value of containers. 43

Building Cloud Native Apps Painlessly - Page 49 Building Cloud Native Apps Painlessly Page 48 Page 50