Luca Sacchi Ricciardi 23a9ffe443 feat(lab-03): complete Phase 4 - Compute & EC2 lab
Phase Plans (5 files):
- 04-RESEARCH.md: Domain research on Docker limits, healthchecks, EC2 parallels
- 04-VALIDATION.md: Success criteria and validation strategy
- 04-01-PLAN.md: Test infrastructure (RED phase)
- 04-02-PLAN.md: Diátxis documentation
- 04-03-PLAN.md: Infrastructure implementation (GREEN phase)

Test Scripts (6 files, 1300+ lines):
- 01-resource-limits-test.sh: Validate INF-03 compliance
- 02-healthcheck-test.sh: Validate healthcheck configuration
- 03-enforcement-test.sh: Verify resource limits with docker stats
- 04-verify-infrastructure.sh: Infrastructure verification
- 99-final-verification.sh: End-to-end student verification
- run-all-tests.sh: Test orchestration with fail-fast
- quick-test.sh: Fast validation (<30s)

Documentation (11 files, 2500+ lines):
Tutorials (3):
- 01-set-resource-limits.md: EC2 instance types, Docker limits syntax
- 02-implement-healthchecks.md: ELB health check parallels
- 03-dependencies-with-health.md: depends_on with service_healthy

How-to Guides (4):
- check-resource-usage.md: docker stats monitoring
- test-limits-enforcement.md: Stress testing CPU/memory
- custom-healthcheck.md: HTTP, TCP, database healthchecks
- instance-type-mapping.md: Docker limits → EC2 mapping

Reference (3):
- compose-resources-syntax.md: Complete deploy.resources reference
- healthcheck-syntax.md: All healthcheck parameters
- ec2-instance-mapping.md: Instance type mapping table

Explanation (1):
- compute-ec2-parallels.md: Container=EC2, Limits=Instance Type, Healthcheck=ELB

Infrastructure:
- docker-compose.yml: 5 services (web, app, worker, db, stress-test)
  All services: INF-03 compliant (cpus + memory limits)
  All services: healthcheck configured
  EC2 parallels: t2.nano, t2.micro, t2.small, t2.medium, m5.large
- Dockerfile: Alpine 3.19 + stress tools + non-root user

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-03 15:16:58 +02:00

Laboratori Cloud - Corso Soluzioni Cloud

Simulazione pratica di servizi cloud usando Docker locale.

Questo corso ti insegna i concetti fondamentali del cloud (IAM, Network, Compute, Storage, Database) attraverso laboratori pratici che usano Docker per simulare servizi AWS/Azure/GCP.

Perché questo corso?

I servizi cloud sono potenti, ma imparare su account reali può essere costoso e intimidatorio. Questo corso usa Docker per simulare i componenti core della cloud infrastructure direttamente sul tuo computer. Ogni laboratorio costruisce un parallelismo diretto tra i container locali e i servizi cloud reali.

Prerequisiti

Prima di iniziare, assicurati di avere:

  • Docker Engine >= 24.0 installato
  • Docker Compose V2 (comando docker compose, non docker-compose)
  • Utility di rete: netcat, curl, iproute2

Risorse Minime Consigliate

  • RAM: 16 GB (funziona con 8 GB, ma alcuni lab potrebbero essere lenti)
  • CPU: 4 core
  • Spazio disco: 20 GB liberi

Installazione Docker

Linux:

# Ubuntu/Debian
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER

macOS: Scarica Docker Desktop da https://www.docker.com/products/docker-desktop/

Windows: Scarica Docker Desktop da https://www.docker.com/products/docker-desktop/

Quick Start

  1. Clona questa repository:

    git clone https://github.com/your-org/laboratori-cloud.git
    cd laboratori-cloud
    
  2. Verifica il tuo ambiente:

    ./scripts/check-env.sh
    
  3. Se tutti i check passano, sei pronto per iniziare il primo laboratorio!

    Vai in labs/lab-01-iam/ e segui le istruzioni.

Laboratori

Il corso è composto da 5 laboratori progressivi:

1. IAM & Sicurezza COMPLETATO

Configura utenti Linux, permessi Docker socket, capisci i paralleli IAM.

  • Crea utenti con permessi limitati
  • Configura accesso al Docker socket
  • Container non-root per sicurezza
  • Parallelismo: Utenti Linux -> IAM Users, Gruppi -> IAM Roles

Documentazione: Tutorial | How-to | Reference | Explanation

2. Network & VPC COMPLETATO

