Physical machine
Physical machines are good when we need highly productive hardware to run the application(data intensive workloads) -> high demand and control of hardware
Virtual machines
Hypervisor : virtual machine monitor : create and run vVMs
There are many types of machines in the market and we can create different types of VMs according to needs so it can also deal with high workload.
Containers : lightweight, standalone executable package of software that includes everything needed to run an application: code, runtime, system , libs and settings .
Containers are good for any workload.
Serverless (cloud): Engineer only write code and deploy on the cloud ( even some dependencies are built in)
Good for (unpredictable load so autoscaling )