Cloud Computing Fundamentals

Traditional IT Infrastructure

Client–Server Model in Web Applications
Physical Servers and Hardware (HW)

Core Components of a Computer/Server

  1. COMPUTE: responsible for executing instructions and processing data
    • Hardware includes CPU (Central Processing Unit) and GPU (Graphics Processing Unit)
    • GPUs typically deliver higher performance than CPUs but come at a higher cost; they are commonly used for graphics rendering, large-scale data processing, machine learning, and generative AI
  2. MEMORY: temporarily holds data that is actively being used or accessed frequently, enabling fast retrieval
    • Data stored here is temporary (volatile) and can be lost or overwritten (e.g., during restarts or when running new programs)
    • Hardware component: RAM (Random Access Memory)
  3. STORAGE: retains data persistently, although access speeds are slower compared to memory
    • Hardware includes SSD (Solid State Drive) and HDD (Hard Disk Drive)
    • Data can be organized in different formats such as block, object, or file storage
    • Databases (DBs): add structure and logic to stored data, making it easier to search, retrieve, and process compared to basic storage
  4. NETWORK (NW): enables communication between systems by sending and receiving data
    • Hardware includes cables, Network Interface Cards (NICs), routers (Layer 3), switches (Layer 2), and DNS servers
    • Data transmission may pass through multiple devices to reach its destination accurately

Challenges of On-Premises Physical Servers

What is Cloud Computing?

Cloud Computing

Five Key Characteristics of a Cloud Platform

On-Demand Self-Service

Broad Network Access

Resource Pooling

Rapid Elasticity

Measured Service

Six Advantages of Cloud Computing (AWS Whitepaper)
  1. Shift from capital expenses (CAPEX) to operational expenses (OPEX)
    • Reduces overall ownership and operational costs
    • No need to purchase or maintain physical hardware
  2. Leverage large-scale economies
    • Cloud providers can lower prices due to operating at massive scale
  3. Eliminate capacity guesswork
    • Resources can be adjusted based on actual usage, reducing idle capacity
  4. Improve speed and agility
    • Infrastructure can be deployed or removed quickly compared to traditional setups
    • Enables faster experimentation and development
  5. Reduce data center management
    • Less need to handle infrastructure maintenance, allowing focus on core business activities
  6. Deploy globally with ease
    • Applications can be launched in multiple regions within minutes
    • Global infrastructure helps reduce latency and enhance user experience

Public vs Private vs Multi vs Hybrid Cloud

Types of Cloud Computing

Public Cloud

Multi-Cloud

Private Cloud

Hybrid Cloud

Summary Diagram: Types of Cloud Computing

Cloud Service Models (XaaS)

Infrastructure Stack (or Application Stack)
Common Cloud Service Models

IaaS (Infrastructure-as-a-Service)

PaaS (Platform-as-a-Service)

SaaS (Software-as-a-Service)

Other Cloud Service Models

Key Concept Diagram

AWS Accounts

What is AWS?

Amazon Web Services (AWS)
AWS Cloud Use Cases
AWS Cloud Pricing Model

AWS Shared Responsibility Model & AWS Acceptable Use Policy

AWS Shared Responsibility Model for Security
AWS Acceptable Use Policy (AUP)

AWS Accounts – The Basics

AWS Account – Key Concepts
Free vs Paid AWS Accounts
Demo: Creating an AWS Account

◦ Without this, IAM identities cannot see billing information

MFA (Multi-Factor Authentication)

Why MFA is Important
MFA in AWS
Demo: Enabling MFA in an AWS Account

Creating a Budget

AWS Free Tier
Creating a Cost Budget

AWS IAM 101

Identity and Access Management (IAM) Service
Account Root User
IAM Identities and Policies
Demo: Creating an IAM Admin User in an AWS Account
Image Sources

Accessing AWS Accounts

3 Ways to Access AWS Accounts, Services, and Resources
  1. AWS Management Console UI
  2. AWS CLI (Command Line Interface)
  3. AWS SDK (Software Development Kit)

AWS Management Console (Commonly called: AWS Console UI)

AWS CLI (Command Line Interface)

AWS SDK (Software Development Kit)

AWS CloudShell

IAM Access Keys

Long-Term and Short-Term Credentials
IAM Access Keys
Demo: Creating Access Keys and Configuring AWS CLI v2

AWS Fundamentals

AWS Public vs Private Services

AWS Networking Ecosystem

1. AWS Private Zone

2. AWS Public Zone

3. Public Internet

Key Clarification

Summary Diagram

High-Availability (HA), Fault Tolerance (FT) & Disaster Recovery (DR)

High Availability (HA)

HA Summary Diagram

Fault Tolerance (FT)

FT Summary Diagram

Disaster Recovery (DR)

DR Summary Diagram

AWS Global Infrastructure

AWS Global Network
AWS Infrastructure Groupings

AWS Region

AWS Availability Zone (AZ)

AWS Edge Location (Point of Presence / PoP)

Resilience of an AWS Service
  1. Global resilience
    • A global service operates as a single system with a centralized data layer
      • Data is replicated across multiple regions
      • The service can continue functioning even if an entire region fails
    • Examples include IAM and Route 53
  2. Regional resilience
    • A regional service runs within a specific region, using a database located in that region
      • Data is replicated across all AZs within the region
      • Can tolerate failure of a single AZ
      • If the entire region fails, the service becomes unavailable in that region
    • Examples include VPC and S3
      • S3 bucket names are globally unique, but the data resides within a region
  3. Availability Zone (AZ) resilience
    • The service operates within a single AZ
      • More vulnerable to failure compared to regional or global services
      • However, architectures can still achieve high availability by distributing workloads across AZs
    • Hardware-level failures may occur without taking down the entire AZ
    • Examples include EC2 and RDS

Amazon S3 (Simple Storage Service) 101

Amazon S3 – Core Concepts
S3 Objects
S3 Bucket

Example: /images/badges.jpg appears under /images/, but /images/ is not a folder, just a prefix used to filter/display objects

Amazon VPC (Virtual Private Cloud) 101

Amazon VPC – Core Concepts
Default VPC

Default VPC – Reference Diagram:

Amazon EC2 (Elastic Compute Cloud) 101

Amazon EC2 – Core Concepts
EC2 Instances

EC2 Instance State

Connecting to EC2 Instances via SSH

Connecting to Older Windows Instances via RDP

Amazon Machine Image (AMI)

Amazon CloudWatch (CW) 101

Amazon CloudWatch – Components and Architecture
Amazon CloudWatch – Key Concepts

AWS CloudFormation (CFN) 101

IaC Basics and AWS CloudFormation
CFN Templates – Structure and Components

Example templates in YAML/JSON:

Example:

Example:

Example:

Example:

Example:

CFN Stacks
Syncing Logical and Physical Resources

AWS Lambda 101

AWS Lambda – Key Concepts
AWS Lambda – Architecture
AWS Lambda – Common Use Cases
Demo: Create and Test a Lambda Function
  1. Deploy the CloudFormation stack provided in the demo, which creates two EC2 instances
  2. Create an execution role:
    • Either in IAM or during Lambda creation.
    • Example JSON policy (allow Lambda to start/stop EC2 instances and log to CloudWatch):
    {
    “Version”: “2012-10-17”,
    “Statement”: [
    {
    “Effect”: “Allow”,
    “Action”: [
    “logs:CreateLogGroup”,
    “logs:CreateLogStream”,
    “logs:PutLogEvents”
    ],
    “Resource”: “arn:aws:logs:*:*:*”
    },
    {
    “Effect”: “Allow”,
    “Action”: [
    “ec2:Start*”,
    “ec2:Stop*”
    ],
    “Resource”: “*”
    }
    ]
    }

3. Go to Services → Lambda → Create Function
A. Enter a function name and select a runtime (Python 3.9 in demo)

B. Assign the execution role created earlier

  1. Once the function is created, add the code to stop EC2 instances:

A. Stop EC2 instances Python script

import boto3
import os
import jsonregion = 'us-east-1'
ec2 = boto3.client('ec2', region_name=region)def lambda_handler(event, context):
instances = os.environ['EC2_INSTANCES'].split(",")
ec2.stop_instances(InstanceIds=instances)
print('stopped instances: ' + str(instances))

B. Paste the code into the Lambda function editor

  1. Set Environment Variables
    • Go to Configurations → Environment variables.
    • Add a variable named EC2_INSTANCES with the EC2 instance IDs, separated by commas (no spaces).
  2. Test the function
    • Click Test (no event input needed).
    • After execution, check the EC2 console to confirm the instances were stopped.
  3. Create another function to start EC2 instances in a similar way:

A. Start EC2 instances Python script

import boto3
import os
import jsonregion = 'us-east-1'
ec2 = boto3.client('ec2', region_name=region)def lambda_handler(event, context):
instances = os.environ['EC2_INSTANCES'].split(",")
ec2.start_instances(InstanceIds=instances)
print('started instances: ' + str(instances))

B. Test the function and verify in the EC2 console that the instances were started.

  1. Clean-up
    • Delete the Lambda functions created.
    • Delete the CloudFormation stack used for the demo.

Amazon R53 (Route 53) 101

Amazon Route 53 – Key Concepts
Registered Domains
Hosted Zones