Deployment Targets
Servers
aka Physical Servers
- Early to mid 2000s
- One application - one server ⇒ New application - new server
Resource wastage in physical server
Impossible to predict the size of server required
No one ever actually knew exactly how big of a server will be required for a particular application. So companies used to play it safe and bought a big server. If it gets used, well and good. But obviously, more often, the server would go underutilised and a huge amount of memory, power, physical space and maintenance would go wasted.
VMs
Virtual Machines
- Software construct dressed up to look and feel exactly like a physical server
- Each VM has its own virtual CPU, virtual RAM, virtual disks, virtual network cards etc.
- OS is installed on top of it and to the OS, the VMs look exactly like a physical server — it doesn't know the difference.
- Each VM steals the physical CPU, RAM and memory
Story of VMs
- VMware brought the Virtual Machine technology when companies were struggling with Physical #Serverss. Now, instead of dedicating one server to one app — organisations could now host tones of applications on a single physical server and save #Resource wastage in physical server.
Hypervisor or Virtual Machine Monitor (VMM)
Software that is used to create and run virtual machines. Example — VMware, Oracle VM, Microsoft Hyper-v
Issues with VMs
- Each Virtual Machine still needs its own OS, which itself consumes a lot of resources even without applications running on the VM. In this scenario — more the applications, more the waste.
- Each VM is also an attack vector
- Along with resource wastage, it comes with some potential overheads —
- License cost - For all the VMs
- Admin stuff - Patching, updates, antivirus etc.
VM Templates
VMs are instance of VM Templates.
Container
- Each container is a slice of the operating system created on top of a server.
- Containers are not full blown operating system with kernel It's more like file system constructs
- A container is an instance of #Container Image.
- Containers came up as a solution to the #Issues with VMs.
Container Image
App code and dependencies, all neatly packaged so as to be shared and run.
Container Registries
Container registries are where we store, share and access #Container Images from different environments.
Docker Hub is one of them.
Containerized Application
An application that runs inside a container.
Advantages of Containers
- Lightweight
- No need to boot OS
- No heavy #VMs stealing resources