What is virtualization in Computing?
- Basic definition of Virtualization is simulation of Hardware and Software
- Hypervisor allows one machine to run multiple virtual machines
- Discussed types of Hypervisors and their benefits:
- Bare Metal Hypervisor:
- Are Physical servers which are not configured (bare servers)
- Installed on bare metal of server, Hypervisor allows to create multiple virtual machines on same server by splitting the computing resources (RAM, Disk, etc.)
- Most popular amongst the Enterprise Data Center are VMWare ESXi, Citrix XenServer, Microsoft Hyper-V
- Installed on top of OS:
- These are software based hypervisors that will run on underlying OS. You can install these on your personal computers
- Oracle VM, Microsoft Virtual PC are widely used hypervisors
- A few Benefits:
- Less resource consumption (electricity, cooling, etc)
- Saves money
- Less maintenance and management
- Portability (VMs on one hypervisor can be moved to another hypervisor)
- Utilize full computing capabilities of underlying hardware
- Disaster Recovery
- How Cloud Providers are setting up infrastructure to provide less latency and high availability services
- Geographies
- Regions within Geography
- Availability Zones within Regions
- Data Centers within Availability Zones
- In traditional way, each application is hosted on a single server
- With Cloud, you can split your server into multiple VMs and host
diffident applications on each VM
- Containers are similar to VMs, however users don’t have to manage
OS or Hardware.
- A container can run one application. Application can be deployed
as a package which includes all scripts and their dependencies
- Dockers is a major player in providing container services
- Major disadvantage of using containers is that Files must be packaged on same OS where the container is running (e.g. if Container is on Linux, application packages to be developed on Linus OS)
- Serverless Computing:
- With Containers having their own advantages and disadvantages, Serverless
Computing give another edge to run your applications independent of OS
layer
- With serverless, users will not be responsible for managing the
server
- It’s also called as FaaS (Function as a Service)
- A function can be single module in your application (e.g. image
resizing, you don’t have to run this module all the time, but only when a
user of the application uploads an image)
- Some advantages of Serverless Computing are:
- Pay per execution (As mentioned in the example above, users have
to pay when the module is executed). No charges for idle time
- Auto Scalable (e.g. If there huge is traffic because of many
users uploading the images, auto scalability enables the module to
run seamlessly)
- Faster time to market (Service providers don’t have to wait for
Servers, licenses etc. instead they can deploy apps on containers)
- Supports Polyglot Languages (User can write code in any language)
- High Availability