The Guide to Practical and Pragmatic IT Architecture Design

Physical Servers, Virtualization and Containers

Any application need a physical infrastructure (a physical machine and network), an operating system and a platform to run on. 

The first generation is traditional server architecture with one physical server that has an operating system, platform and application installed. 

Traditional, virtualized vs containers


However, with the popularity of virtualization technologies, it made it possible to share same physical servers with multiple operating system instances. Or one could also join multiple physical servers to one operating system, each contained in a virtual machine. 

As diagrammed above, virtualized server infrastructure has number of virtual machines each with its own operating system spread over different physical servers or share same machine. This virtualization offers more powerful tuning, because instead of just adding more memory or disk space, we can add more physical servers to underlying infrastructure to reinforce an application platform. However, as each virtual machine has its own operating system footprint and therefore it is quite heavy. 

Container architecture

Container architecture goes one step further and allows to optimize physical resource usage at platform level rather than operating system. This is far more resource efficient than virtual servers as it has a smaller footprint than a complete operating system. This third generation of connecting underlying infrastructure to an application is dividing the platform itself, that is the Java or .Net platform for instance. In a containerized server architecture, multiple containers share same operating system, but each container acts on its own. 
To start up a virtual machine is to start up an operating system, but for a container, that can be started in milliseconds as it is a much smaller part of the underlying system that is required. Another advantage of application containers is these containers are portable across different infrastructure providers on premise and cloud, which makes it easier to build applications and move the container to different infrastructures without a problem. Containers are very useful for integrating in continuous integration and delivery processes as they are like artifacts that can be deployed and tested as any other object. 

Due to the smaller footprint of containers, they are ideal to build on microservices and smaller functionalities. For larger applications as a whole it it still recommended to use a virtualized or traditional server architecture.

Container Management Platform

To build and run multiple containers, management becomes more complex could become more complex and that is where container management platform plays a role. These kinds of platforms  provide automating deployment, scaling, and operations of application containers across clusters of hosts, so one does not need to care for each container separately.

Orchestration Containers


No comments: