Application Container Evolution- Explain Like I’m 5

Understanding container evolution through simple real-time example

Let’s consider the different ways of setting up a hospital and see the advantages and disadvantages.

Case 1

One doctor owns one hospital with one receptionist.

Advantages:

· Can accommodate many patients in case of an epidemic

· Independently managed so no interference from anyone

Disadvantages:

· Rent paid for the building is expensive

· Poor utilization of the building space as there are many empty beds most days

Case 2

Multiple doctors share 1 hospital building, each having a separate receptionist. They take up the space each one requires and set up their clinic as per their needs (eg: 1 doctor has receptionist for 24 hours)

Advantages:

· Each clinic is still independently managed so no interference from anyone

· Rent paid for the building is shared so less expensive

· Good utilization of the building space

Disadvantages:

· Each clinic will need space for a receptionist

· Each clinic has to pay the receptionist

· Each clinic takes time to set up as receptionist must be hired

Case 3

Multiple doctors share 1 hospital building and receptionist. They take up the space each one requires.

Advantages:

· Rent paid for the building is shared so less expensive

· Best utilization of the building space as there is one receptionist for the whole building unlike case 2

· Can easily set up the clinic as a receptionist is already present for the whole building

· Can have more clinics as clinics share 1 receptionist

Disadvantages:

· Each clinic is independently managed but there is one external dependency on the receptionist so less reliable

Let’s map this to TECHNOLOGY

Case 1: One application runs on one server with one operating system.

Case 2: Multiple applications run on one server as if each one is running on individual servers. This is achieved by splitting the server’s physical resources (eg: RAM, CPU)into multiple VMs. Each VM has it’s own Operating System.

Starting VM takes time as starting the underlying OS takes time.

Maintenance cost is high as we have to manage multiple OS licensing, antivirus, OS updates.

Case 3: Multiple applications run on one server as if each one is running on individual servers. This is achieved by splitting Operating System’s resources (eg: File system hierarchy, process namespace)into multiple containers. All containers share the Operating System of the host server.

We can easily spin up and tear down containers on-demand as there is no extra OS to boot apart from host OS which is already running.

We have more space to spin up more containers as the containers share the host OS.

Software Engineer | Travel enthusiast