This lesson is from Intro to Cloud Computing
- Earlier or in some cases now also, resources such as compute power and data storage were owned and maintained by individual companies in an on-premise data centers.
- In contrast, today’s cloud computing services are hosted and managed, which means that the cloud provider is responsible for running and maintaining the hardware and services.
- In the cloud, you only pay for what you use. This can be a lot more cost-effective than buying your own equipment.
- mobile apps store data in the cloud
- websites run in the cloud
- larger organizations extend IT services through the cloud
- video streaming platform like Netflix, Hulu, and YouTube
- online video gaming
- software engineers build shared development environments in the cloud.
- Benefits of Cloud Computing
- The cloud is agile.
- Infrastructure resources can spin up when necessary.
- Among these resources are compute, storage, databases, Internet of things (IoT), machine learning, analytics, and more.
- The cloud is agile.
- The cloud has the ability to handle peak levels of business activity automatically and on-demand, by scaling resources up or down to shrink or grow capacity when the business needs change.
- Because cloud computing removes the traditional costs of owning and maintaining hardware, and payment is only for usage, the cost savings are very large.
- On top of that cloud computing providers offer steep discounts for some resources, such as compute, if the workflow on them can be interrupted.
- This even further increases the cost-savings of running in the cloud.
- Cloud computing providers offer their services in many locations within a geographical region, and in many locations around the globe.
- This extends the availability and durability of cloud services.
- Cloud History
- In the early days of the Internet, before Cloud computing even existed, datacenter rented physical servers for hosting websites.
- Websites shared one server where each website got a virtual web server that was hosted from a folder on the server’s disk.
- They could not install anything on that server. In the early 2000s, web hosting evolved and became more dynamic.
- Hosting provider shifted towards virtualization so that one physical machine could run multiple virtual server, one per customer.
- Each customer would then install an operating system and configure a virtual server from scratch.
- This improved server traffic capacity and cost but introduced challenges in resiliency as well as security issues.
- The word Cloud was used as a metaphor to represent the Internet, dates all the way back to 1977 when this term was used in telephony network schematics.
- The vague idea of networks as Clouds persisted for many decades. Although the notion of Cloud computing only really took off with the launch of Amazon Web Services in the mid 2000s.
- Years before AWS, Amazon started as a company selling books through their Amazon.com website.
- Over many years, they expanded to sell a wide variety of items.
- Eventually, the computing infrastructure necessary to support Amazon.com grew so large that Amazon envisioned renting their excess capacity to other companies.
- In 2006, Amazon commercialized these ID as Amazon Web Services and released this service called Elastic Cloud Compute, known as EC2, E for Elastic, and two Cs for Cloud Compute.
- They also released a Cloud file storage known as Simple Storage Service or S3.
- In the years since 2006, other Cloud providers have emerged in addition to AWS, and many new types of services are now offered in the Cloud.
- These growing array of Cloud services minimize the need for businesses to purchase and manage their own computational infrastructure.
- Finance is interested in the cost of running applications and services in the cloud.
- Engineering is interested in how to build apps or platform in the cloud.
- IT is interested in centralizing, extending, and backing up on-premise data.
- DevOps, which is developer operations, is interested in improving uptime, responsiveness, and efficiency.
- Marketing and product managers are interested in the analytics capabilities of the cloud.
- You can probably imagine that even a larger group of colleagues who might also have stakes in the cloud.
Types of Cloud Computing
- There are three different types of cloud computing:
- infrastructure as a service
- platform as a service, and
- software as a service
Infrastructure as a service (IaaS)
- is fully self-service computational hardware including compute, networking, storage, and other services.
- With infrastructure as a service, you can rent on-demand resources as needed instead of having to buy the hardware upfront.
- The characteristics of infrastructure as a service are,
- resources can be accessed through a service,
- costs vary based on usage,
- services are highly scalable,
- multiple users on a single piece of hardware.
- Organizations have complete control of the infrastructure which is dynamic and flexible.
Platform as a service (PaaS)
- is a type of cloud computing framework that developers can build, run, and manage custom cloud applications, we found the complexity of maintaining a typical cloud infrastructure.
- This model allows developers to focus on creating and managing their application without having to worry about configuring the role servers and networking.
- Platform as a service builds on virtualization technology so resources can easily be scaled up or down when needed.
- This approach provides a variety of services to assist with the development, testing, and deployment of apps.
- Another benefit is that the underlying platform is accessed via application development code, which makes deploying new application with a click of a button and allow multiple environments such as Dev, staging, and production to run side-by-side.
- This framework typically integrates web services and database which can dramatically simplify development.
- PaaS Characteristics
- Builds on virtualization technology, so resources can easily be scaled up or down
- Provides a variety of services to assist with the development, testing, and deployment of apps
- Accessible to numerous users via the same development application
- Integrates web services and databases
Software as a service (SaaS)
- is a type of Cloud deployment through which third-party vendors deliver applications that run within a web browser and do not require any installation.
- Applications like Google Docs, Slides, and Sheets are SaaS solutions.
- The service is typically maintained by the vendor, so users don’t have to manage anything themselves.
- The vendor also hosts the service, so there are no servers or software to install.
- New features and bug fixes are edit constantly.
- The service is usually accessible via a web browser, some services even offer an offline functionality.
- User need only focus on utilizing the service to achieve their goals, they don’t have to worry about the actual hardware or software.
- SaaS characteristics:
- Managed from a central location
- Hosted on a remote server
- Accessible in a browser (sometimes even when the user is offline)
- Users are not responsible for hardware or software updates
Cloud Deployment Models
- most common deployment model.
- Services face the Internet and share hardware, network, and storage across many organizations and tenants.
- Pay-as-you-go - only pay for resources you use
- Maintenance-free - the cloud provider is responsible
- The Private Deployment model limits each deployment to a single organization.
- This model provides better control of network security.
- Resources are not shared between organizations and tenants, which reduces risk.
- The private cloud can be an on-premise or it can be hosted by a cloud provider.
- Even if the deployment is hosted by a cloud provider, all of the hardware and software is dedicated to one organization.
- The Private Deployment model is often used by governments, financial institutions, or organizations that must comply with strict regulatory protocols
- Supports highly customized networks
- Facilitates tighter security and privacy
- Provides greater control over infrastructure
- The Hybrid Deployment model is a mix of the Public and Private Deployment models, combining the benefits of both.
- This model offers the flexibility of running on private infrastructure, but the model can switch to the public cloud when permissible, to realize the benefits such as cost-savings.
- In Hybrid Deployment data can flow from the private cloud to the public cloud and vice versa.
- The downside of a hybrid deployment model is the cost of configuring and maintaining services across both types of clouds.
Major Cloud Providers
- Amazon Web Services (AWS)
- Google Cloud Platform (GCP)
- Microsoft Azure
- At a high level, these providers are similar. However, there are many factors that distinguish them from each other, including:
- Geographic Availability
- Market Share and Growth Rate
- Pricing Model
- Cloud computing locations are worldwide. These locations called “regions” and “availability zones.”
- Each region is a separate geographic area. Within each region, there are multiple isolated locations known as availability zones.
- This geographic spread provides the ability to place resources, such as compute and storage, closer to end-users for faster access and better performance.
- The number of regions and the availability zones within them differs between cloud providers.
- AWS has 18 regions and between 2-6 availability zones per region
- GCP has 23 regions with at least 3 availability zones per region
- Azure has 58 regions worldwide and is available in 140 countries all around the world
- The geographic locations between each cloud providers are different.
- One example is that currently the only cloud provider that can work in mainland China is AWS GCP offers a region in Hong Kong, but those resources are not always accessible from mainland China.
- And there are other key factors such as submarine networking between geographic locations.
Market Share And Growth Rate
- AWS has been around since 2006 and is currently the leading cloud provider, with 33% market share
- Microsoft Azure holds about 17% worldwide market share
- Google has about 6% percent of the market worldwide
While this doesn’t add up to 100%, remember that there are many other cloud providers that, in aggregate, make up the entire cloud computing market.
- AWS offers 200+ services, ranging from computing, storage, and databases through machine learning and artificial intelligence (AI) to Internet of Things (IoT), analytics, and more
- GCP offers about 50+ services, similar to AWS
- Azure offers about 30+ services, with a focus on integration with other Microsoft tools
The pricing models of the major cloud provides are similar:
- On-demand, pay-as-you-go
- Discounts for committed usage
- Usage-based serverless resources
On-demand pricing for the same compute (CPU-RAM-Disk) resources varies between cloud providers and is calculated on an hourly rate.
Discounts also vary between cloud providers. For example, AWS offers reserved instances that you can pre-purchase annually, whereas GCP offers “sustained use discount” whereby pricing goes down the more you use an instance.
Serverless computing (Lambda on AWS, Functions on Azure, and Cloud Functions on GCP) are billed for the compute power you use, based on 100-millisecond increments.
Costs in the Cloud
- AWS Pricing Calculator
EC2 for compute
- Create Estimate
- Service: EC2
- Region: US West (Oregon)
- Quick Estimate
- Search instances by name: t2.medium
- Pricing strategy: On-Demand instances
- Elastic Block Storage (EBS), disk connected to the instance
- Storage Amount: 250GB
- USD 58.87
- Save Estimate
- Create Estimate
- S3 for cloud storage
- Click Add Service
- Search S3
- Configure Amazon Simple Storage Service (S3)
- Region: US West (Oregon)
- Select: S3 Standard and Data Transfer
- S3 Standard storage: 200 GB Per month
- PUT, COPY, POST, LIST requests to S3 Standard: 200,000
- Add to Estimate
- Total 12 months cost: 773.64 USD
When Not to Use The Cloud
Csts of running in the cloud may surpass the costs of running and maintaining a set of servers
- One example is GPU machine learning.
- While the cloud can provide cost optimization for GPU instances via spot instance discounts, often the cost of running a set of cloud GPU instances would be much higher than the cost to buy and maintain your own set of GPU servers.
- Other examples include the Private deployment model, which might be on-premise for security or regulatory reasons.
- Even though the cloud has many managed services, cloud applications still require an experienced engineer with security, networking, and cloud skills to maintain the application.
- If an organization lacks such a person, the cloud might not be a good option.
Cloud Computing Fundamentals
Virtualization and characteristics
- allows cloud providers to share compute, storage, and networking across cloud users
- This is the heart of cloud computing
- Managed services
- are operated and maintained by the cloud provider on your behalf
- On-Demand Services
- are available to use and release instantly;
- only pay for what you use
- Virtual Private Clouds
- allows network customization with grater security and isolation
- Scalability & Elasticity
- refer to the ability of your cloud resources to grow or shrink on-demand
- includes both network security and access management
- Managed services
- Many virtual machines can run on a single host os
- You can run a VM either on your own local computer or in the cloud
- Virtual machines running on the same host are isolated from each other
- Each VM requires an entire operating system (Linux, Windows, etc.)
- Host Machine
- Host runs a program called hypervisor, which manages multiple virtual machines
- Each of CM can run its own applications
When Not To Use A VM
- Remember that a VM acquires resources from the host computer.
- An idling or underutilized VM, which does not need its full computing power, drains resources the host could use for other tasks or share with other VMS.
- In the case of underutilization, a container or serverless function might be a better choice.
- On the other end of the spectrum, a VM might need more resources than the host can provide.
- In this case, a dedicated server might be a better choice.