The Evolution of Computing

The Evolution of Computing

Physical server

Physical.jpeg A physical server is wholly utilized by a single customer. You have to guess what your capacity is going to be and you're never going to 100% utilize that machine. You'll overpay for an underutilized server. You can't scale vertically, you can't resize it. You need a manual migration. Replacing a server is very difficult. You're limited by one host operating system. Running multiple apps is not a good practice for these machines because it may result in conflicts in resource sharing. Physical server provides more security, privacy, and full utility of underlying resources. If you have a virtual machine or anything above that, there is more responsibility on the cloud service provider to provide a secure machine.

Virtual Machines

VMs.jpeg You can run many virtual machines on one machine. With hypervisor you can run and manage multiple virtual machines. Here, a physical server will be shared by multiple customers. You have to pay for a fraction of a server. You'll overpay for underutilized part of the virtual machines because your app is not going to utilize 100% of memory, cpu, etc. If you run multiple apps on a single virtual machine, then it may result in conflicts in resource sharing. Its easier to export/import images for migration. Its easy to scale vertically or horizontally. Virtual machines are the most common and popular offering for compute.

Containers

Containers.jpeg Here the idea is to run multiple containers on a virtual machine. Docker daemon manages the docker objects like containers, images, volumes, etc. You can maximize the capacity because you can easily add new containers and resize those containers use up the remaining space. The containers share the same underlying OS so containers are more efficient than multiple VMs. You can multiple apps without being limited to the same OS requirements and it will not cause conflicts during resource sharing.