Crea reti Docker isolate che simulano VPC e Subnets cloud.

  • Reti bridge isolate con subnet personalizzate (10.0.1.0/24, 10.0.2.0/24)
  • Regole di isolamento tra container (ping test)
  • Reti private con flag --internal (simulano private subnet)
  • Parallelismo: Docker Networks -> VPC, --internal -> Private Subnet, --subnet -> CIDR blocks

Documentazione: Tutorial | How-to | Reference | Explanation

3. Compute & EC2 🔄 IN CORSO

Deploy container con limiti CPU/memoria e healthchecks.

  • Configura limiti di risorse (cpus, mem_limit)
  • Implementa healthcheck personalizzati
  • Parallelismo: Container -> EC2, Resource limits -> Instance types

4. Storage & S3

Configura Docker Volumes e MinIO per storage S3-compatible.

  • Volumes named e bind mounts
  • MinIO come S3 locale
  • Parallelismo: Docker Volumes -> EBS, MinIO -> S3

5. Database & RDS

Deploy PostgreSQL in rete privata con persistenza dati.

  • Container database in rete isolata
  • Backup e restore dei dati
  • Parallelismo: PostgreSQL container -> RDS, Volume -> Snapshot

Struttura Repository

laboratori-cloud/
├── labs/                   # Laboratori (1 per modulo cloud)
│   ├── lab-01-iam/        # IAM & Sicurezza
│   ├── lab-02-network/    # Network & VPC
│   ├── lab-03-compute/    # Compute & EC2
│   ├── lab-04-storage/    # Storage & S3
│   └── lab-05-database/   # Database & RDS
├── how-to-guides/         # Guide procedurali specifiche
├── reference/             # Specifiche tecniche e reference
└── scripts/               # Script di verifica e utilità

Git Workflow

Questo repository segue Conventional Commits.

Esempi di commit che troverai:

  • feat(lab-01): add user configuration script
  • test(lab-02): add network isolation test
  • docs(lab-03): add explanation for healthchecks

Ogni laboratorio è sviluppato su un branch isolato (es. lab-01-iam) e mergeggiato su main solo quando completo e testato.

Framework Diátaxis

Ogni laboratorio include 4 tipi di documento per supportare diversi stili di apprendimento:

  1. Tutorial - Guida passo-passo incrementale
  2. How-to Guides - Procedure specifiche e task-focused
  3. Reference - Specifiche tecniche e parametri
  4. Explanation - Concetti e parallelismi cloud/locale

Troubleshooting

Docker non parte

  • Verifica che il demone Docker sia in esecuzione: docker ps
  • Riavvia Docker: sudo systemctl restart docker (Linux)

Script check-env.sh fallisce

  • Verifica la versione di Docker: docker --version (deve essere >= 24.0)
  • Verifica Compose V2: docker compose version (non docker-compose)
  • Assicurati di essere nel gruppo docker: groups $USER

Permesso negato su Docker socket

sudo usermod -aG docker $USER
# Fai logout e login oppure
newgrp docker

Container non parte o crasha subito

  • Controlla i log: docker logs <container-name>
  • Verifica le risorse disponibili: docker stats
  • Controlla le porte in uso: docker ps

Reset completo ambiente

Per pulire tutto tra un lab e l'altro:

./scripts/reset-env.sh

Questo script ferma tutti i container, rimuove volumi e reti create per i laboratori.

Safety First

Questo corso segue principi di sicurezza rigorosi:

  1. Minimo Privilegio: I container non girano mai come root
  2. Isolamento di Rete: Le reti private non espongono porte sull'host
  3. Limiti di Risorse: Ogni container ha limiti CPU e memoria configurati
  4. Persistenza: I dati sopravvivono al riavvio dei container

Roadmap

Progresso Complessivo: 60% (3/5 Lab Core completati)

Phase Stato Descrizione
Phase 1 COMPLETATA Setup & Git Foundation
Phase 2 COMPLETATA Lab 01 - IAM & Sicurezza
Phase 3 COMPLETATA Lab 02 - Network & VPC
Phase 4 🔄 IN CORSO Lab 03 - Compute & EC2
Phase 5 ⏸️ DA INIZIARE Lab 04 - Storage & S3
Phase 6 ⏸️ DA INIZIARE Lab 05 - Database & RDS
Phase 7 ⏸️ DA INIZIARE Integration & Testing
Phase 8-10 ⏸️ DA INIZIARE Polish & Final Validation

Vedi .planning/ROADMAP.md per dettagli completi.

Contributing

Questo è un progetto didattico. Suggerimenti e miglioramenti sono benvenuti tramite pull request.

License

MIT License - Vedi LICENSE file per dettagli.

Description
No description provided
Readme 451 KiB
Languages
Shell 98.2%
Dockerfile 1.8%