Cloud Computing (SaaS, PaSS, IaaS)
What is Cloud Computing?
The practice of using a network of remote servers hosted on the Internet to store, manage, and process data, rather than a local server or a personal computer.
On-Premise
- You own the servers
- You hire the IT people
- You pay or rent the real-estate
- You take all the risk
Cloud Providers
- Someone else owns the servers
- Someone else hires the IT people
- Someone else pays or rents the real-estate
- You are responsible for your configuring cloud services and code, someone else takes care of the rest.
| Responsibilities | On Premise | Cloud Hosting |
|---|---|---|
| Pay or Rent Real Estate | You | CSP |
| Own Physical Servers | You | CSP |
| Hire IT people | You | CSP |
| Configuration and code | You | You |
| Take Risk | You | CSP |
*CSP => Cloud Service Provider.
Dedicated Server
One physical machine dedicated to a single business. Runs a single web-app/site. Very Expensive, High Maintenance, High Security*
Virtual Private Server
One physical machine dedicated to a single business. The physical machine is virtualized into sub-machines Runs multiple web-apps/sites
Shared Hosting
One physical machine, shared by hundred of businesses. Relies on most tenants under-utilizing their resources. Very Cheap, Very Limited.
Cloud Hosting
Multiple physical machines that act as one system. The system is abstracted into multiple cloud services Flexible, Scalable, Secure, Cost-Effective, High Configurability.
Benefits of Cloud Computing
Cost-effective : You pay for what you consume, no up-front cost. Pay-as-you-go (PAYG) thousands of customers sharing the cost of the resources
Global : Launch workloads anywhere in the world, Just choose a region
Secure : Cloud provider takes care of physical security. Cloud services can by secure by default or you have the ability to configure access down to granular level.
Reliable (विश्वसनीय) : data backup, disaster recovery, and data replication, and fault tolerance (सहनशीलता)
Scalable :Increase or decrease resources and services based on demand
Elastic : Automate scaling during spikes and drop in demand
Current : The underlying hardware and managed software is patched, upgraded and replaced by the cloud provider without interruption to you.
Elastic : Elastic computing is the ability to quickly expand or decrease computer processing, memory, and storage resources to meet changing demands without worrying about capacity planning and engineering for peak usage.
https://azure.microsoft.com/en-us/overview/what-is-elastic-computing/
Scalability : Scalability is the ability of a system to handle increased load. Services covered by Azure Autoscale can scale automatically to match demand to accommodate workload. These services scale out to ensure capacity during workload peaks and return to normal automatically when the peak drops.
https://docs.microsoft.com/en-us/azure/architecture/framework/scalability/design-scale
Types of Cloud Computing
SaaS
Software as a Service For Customers A product that is run and managed by the service provider Don’t worry about how the service is maintained. It just works and remains available.
- salesforce
- Office 365
- GMail
PaaS
Platform as a Service For Developers Focus on the deployment and management of your apps. Don’t worry about, provisioning, configuring or understanding the hardware or OS.
- heroku
IaaS
Infrastructure as a Service For Admins The basic building blocks for cloud IT. Provides access to networking features, computers and data storage space. Don’t worry about IT staff, data centers and hardware.
- Microsoft Azure
- AWS
- Oracle Cloud
Types of Cloud Computing Responsibilities
On-Premise
- Customer is Responsible for
- Applications
- Data
- Runtime
- Middleware
- OS
- Virtualization
- Servers
- Storage
- Networking
Infrastructure as a Service
- Customer is Responsible for
- Applications
- Data
- Runtime
- Middleware
- OS
- CSP is Responsible for
- Virtualization
- Servers
- Storage
- Networking
Platform as a Service
- Customer is Responsible for
- Applications
- Data
- CSP is Responsible for
- Runtime
- Middleware
- OS
- Virtualization
- Servers
- Storage
- Networking
Software as a Service
- CSP is Responsible for
- Applications
- Data
- Runtime
- Middleware
- OS
- Virtualization
- Servers
- Storage
- Networking
Azure’s Deployment Models
Public Cloud: Everything built on the Cloud Provider Also known as: Cloud-Native
Private Cloud: Everything built on company’s datacenters Also known as On-Premise The cloud could be OpenStack
Hybrid: Using both On-Premise and A Cloud Service Provider
Azure’s Deployment Models
Azure Cost Management
Deployment Models
Cloud Architecture Terminologies
Availability - Your ability to ensure a service remains available Highly Available (HA)
Scalability — Your ability to grow rapidly or unimpeded (निर्विघ्न ,जिसमे रुकावट न हुआ हो )
Elasticity — Your ability to shrink and grow to meet the demand
Fault Tolerance — Your ability to prevent a failure Disaster Recovery - Your ability to recover from a failure Highly Durable (DR)
Scalability
High Scalability
Your ability to increase your capacity based on the increasing demand of traffic, memory and computing power.
Vertical Scaling
Scaling Up : Upgrade to a bigger server
Horizontal Scaling
Scaling Out : Add more servers of the same size
Elasticity
High Elasticity
Your ability to automatically increase or decrease your capacity based on the current demand of traffic, memory and computing power.
Azure VM Scale Sets
Automatically increase or decrease in response to demand or a defined schedule.
SQL Server Stretch Database
Dynamically stretch warm and cold transactional data from Microsoft SQL Server 2016 to Microsoft Azure
Horizontal Scaling
Scaling Out — Add more servers of the same size
Scaling In — Removing more servers of the same size
Vertical Scaling is generally hard for traditional architecture so you’ll usually only see horizontal scaling described with Elasticity.
Highly Fault Tolerant
Your ability for your service to ensure there is no no single point of failure. Preventing the chance of failure
Fail-overs is when you have a plan to shift traffic to a redundant system in case the primary system fails
You can use Azure Traffic Manager Which is a DNS-based traffic balancer To fail-over from a failing primary system to a stand-by secondary system.
A common example is having a copy (secondary) of your database where all ongoing changes are synced. The secondary system is not in-use until a fail over occurs and it becomes the primary database.
High Durability
Your ability to recover from a disaster and to prevent the loss of data. Solutions that recover from a disaster is known as Disaster Recovery (DR)
- Do you have a backup?
- How fast can you restore that backup?
- Does your backup still work?
- How do you ensure current live data is not corrupt?