Cloud Computing
The cloud is essentially the service of providing what composes a server on demand.
What is Cloud Computing?
Cloud Computing is the on-demand availability of computer system resources split into three main categories:
- Compute
- Networking
- Storage
Although the term "the cloud" can often feel abstract, a mystery, or a puffy thing in the sky, it is grounded in a very real infrastructure: a global network of data centers filled with powerful computers that store and process information, accessed over the internet.
The Utility Analogy
Think of the cloud like the electrical grid. A century ago, if you wanted to power a factory, you had to construct and maintain your own generator on-site. Today, you simply plug into the wall. The cloud functions exactly like that, but for computing power instead of electricity.
The main benefits are low cost, ease of adoption, and virtually unlimited resources. It is the combination of computing resources together to provision smaller or larger pieces.
IT Stack (on-premises)
- Data
- Application
- Frameworks and runtime
- Patches and hotfixes
- Operating system
- Hardware
- Power, cooling, internet
- Physical space
The priorities of most businesses are Data and Application. Cloud computing is the delivery of any computing resources from the IT stack as a service, by a Cloud Service Provider.
Virtualization is the foundation for the Cloud
Virtualization is what powers the cloud. The three elementary pieces of a computer system are:
- Processor
- Memory
- Hard disk
Virtualization allows you to create software copies of these elementary pieces. You get a virtual processor, virtual memory, and virtual hard disk. These virtual pieces function identically to the real pieces.
The advantage of these virtual pieces is that you can provision them over the internet. This is what makes the delivery of cloud resources possible for Cloud Service Providers.
Key Characteristics of Cloud Computing
- On-demand Self-service: Users can provision computing resources such as processing power and storage without requiring human interaction with the service provider.
- Broad Network Access: Services are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms.
- Resource Pooling: The provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand.
- Rapid Elasticity: Capabilities can be elastically provisioned and released, in some cases automatically, to scale rapidly outward and inward commensurate with demand.
- Measured Service: Cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service.
Cloud Computing Advantages
- Fault Tolerant
- High Availability
- Scalability
- Elasticity
The main benefit of Cloud Computing is that it operates on a pay-as-you-go pricing model, i.e., you only pay for what you need at any given moment with no up-front cost. It operates on an operational expense model.
Different Cloud Computing Service Models
- Infrastructure as a Service (IaaS): Provides virtualized computing resources over the internet. Users have control over operating systems, storage, and deployed applications, and possibly limited control of select networking components. Ideal for businesses that need a higher degree of control and flexibility.
- Platform as a Service (PaaS): Offers the runtime environment for applications, development and deployment tools. Users manage the applications and services they develop, and the cloud provider manages everything else. Ideal for businesses that want to focus on developing and deploying applications.
- Software as a Service (SaaS): Delivers software applications over the internet, on a subscription basis. Users do not manage or control the underlying cloud infrastructure but may have user-specific application configuration settings. Ideal for businesses that need to access applications quickly and easily.
- Function-as-a-Service (FaaS): A serverless execution model where developers write individual functions that trigger on specific events, paying only for the execution time.
These service models are available on Cloud Service Providers such as Google Cloud, AWS, and Azure.
Cloud Deployment Models
Public Cloud
In a public cloud deployment model, on-demand computing services and infrastructure are managed by a third-party provider (such as Google Cloud) and shared with multiple organizations or tenants via the public internet.
While resources are shared (multi-tenant infrastructure), each tenant's data and applications running in the cloud are isolated and hidden from other tenants.
The Apartment Building Analogy
Think of the public cloud like an apartment building maintained by a property management company. The building has many units and tenants. Each unit might have a slightly different layout, but still has all the amenities a tenant needs. Crucially, each unit is locked and private to the tenant who pays for that space.
- Pros:
- Simple to implement and manage.
- Highly scalable.
- No hardware maintenance or infrastructure costs for the organization.
- Flexible pay-as-you-go pricing model.
- High reliability and uptime SLAs.
- Cons:
- Less control over underlying hardware and features.
- Limited control over security protocols (shared responsibility model).
- High risk of vendor lock-in.
Private Cloud
Private cloud (also known as single-tenant or corporate cloud) is a deployment model where the infrastructure is dedicated to a single organization instead of the general public.
A private cloud can be hosted within an organization’s own private servers (at their own data center), at a third-party colocation facility, or managed by a private cloud provider.
- Maintenance: Typically, an organization must perform the same ongoing physical maintenance, patching, and hardware management for a private cloud as it would for traditional on-premises infrastructure.
- Pros:
- Maximum control over resources and security.
- Ability to deploy customized features and protocols.
- Access to cloud benefits (self-service, scalability, elasticity) with dedicated on-premises hardware.
- Cons:
- High upfront capital expenditure (CapEx) to purchase hardware.
- Requires skilled IT resources for maintenance and upgrades.
- Scalability is limited by fixed physical capacity.
- Use Cases: Organizations might use a private cloud if they have already made significant investments in their own infrastructure, or if regulatory compliance requires data to be kept strictly on-site or hosted in a highly specific, customized way.
Hybrid Cloud
A combination of public and private clouds, allowing data and applications to be shared between them based on specific needs.
- Pros:
- Ultimate flexibility. Low-risk services can use the public cloud, while highly sensitive services can reside on the private cloud.
- Cons:
- Complex to set up and govern.
- Risk of deploying unused resources leading to overspending.
- Data can become siloed if policies aren't properly maintained.
Community Cloud
A shared cloud infrastructure for several organizations with similar needs and compliance requirements (e.g., hospitals, government agencies).
- Pros:
- Reduced costs due to shared infrastructure among the community.
- Increases opportunities for collaboration.
- Cons:
- Complex to coordinate standards and policies among various stakeholders.
- Can be challenging to maintain uniform security aspects.
Comparing On-Premises to Cloud Computing
- Cost Model: On-premises infrastructure requires significant upfront investment (CapEx) in hardware and software. Cloud computing operates on a pay-as-you-go model (OpEx), reducing upfront costs.
- Maintenance and Upgrades: On-premises environments necessitate ongoing manual upgrades and physical maintenance by the organization's IT staff. Cloud providers handle all physical infrastructure maintenance, cooling, and virtualization upgrades.
- Agility and Procurement: To have the computing power to run on-premises workloads, organizations must buy physical servers through procurement processes that can take months. Once configured and deployed, these systems require physical space, a specialized room, cooling, and power. Cloud resources can be provisioned instantly.
- Capacity Management:
- On-Premises: Organizations often over- or underestimate demand when provisioning hardware. Overestimating leads to inefficient utilization and high overhead (computing power sitting idle). Underestimating leads to capacity exhaustion and inability to serve workloads.
- Cloud: Addresses these issues by offering computing resources as highly scalable, on-demand services.
- Accessibility: Cloud services are widely accessible over the internet. On-premises systems may have limitations on remote access due to network bottlenecks or constraints.
- Control and Security: On-premises solutions offer complete physical control over infrastructure and data, avoiding vendor lock-in. Cloud computing involves trusting a third-party provider and adhering to their security models (shared responsibility).
Cloud Computing Roles
- Solutions Architect
- Cloud Engineer
- Cloud Operations Engineer
- Sales Engineer
- DevOps Engineer
- Cloud Support: Assists customers or internal teams with troubleshooting cloud services and outages.
The Language of Cloud Computing
Essential terms that describe the resilience and instant adaptability of Cloud Computing:
- High Availability: In traditional settings, you own the hardware and have physical access but cannot easily add new servers. With Cloud, you don't own the hardware, can easily add more servers with a click, and if hardware fails, you can replace it instantly. High availability depends on a number of virtual machines.
- Reliability
- Scalability
- Predictability
- Security
- Governance
- Manageability