Unit 1 - Notes
INT363
Unit 1: Cloud Computing Fundamentals
1. Cloud Fundamentals
Definition
Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.
The NIST Model: Five Essential Characteristics
- On-demand Self-service: A consumer can provision computing capabilities, such as server time and network storage, automatically without requiring human interaction with each service provider.
- Broad Network Access: Capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, tablets, laptops, and workstations).
- 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. Location independence is a key aspect; the customer generally has no control or knowledge over the exact location of the provided resources.
- Rapid Elasticity: Capabilities can be elastically provisioned and released, in some cases automatically, to scale rapidly outward and inward commensurate with demand. To the consumer, the capabilities often appear to be unlimited.
- 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 (e.g., storage, processing, bandwidth, and active user accounts).
2. Cloud Service Models (SPI Model)
The "SPI" model defines the layers of abstraction offered to the cloud user.
1. Software as a Service (SaaS)
- Definition: The capability provided to the consumer is to use the provider’s applications running on a cloud infrastructure.
- Management: The consumer does not manage or control the underlying cloud infrastructure including network, servers, OS, or storage.
- Examples: Google Workspace, Salesforce, Microsoft 365, Dropbox.
- Target Audience: End-users.
2. Platform as a Service (PaaS)
- Definition: 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.
- Management: The consumer has control over the deployed applications and possibly configuration settings for the application-hosting environment but does not control the underlying infrastructure (OS, hardware).
- Examples: AWS Elastic Beanstalk, Google App Engine, Heroku, Microsoft Azure App Service.
- Target Audience: Developers.
3. Infrastructure as a Service (IaaS)
- Definition: 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.
- Management: 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).
- Examples: Amazon EC2, Google Compute Engine, Azure Virtual Machines.
- Target Audience: Network Architects, System Administrators.
3. Deployment Models
1. Public Cloud
- Description: The infrastructure is provisioned for open use by the general public. It may be owned, managed, and operated by a business, academic, or government organization. It exists on the premises of the cloud provider.
- Pros: Cost-effective (Pay-as-you-go), high scalability, no maintenance.
- Cons: Less security, lack of customization.
2. Private Cloud
- Description: The infrastructure is provisioned for exclusive use by a single organization comprising multiple consumers (e.g., business units). It may be owned, managed, and operated by the organization, a third party, or some combination of them, and it may exist on or off premises.
- Pros: High security, control, and privacy.
- Cons: High initial cost (CapEx), maintenance responsibility.
3. Hybrid Cloud
- Description: The infrastructure is a composition of two or more distinct cloud infrastructures (private, community, or public) that remain unique entities, but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load balancing).
- Pros: Flexibility, security for sensitive data while utilizing public cloud for non-sensitive heavy workloads.
- Cons: Complex network configuration and management.
4. Community Cloud
- Description: The infrastructure is provisioned for exclusive use by a specific community of consumers from organizations that have shared concerns (e.g., mission, security requirements, policy, and compliance considerations).
- Pros: Cost-sharing among organizations, tailored to specific industry needs.
4. Guiding Principles with Respect to Utilization
Cloud computing economics and efficiency rely on maximizing hardware utilization. The following principles guide this optimization:
Virtualization
- The fundamental enabler of cloud computing. It allows the creation of a software-based (virtual) representation of applications, servers, storage, and networks.
- Hypervisor: The software layer that separates the virtual machines from the host hardware (e.g., VMware ESXi, KVM, Xen).
- Utilization Benefit: Allows multiple OS instances to run on a single physical server, reducing idle hardware time.
Multi-Tenancy
- A single instance of the software and its supporting infrastructure serves multiple customers.
- Resource Sharing: Different customers share the same computing resources (CPU, Memory), ensuring the hardware is constantly utilized even if one customer is idle.
Elasticity and Scalability
- Vertical Scaling (Scale Up): Adding resources to a single node (more RAM/CPU).
- Horizontal Scaling (Scale Out): Adding more nodes to a system (more servers). Cloud prefers horizontal scaling.
- Utilization: Resources are added only when needed and removed when load decreases, preventing over-provisioning (waste).
Load Balancing
- Distributing network traffic across multiple servers. This ensures no single server is overwhelmed while others are underutilized, maximizing the aggregate throughput of the fleet.
5. Service-Oriented Architecture (SOA)
SOA is an architectural style that supports service-orientation. It is the precursor to microservices and is fundamental to understanding cloud application design.
Core Concepts
- Service: A discrete unit of functionality that can be accessed remotely and acted upon and updated independently, such as retrieving a credit card statement.
- Loose Coupling: Services are connected with the minimum amount of dependencies. A change in one service should not break another.
- Interoperability: Services communicate via standard protocols (SOAP, REST, HTTP) regardless of the underlying language (Java, .NET, Python).
- ESB (Enterprise Service Bus): In traditional SOA, an ESB acts as a centralized communication backbone that handles message routing, translation, and orchestration.
SOA vs. Cloud Microservices
While SOA focuses on enterprise-wide integration (often using heavy protocols like SOAP), Cloud Microservices are a specialization of SOA that focuses on:
- Fine Granularity: Smaller, single-purpose services.
- Decentralization: No centralized ESB; "dumb pipes, smart endpoints."
- Cloud Native: Designed for failure, elasticity, and automation.
6. Applications of Cloud Computing
- Big Data Analytics: Processing massive datasets using clusters (e.g., Hadoop, Spark) which are expensive to maintain on-premise.
- Disaster Recovery (DR) and Backup: Replicating data to a cloud region geographically distant from the primary site.
- Software Testing and Development: Instantly spinning up and tearing down test environments to simulate different OS/Browser configurations.
- Internet of Things (IoT): Ingesting and processing data streams from millions of sensors (Edge computing).
- E-commerce: Handling traffic spikes during sales (elasticity) without purchasing hardware for peak load year-round.
- File Storage and Sharing: Dropbox, Google Drive.
7. Design and Implementation of Public and Private Cloud Environments
Designing cloud environments requires addressing specific architectural layers.
Designing a Private Cloud
To build a private cloud (e.g., in an on-premise data center), the following stack must be implemented:
- Physical Layer: Servers, Storage Arrays (SAN/NAS), Network Switches.
- Virtualization Layer: Hypervisors (KVM, vSphere) to abstract hardware.
- Cloud Management Layer (Orchestration): Software that manages the hypervisors. It handles:
- Self-Service Portal: UI for users to request VMs.
- Service Catalog: Menu of available configurations.
- Automation Engine: Scripts to provision resources.
- Billing/Metering: Internal chargeback mechanisms.
- Security Layer: Firewalls, Identity and Access Management (IAM), VLANs.
Designing a Public Cloud
Public cloud providers design for massive scale and multi-tenancy.
- Isolation: Strict logic to prevent one tenant from accessing another's memory or storage (Hypervisor isolation).
- API First: Every function must be accessible via API for programmatic control.
- Regional Design: Data centers are grouped into "Regions" and "Availability Zones" to ensure high availability.
- Metering: Complex systems to track usage by the second or millisecond for billing.
8. Case Studies: OpenStack and AWS
OpenStack (The Standard for Private Cloud)
OpenStack is an open-source platform for cloud computing, mostly deployed as Infrastructure-as-a-Service (IaaS). It consists of interrelated components that control hardware pools of processing, storage, and networking resources throughout a data center.
Key Components:
- Nova (Compute): Manages the lifecycle of compute instances (spawning, scheduling, decommissioning VMs).
- Neutron (Networking): Provides "Network Connectivity as a Service." Manages IP addresses, VLANs, and load balancers.
- Swift (Object Storage): Stores and retrieves unstructured data objects via HTTP (similar to AWS S3).
- Cinder (Block Storage): Provides persistent block storage to running instances (similar to a hard drive).
- Keystone (Identity): Provides authentication and authorization for all OpenStack services.
- Horizon (Dashboard): The web-based user interface for administrators and users.
Amazon Web Services - AWS (The Standard for Public Cloud)
AWS is the world's most comprehensive and broadly adopted cloud platform. It offers over 200 fully featured services from data centers globally.
Key Architecture Concepts:
- Regions: Geographic locations (e.g., US-East-1, EU-West-2).
- Availability Zones (AZs): Discrete data centers within a Region, designed with redundant power, networking, and connectivity.
Core Services:
- Compute:
- EC2 (Elastic Compute Cloud): Resizable virtual servers.
- Lambda: Serverless compute (run code without provisioning servers).
- Storage:
- S3 (Simple Storage Service): Object storage with high durability (99.999999999%).
- EBS (Elastic Block Store): Block storage for use with EC2.
- Database:
- RDS (Relational Database Service): Managed SQL engines (MySQL, PostgreSQL, Oracle).
- DynamoDB: Managed NoSQL database.
- Networking:
- VPC (Virtual Private Cloud): Logically isolated section of the AWS cloud where you launch resources in a virtual network you define.
Comparison Summary
| Feature | OpenStack | AWS |
|---|---|---|
| Type | Open Source Software (mostly Private Cloud) | Public Cloud Provider (Proprietary) |
| Management | You manage the hardware and the cloud software. | AWS manages hardware; you manage your resources. |
| Cost | No license fee, but high operational/hardware cost. | Pay-as-you-go; OpEx model. |
| Customization | Highly customizable source code. | Limited to what AWS offers via API/Config. |