Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

87 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

System Design Course

AWS Python Bash Docker CDK IaC Scalability

🚀 Scalable Systems Design - ITESO

Course materials and demos for Scalable Systems Design.

📚 Course Modules

Hands-on demo demonstrating horizontal scaling with AWS ECS Fargate, Application Load Balancer, and autoscaling. Students learn to:

  • Deploy containerized microservices using AWS CDK (Infrastructure as Code)
  • Configure Application Load Balancers for traffic distribution
  • Implement CPU-based autoscaling policies
  • Monitor and observe scaling behavior with CloudWatch
  • Perform load testing to trigger autoscaling events

Technologies: AWS ECS Fargate, AWS CDK (Python), Application Load Balancer, CloudWatch, Docker, Ruby on Rails (frontend), Node.js, Crystal

Key Concepts: Horizontal scaling, load balancing, autoscaling, containerization, infrastructure as code, observability

Foundational lab teaching Amazon EC2 fundamentals through hands-on exercises. Students learn to:

  • Understand key EC2 components (AMI, instance type, key pair, security group, VPC)
  • Create and manage SSH key pairs for secure access
  • Launch and configure EC2 instances
  • Connect to Linux instances via SSH
  • Navigate the EC2 console and view instance details
  • Manage instance lifecycle (start, stop, terminate)
  • Understand EC2 pricing and Free Tier eligibility

Technologies: AWS EC2, Amazon Linux 2023, SSH, Security Groups

Key Concepts: Virtual servers, SSH authentication, security groups, instance lifecycle, cloud computing basics

Lab exploring load balancing algorithms with HAProxy on AWS EC2. Students learn to:

  • Configure HAProxy as a load balancer
  • Test and compare 6 different load balancing algorithms (Round Robin, Least Connections, Random, Weighted, Source Hash, URI Hash)
  • Implement health checks and automatic failover
  • Monitor load balancer statistics and performance
  • Understand session persistence and content-based routing

Technologies: HAProxy, Python HTTP Server, AWS EC2, Linux

Key Concepts: Load balancing algorithms, health checks, failover, session persistence, high availability

Lab teaching DNS fundamentals through practical exercises. Students learn to:

  • Use dig to query and diagnose DNS records
  • Explore different DNS record types (A, AAAA, CNAME, MX, NS, TXT, PTR)
  • Configure BIND9 as an authoritative DNS server
  • Implement DNS-based load balancing with Round Robin
  • Compare DNS load balancing vs HAProxy load balancing
  • Validate DNS configurations with diagnostic tools

Technologies: BIND9, dig, AWS EC2, Linux

Key Concepts: DNS resolution, DNS record types, authoritative DNS servers, DNS load balancing, Round Robin

Coming soon — content being migrated from AWS Academy.

Lab exploring OAuth 2.0 authentication with Keycloak as an Identity and Access Management solution. Students learn to:

  • Deploy Keycloak on EC2 with SSL/TLS encryption
  • Configure OAuth 2.0 realms, clients, and users
  • Implement JWT token-based authentication
  • Build a Flask API with OAuth 2.0 token validation
  • Understand authentication vs authorization in distributed systems
  • Compare IAM solutions (Keycloak, AWS Cognito, Auth0, Firebase)
  • Test security patterns and token lifecycle management

Technologies: Keycloak, Docker, Python Flask, OAuth 2.0, OpenID Connect, JWT, SSL/TLS, AWS EC2

Key Concepts: OAuth 2.0, OpenID Connect, JWT tokens, token introspection, identity federation, multi-tenancy, distributed authentication, API security

Lab teaching Linux networking fundamentals through a Docker-based troubleshooting scenario, with an optional AWS VPC extension. Students learn to:

  • Inspect network interfaces, IP addresses, and routing tables
  • Diagnose broken network configurations (downed interfaces, missing routes)
  • Fix network issues using ip link and ip route commands
  • Use SSH to access remote systems for troubleshooting
  • (Optional) Create an AWS VPC and compare Linux networking to cloud equivalents

Technologies: Docker, Docker Compose, Linux networking tools (ip, ping, telnet, curl), SSH, AWS VPC

Key Concepts: Network interfaces, routing tables, default gateways, subnets, DNS resolution, network troubleshooting, VPC networking

Lab adapting the AWS General Immersion Day VPC Hands-on Lab into an Infrastructure as Code experience. Students learn to:

  • Deploy a VPC with public subnets and an Internet Gateway using CloudFormation
  • Create security groups and key pairs using the AWS CLI
  • Launch EC2 instances across multiple Availability Zones using Terraform
  • Test cross-AZ connectivity with ping, curl, and SSH
  • Compare declarative IaC (CloudFormation, Terraform) with imperative CLI commands

Technologies: AWS CloudFormation, Terraform, AWS CLI, VPC, EC2, Amazon Linux 2023

Key Concepts: VPC, subnets, Internet Gateway, route tables, security groups, Infrastructure as Code, CloudFormation, Terraform, Availability Zones, cross-AZ communication

10 — Databases (coming soon)

Lab exploring caching as a system design pattern using Redis. Students implement four caching strategies in their choice of C++, C#, or Java and observe eviction policies in action. Students learn to:

  • Implement cache-aside, read-through, write-through, and write-back patterns
  • Configure and observe LRU, LFU, and TTL eviction policies under memory pressure
  • Measure cache hit vs miss performance quantitatively
  • Choose appropriate caching strategies for different system requirements

Technologies: Redis, Docker, Docker Compose, C++ (hiredis), C# (StackExchange.Redis), Java (Jedis)

Key Concepts: cache-aside, read-through, write-through, write-back, LRU eviction, LFU eviction, TTL expiration, cache invalidation, eviction policies

12 — Proxies (coming soon)

15 — Serverless (coming soon)

17 — Containers (coming soon)

👨🏫 Instructor

Mtro. Jorge Alejandro García Martínez

📅 Schedule

  • Days: Wednesday 7:00-9:00 AM, Friday 9:00-11:00 AM
  • Location: T216
  • Frequency: Every semester

👤 Author

Created by Alex Garcia

About

Hands-on labs for Scalable Systems Design (ITE3901) - ITESO

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages