Cloud Computing
Computing, and other things, as a service.
Unit Goals
To be able to define cloud computing, understand its key concepts, and become familiar with the type of services that can be provided.
What is it?
Cloud computing refers to large scale computing, storage, and similar services being available on demand from hardware in remote locations shared by many customers. The cloud provider may, and often does, actively manage and scale these services for its users.
Here is a definition from the Overview of Amazon Web Services:
Cloud computing is the on-demand delivery of compute power, database storage, applications, and other IT resources through a cloud services platform via the Internet with pay-as-you-go pricing. ... With cloud computing, you don’t need to make large upfront investments in hardware and spend a lot of time on the heavy lifting of managing that hardware. Instead, you can provision exactly the right type and size of computing resources you need...and only pay for what you use.
A Useful AnalogyPeople used to own their own fossil fuel-burning generators to make electricity just for their own homes. Now electricity is obtained from utilities that generate it themselves and make it available to everyone “on the grid.”
Cloud computing is NOT, though is somewhat related to:
- A time-sharing system with a mainframe, since that’s held within an organization;
- Client-server, which is just an application model, though it feels like servers are a kind of cloud; or
- Grid computing, which refers to clusters of computers working together to perform high-powered tasks.
Key Concepts
Here are some useful terms, together with their definitions from the NIST Glossary:
- Virtualization: The use of an abstraction layer to simulate computing hardware so that multiple operating systems can run on a single computer.
- Elasticity: Ability to provision and release capabilities, in some cases automatically, to scale rapidly outward and inward commensurate with demand. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be appropriated in any quantity at any time.
- Monitoring: Continual checking, supervising, critically observing or determining the status in order to identify change from the performance level required or expected.
There’s a new term that is not even in the NIST Glossary yet:
- Serverless: Executing functions on the cloud, with no knowledge whatsoever of what machine is running it.
Cloud Services
Here are some things that can be provided on the cloud:
- Compute Services
- Virtual Machines, Containers, Cloud Functions (serverless)
- Storage Services
- Block storage, Networked file systems, Object Storage, Databases, Warehouses, Archival Storage
- Network Services
- API Gateways, Load Balancers, CDNs, VPCs, DNS configuration
- Security Services
- For managing users and their identities (authentication), groups, roles, and permissions (authorization), security groups, firewalls, etc.
- Analytics
- Search engines, Pipelines, Business Intelligence Tools
“As A Service”
Acronym Time! Definitions copied verbatim from NIST:
- Infrastructure As A Service (IaaS)
- The capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, and deployed applications; and possibly limited control of select networking components (e.g., host firewalls).
- Platform As A Service (PaaS)
- The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages, libraries, services, and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly configuration settings for the application-hosting environment.
- Software As A Service (SaaS)
- The capability provided to the consumer is to use the provider’s applications running on a cloud infrastructure. The applications are accessible from various client devices through either a thin client interface, such as a web browser (e.g., web-based email), or a program interface. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.
More concisely
Model | What the Customer Does | Examples
|
---|
IaaS |
The provider gives you virtual machines, load balancers, servers, storage systems, firewalls. You wire these things up as if they were your own devices, including installing whatever you want on your virtual machines. You write all the code. |
Digital Ocean, Rackspace, basic AWS services |
PaaS |
The provider gives you a software framework (e.g., a stack for a web app or mobile app) and some storage. You write the business logic. |
Google App Engine, AWS Elastic Beanstalk |
SaaS |
The provider writes the application. You just use it. |
Google Apps, Dropbox, Office 365 |
“As a service” features in jokes and memes.
Cloud Providers
The big players are
Pros and Cons
Upsides:
- Low cost of entry: For a few bucks a month, you can have a computer and tons of storage. No upfront costs in purchasing high-performance hardware, servers, and storage.
- No need to guess capacity: You won’t have to waste money overprovisioning or lose business by underprovisioning. Scaling up and down happens on the order of minutes.
- Economy of scale: The cloud provider can serve thousands of simultaneous customers far more cheaply than each customer can serve its own needs. The provider will pass along the savings to the customers.
- One stop shopping: Providers have hundreds of services a couple clicks away. No need to buy licenses or install dozens or hundreds of software solutions and install and configure them. The cost to install and configure software is mostly human labor and can be massively expensive.
- Reliability: Some of the big providers duplicate your data over multiple regions and multiple availability zones, and manage backups and fail-overs, and respond quickly to minor problems so you don’t have to.
- Keeps the focus on your business, and not on the server infrastructure, the daily backups, etc.
- Global reach: Let the cloud provider duplicate resources to data centers around the world, so your customers 12,000 miles away have a good user experience.
A few downsides:
- Privacy and Security: Your data shares storage with other organizations. Software bugs could leak data to others. You also need to trust that the cloud provider has run background checks on its employees.
- Less flexibility: Your choices in deployment, configuration, and anything else might be limited. Going up to the next tier might be too expensive.
- Provider Outages: If the cloud provider is down, so is your business. They might not be able to respond as quickly.
Summary
We’ve covered:
- A definition of cloud computing
- The key concepts of cloud computing
- Cloud services
- Advantages and disadvantages