Skip to content

gamaware/system-design-course

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 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

09 — Databases (coming soon)

11 — Proxies (coming soon)

14 — Serverless (coming soon)

16 — 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

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors