The infrastructure layer has 3 components:
- Platform
- Operating System
- Infrastructure
An application requires hardware infrastructure to run on. The hardware typically consists of a CPU processor, storage. This could be a PC, laptop, mobile device, a chip or anything with memory and / or disk. Another hardware alternative is the use of cloud and leveraging the different cloud flavours such as Infrastructure (IaaS) or even the platform (PaaS) or software (SaaS). In short, Infrastructure covers the "iron" that is required for the solution to run on and includes all components including servers, cloud and network.
The operating system is required to communicate with the underlying hardware. Typical operating systems are: Windows, Linux, Unix (with different flavours such as AIX for IBM, Solaris for SUN etc), AS/400, but there are many more.
For an application to run on an operating system, it needs a software platform where the application can be programmed. Examples of application platforms are Java, .Net , Foxpro, C++ as programming platforms, but one can also consider vendor software (SAP, Oracle, Weblogic etc), portal, integration platform, document management , mobile frameworks as platforms that allow to develop a solution on top of it.
Single Server, Server Virtualization and Container Architecture
So how does this framework work in practice? We show here an example where we have a Java platform installed on Linux on one server. If we take each sublayer, we see one physical server that has an operating system Linux installed. And on Linux we install Java that provides the application platform for the solution.
Virtualizing hardware allows to install multiple operating systems on one physical server or spread one operating system on multiple servers. Each separate operating system instance is called a virtual machine.
This allows to distribute physical resources better for application usage. We show here multiple scenarios using server virtualization, either leveraging one physical server and 2 virtual machines, or multiple physical servers with 2 virtual machines, and multiple physical servers with one large virtual machine:
This server virtualization offers more powerful tuning, because instead of just adding more memory or disk space, we can add complete servers to underlying infrastructure to reinforce the application platform.
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.
Starting a virtual machine is to start up an operating system, but a container can be started in milliseconds as it is a much smaller part of the underlying system that is required. Another advantage of containers is they 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 micro services and smaller functionalities. For larger applications as a whole it it still recommended to use a virtualized or traditional server architecture.
As a conclusion, for the infrastructure platform, there are basically 3 types of infrastructure architectures possible:
- Traditional server architecture with one physical server with operating system, platform and application
- Virtualized server infrastructure with virtual machines spread over different physical servers
- Containerized server architecture with multiple containers distributed over the application platform
You can see more details in the post about in the Physical, Virtualized and Container Architectures.
No comments:
Post a Comment