Limits
- Every server will have limited Hardware resources, these resource can cater only certain limit
- Example Scenario:
- Our each Server component like availability checker can respond to 5000 parallel users/requests. But right now we have 10000 users
- Solution for the above scenario is Scaling. Scaling is of two types
- Vertical:
- Increase hardware resources of the current server
- Horizontal:
- Increase number of servers doing the same job
- Increase number of servers doing the same job
- Vertical:
- One unsolved puzzle over here is what will we do if the traffic comes down to 3000 users. We need a way to scale out/scale up (increase) and scale in/scale down (decrease) the number of servers based on demand
- In all the cloud, the scale in and scale out is supported and also referred as elasticity.
Terms So far
- Availability:
- A measure of system uptime.
- If your system is up for almost all the time it is considered to be Highly Available.
- Fault Tolerance:
- Capability of system to recover from failures/faults
- Elasticity:
- Capability of System to Scale up or down depending on need of the user is considered as elasticity
Virtualization
- Allows to create multiple simulated environments or dedicated resources from single physical hardware system.
Understanding virtualization
-
To run applications we follow the above workflow
-
When the applications dont use your hardware resources to the maximum potential, ROI (Return on Investment) is very low
-
Rather than using one operating system on the physical server, we can create multiple vms on the same physical server. This kind of virtualization is called as Server Virtualization
-
Every VM gets
- Virtual disk
- is connected to virtual network using virtual socket
- a CPU and memory (virtual)
- Has some Opertaing system
-
Server virtualization is supported by Softwares like VMWare ESxi
-
All the clouds use Server Virtualization for creating virtual machines
- Amazon calls it as EC2
- Azure calls it as Azure VM