Files
laboratori-cloud/.planning/ROADMAP.md
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

18 KiB

ROADMAP: Laboratori Cloud - Corso Soluzioni Cloud

Created: 2026-03-24 Granularity: Fine Total Phases: 10 Coverage: 40/40 requirements mapped


Progress Summary

Phase Plans Complete Status Completed
1. Setup & Git Foundation 2/2 Complete 2026-03-24
2. Lab 01 - IAM & Sicurezza 2/3 In Progress
3. Lab 02 - Network & VPC 0/3 Planning -
4. Lab 03 - Compute & EC2 0/3 Not started -
5. Lab 04 - Storage & S3 0/3 Not started -
6. Lab 05 - Database & RDS 0/3 Not started -
7. Integration & Testing 0/2 Not started -
8. Repository Structure 0/2 Not started -
9. Troubleshooting Docs 0/2 Not started -
10. Final Validation 0/2 Not started -

Phases

Phase Overview

  • Phase 1: Setup & Git Foundation - Repository setup, ambiente di sviluppo, requisiti sistema COMPLETE
  • Phase 2: Lab 01 - IAM & Sicurezza - Utenti Linux, permessi Docker, volume basics (2/3 complete)
  • Phase 3: Lab 02 - Network & VPC - Reti bridge isolate, simulazione VPC/Subnets (3/3 plans created)
  • Phase 4: Lab 03 - Compute & EC2 - Container con limiti risorse, healthchecks
  • Phase 5: Lab 04 - Storage & S3 - Docker Volumes, MinIO S3-compatible
  • Phase 6: Lab 05 - Database & RDS - PostgreSQL in rete privata, persistenza dati
  • Phase 7: Integration & Testing - Test cross-lab, validazione architettura completa
  • Phase 8: Repository Structure - Organizzazione file, cartelle, README
  • Phase 9: Troubleshooting Docs - Guide risoluzione problemi comuni
  • Phase 10: Final Validation - Validazione completa, double check finale

Phase Details

Phase 1: Setup & Git Foundation

Goal: Repository Git strutturato con Conventional Commits, ambiente di sviluppo configurato, requisiti sistema documentati

Depends on: Nothing (first phase)

Requirements: GIT-04, GIT-05, SETUP-01, SETUP-02, SETUP-03, SETUP-04, SETUP-05, INF-05

Success Criteria (what must be TRUE):

  1. Studente può clonare la repository e trovare istruzioni chiare per configurare Docker Engine >= 24.0 e Compose V2
  2. Studente può eseguire script di verifica ambiente che controlla Docker, utility di rete, e risorse minime
  3. Studente può eseguire comando di reset completo ambiente (cleanup volumi, reti)
  4. Ogni file docker-compose.yml può essere validato con docker-compose config prima dell'uso
  5. Repository ha struttura chiara con cartelle labs/, how-to-guides/, reference/

Plans: 2

  • 01-01-PLAN.md — Create validation scripts (check-env.sh, validate-compose.sh, reset-env.sh) COMPLETE 2026-03-24
  • 01-02-PLAN.md — Create repository structure and README.md COMPLETE 2026-03-24

Phase 2: Lab 01 - IAM & Sicurezza

Goal: Studente configura utenti Linux, gruppi, permessi Docker socket, e capisce IAM parallels

Depends on: Phase 1

Requirements: LAB-01, DOCT-01, DOCT-02, DOCT-03, DOCT-04, DOCT-05, TEST-01, TEST-05, INF-01, PARA-01, PARA-03, PARA-04

Success Criteria (what must be TRUE):

  1. Studente può creare utenti Linux con permessi limitati per accesso Docker socket (simulazione IAM Users)
  2. Studente comprende il parallelismo tra utenti Linux/permessi Docker e IAM Users/Roles in cloud
  3. Nessun container gira come root (principio minimo privilegio verificato)
  4. Lab include Tutorial passo-passo, How-to Guides, Reference, e Explanation (Framework Diátaxis completo)
  5. Studente può eseguire comando di verifica finale ("double check") per validare il lavoro svolto

Plans: 3

  • 02-01-PLAN.md — Create test infrastructure (Wave 0: test-01-user-creation.sh, test-02-docker-access.sh, 03-non-root-test.sh, 99-final-verification.sh, run-all-tests.sh) COMPLETE 2026-03-24
  • 02-02-PLAN.md — Create Diátaxis documentation (Tutorial: 3 parts, How-to Guides: 3 guides, Reference: 3 documents, Explanation: IAM parallels)
  • 02-03-PLAN.md — Create infrastructure (Dockerfile with non-root user, docker-compose.yml with user directive, infrastructure verification) COMPLETE 2026-03-24

Phase 3: Lab 02 - Network & VPC

Goal: Studente crea reti Docker bridge isolate che simulano VPC e Subnets cloud

Depends on: Phase 2

Requirements: LAB-02, DOCT-01, DOCT-02, DOCT-03, DOCT-04, DOCT-05, TEST-01, TEST-05, INF-02, PARA-01, PARA-02, PARA-03, PARA-04

Success Criteria (what must be TRUE):

  1. Studente può creare reti Docker bridge isolate per simulare VPC e Subnets (pubbliche/private)
  2. Reti private non espongono porte sull'host (max 127.0.0.1, mai 0.0.0.0)
  3. Studente comprende il parallelismo tra Docker Bridge Networks e VPC cloud (isolamento, DNS resolution)
  4. Studente può verificare isolamento tra reti con test di connettività (ping, curl, netcat)
  5. Lab include Documentazione Diátaxis completa con architettura locale che usa nomenclatura cloud

Plans: 3

  • 03-01-PLAN.md — Create test infrastructure (Wave 0: network creation tests, isolation tests, INF-02 compliance tests, final verification)
  • 03-02-PLAN.md — Create Diátaxis documentation (Tutorial: 3 parts, How-to: 4 guides, Reference: 3 docs, Explanation: VPC parallels)
  • 03-03-PLAN.md — Create infrastructure (docker-compose.yml with VPC networks, Dockerfile for API service, infrastructure verification)

Phase 4: Lab 03 - Compute & EC2

Goal: Studente deploy container con limiti CPU/memoria e healthchecks (simulazione EC2)

Depends on: Phase 3

Requirements: LAB-03, DOCT-01, DOCT-02, DOCT-03, DOCT-04, DOCT-05, TEST-01, TEST-05, INF-03, PARA-01, PARA-03, PARA-04

Success Criteria (what must be TRUE):

  1. Studente può deploy container con limiti CPU/memoria obbligatori (simulazione instance types)
  2. Studente può implementare healthchecks per verificare che servizi siano "healthy" prima di dipendenze
  3. Tutti i container hanno cpus e mem_limit configurati (enforcement risorse cloud)
  4. Studente comprende il parallelismo tra container con limiti e EC2 instances con instance types
  5. Lab include test che verificano resource limits con docker stats e healthcheck readiness

Plans: 3

  • 04-01-PLAN.md — Create test infrastructure (Wave 0: resource limits tests, healthcheck tests, enforcement tests, final verification)
  • 04-02-PLAN.md — Create Diátaxis documentation (Tutorial: 3 parts, How-to: 4 guides, Reference: 3 docs, Explanation: EC2 parallels)
  • 04-03-PLAN.md — Create infrastructure (docker-compose.yml with resource limits, healthchecks, Dockerfile, infrastructure verification)

Phase 5: Lab 04 - Storage & S3

Goal: Studente configura Docker Volumes e MinIO per storage S3-compatible

Depends on: Phase 3 (uses Lab 2 networking)

Requirements: LAB-04, DOCT-01, DOCT-02, DOCT-03, DOCT-04, DOCT-05, TEST-01, TEST-05, INF-04, PARA-01, PARA-03, PARA-04

Success Criteria (what must be TRUE):

  1. Studente può configurare Docker Volumes nominativi che persistono dati oltre riavvio container
  2. Studente può deploy MinIO per storage oggetti compatibile al 100% con API S3
  3. Dati persistenti sopravvivono a riavvio container (named volumes verificati)
  4. Studente comprende il parallelismo tra Docker Volumes → EBS e MinIO → S3
  5. Lab include test che verificano persistenza dati (stop container, restart, dati presenti)

Plans: TBD


Phase 6: Lab 05 - Database & RDS

Goal: Studente deploy database PostgreSQL in rete privata con volume persistente (simulazione RDS)

Depends on: Phase 3, Phase 4, Phase 5

Requirements: LAB-05, DOCT-01, DOCT-02, DOCT-03, DOCT-04, DOCT-05, TEST-01, TEST-05, INF-02, INF-03, INF-04, PARA-01, PARA-02, PARA-03, PARA-04

Success Criteria (what must be TRUE):

  1. Studente può deploy PostgreSQL/MySQL in rete privata isolata (simulazione RDS in VPC privata)
  2. Database in rete privata non è accessibile dall'host, solo da container nella stessa rete
  3. Dati database persistono in named volume che sopravvive a riavvio container
  4. Studente comprende il parallelismo tra container database in rete privata e RDS/Aurora in VPC privata cloud
  5. Lab integra tutti i concetti precedenti (Network + Compute + Storage) in architettura multi-tier completa

Plans: TBD


Phase 7: Integration & Testing

Goal: Test cross-lab validano architettura completa e criteri sicurezza

Depends on: Phase 2, Phase 3, Phase 4, Phase 5, Phase 6

Requirements: TEST-02, TEST-03, TEST-04, INF-01, INF-02, INF-03, INF-04

Success Criteria (what must be TRUE):

  1. Script di test verificano criteri sicurezza: nessun container root, reti isolate, limiti risorse
  2. Script di test verificano funzionalità: connettività cross-reti, persistenza dati, accessibilità servizi
  3. Ogni lab include sezione troubleshooting con errori comuni e soluzioni (BUGS.md pattern)
  4. Test cross-lab validano architettura completa (app → database → storage attraverso reti isolate)
  5. Test seguono methodology TDI: RED (test fallimentare) → GREEN (implementazione) → REFACTOR (ottimizzazione)

Plans: TBD


Phase 8: Repository Structure

Goal: Repository organizzata con struttura chiara per studenti e istruttori

Depends on: Phase 2, Phase 3, Phase 4, Phase 5, Phase 6, Phase 7

Requirements: GIT-01, GIT-02, GIT-03, GIT-05

Success Criteria (what must be TRUE):

  1. Ogni lab ha branch isolato (lab-01-iam, lab-02-network, etc.) con merge su main solo quando completo
  2. Commit seguono Conventional Commits (feat:, test:, docs:) e sono atomici
  3. Repository ha cartelle chiare: labs/ (per lab), how-to-guides/ (guide generali), reference/ (specifiche tecniche)
  4. README radice include istruzioni cloning, setup iniziale, e overview dei 5 laboratori
  5. Struttura consente a studente di navigare facilmente tra Tutorial (step-by-step) e Reference (spec tecniche)

Plans: TBD


Phase 9: Troubleshooting Docs

Goal: Documentazione completa troubleshooting per errori comuni in ogni lab

Depends on: Phase 2, Phase 3, Phase 4, Phase 5, Phase 6, Phase 7

Requirements: TEST-04, TEST-05, DOCT-02

Success Criteria (what must be TRUE):

  1. Ogni lab include sezione troubleshooting con errori comuni e soluzioni (pattern BUGS.md)
  2. How-to Guides coprono procedure specifiche slegate dal flusso (es. "Come ripulire volumi Docker", "Come generare chiavi SSH")
  3. Comandi di "double check" forniscono verifica finale unambiguous per ogni lab
  4. Troubleshooting include differenze tra comportamento locale e cloud (dove applicable)
  5. Guide troubleshooting seguono principio "little often" (piccoli problemi, frequente pratica)

Plans: TBD


Phase 10: Final Validation

Goal: Validazione completa del corso: tutti i laboratori funzionano, documentazione completa, criteri qualità soddisfatti

Depends on: Phase 8, Phase 9

Requirements: TEST-02, TEST-03, INF-01, INF-02, INF-03, INF-04, INF-05, PARA-01, PARA-02, PARA-03, PARA-04

Success Criteria (what must be TRUE):

  1. Tutti i 5 laboratori sono eseguibili end-to-end senza errori (docker-compose up funziona)
  2. Tutti i 4 documenti Diátaxis sono completi per ogni lab (Tutorial, How-to, Reference, Explanation)
  3. Tutti i criteri sicurezza sono verificati: no root, reti isolate, limiti risorse, persistenza dati
  4. Tutti i parallelismi cloud ↔ locale sono documentati: Docker Networks → VPC, MinIO → S3, PostgreSQL → RDS
  5. Checklist qualità completata: Diátaxis (4 documenti), TDD (test pre-implementazione), Git workflow, Safety first, Double check

Plans: TBD


Traceability

Every v1 requirement mapped to exactly one phase:

Setup & Git (Phase 1)

  • GIT-04: README include istruzioni cloning e setup iniziale
  • GIT-05: Struttura repo chiara con cartelle labs/, how-to-guides/, reference/
  • SETUP-01: Documentato requisito Docker Engine >= 24.0 e Compose V2
  • SETUP-02: Documentato requisito utility di rete (netcat, curl, iproute2)
  • SETUP-03: Specificate risorse minime consigliate (RAM, CPU)
  • SETUP-04: Fornito script di verifica ambiente (check Docker, check versioni)
  • SETUP-05: Fornito comando di reset completo ambiente (cleanup volumi, reti)
  • INF-05: File docker-compose.yml validati con docker-compose config prima dell'uso

Lab 01 - IAM (Phase 2)

  • LAB-01: Studente può configurare utenti Linux, gruppi e permessi per accesso Docker socket
  • DOCT-01: Lab 01 include Tutorial (guida passo-passo incrementale)
  • DOCT-02: Lab 01 include How-to Guides (procedure specifiche)
  • DOCT-03: Lab 01 include Reference (specifiche tecniche)
  • DOCT-04: Lab 01 include Explanation (parallelismo Docker ↔ cloud)
  • DOCT-05: Tutorial Lab 01 segue principio "little often"
  • TEST-01: Lab 01 include script di test bash pre-implementazione
  • TEST-05: Lab 01 include comando di verifica finale ("double check")
  • INF-01: Nessun container gira come utente root
  • PARA-01: Componente Docker (utenti Linux) mappato a servizio cloud (IAM Users)
  • PARA-03: Differenze tra locale e cloud documentate esplicitamente
  • PARA-04: Comandi Docker equivalenti a comandi cloud mostrati a confronto

Lab 02 - Network (Phase 3)

  • LAB-02: Studente può creare reti Docker bridge isolate per simulare VPC/Subnets
  • DOCT-01: Lab 02 include Tutorial
  • DOCT-02: Lab 02 include How-to Guides
  • DOCT-03: Lab 02 include Reference
  • DOCT-04: Lab 02 include Explanation
  • DOCT-05: Tutorial Lab 02 segue "little often"
  • TEST-01: Lab 02 include script di test bash pre-implementazione
  • TEST-05: Lab 02 include comando di verifica finale
  • INF-02: Reti private non espongono porte sull'host
  • PARA-01: Docker Bridge Networks mappate a VPC/Subnets
  • PARA-02: Architettura locale usa nomenclatura cloud (VPC, subnet, security groups)
  • PARA-03: Differenze locale/cloud documentate
  • PARA-04: Comandi Docker equivalenti mostrati

Lab 03 - Compute (Phase 4)

  • LAB-03: Studente può deploy container con limiti CPU/memoria e healthchecks
  • DOCT-01: Lab 03 include Tutorial
  • DOCT-02: Lab 03 include How-to Guides
  • DOCT-03: Lab 03 include Reference
  • DOCT-04: Lab 03 include Explanation
  • DOCT-05: Tutorial Lab 03 segue "little often"
  • TEST-01: Lab 03 include script di test bash pre-implementazione
  • TEST-05: Lab 03 include comando di verifica finale
  • INF-03: Tutti i container hanno limiti risorse obbligatori
  • PARA-01: Container con limiti mappati a EC2 instances
  • PARA-03: Differenze locale/cloud documentate
  • PARA-04: Comandi Docker equivalenti mostrati

Lab 04 - Storage (Phase 5)

  • LAB-04: Studente può configurare Docker volumes e MinIO per storage S3-compatible
  • DOCT-01: Lab 04 include Tutorial
  • DOCT-02: Lab 04 include How-to Guides
  • DOCT-03: Lab 04 include Reference
  • DOCT-04: Lab 04 include Explanation
  • DOCT-05: Tutorial Lab 04 segue "little often"
  • TEST-01: Lab 04 include script di test bash pre-implementazione
  • TEST-05: Lab 04 include comando di verifica finale
  • INF-04: Dati persistenti sopravvivono a riavvio container (named volumes)
  • PARA-01: Docker Volumes → EBS, MinIO → S3
  • PARA-03: Differenze locale/cloud documentate
  • PARA-04: Comandi Docker equivalenti mostrati

Lab 05 - Database (Phase 6)

  • LAB-05: Studente può deploy database PostgreSQL in rete privata con volume persistente
  • DOCT-01: Lab 05 include Tutorial
  • DOCT-02: Lab 05 include How-to Guides
  • DOCT-03: Lab 05 include Reference
  • DOCT-04: Lab 05 include Explanation
  • DOCT-05: Tutorial Lab 05 segue "little often"
  • TEST-01: Lab 05 include script di test bash pre-implementazione
  • TEST-05: Lab 05 include comando di verifica finale
  • INF-02: Database in rete privata (usa Lab 2 networking)
  • INF-03: Database ha limiti risorse
  • INF-04: Database usa named volume per persistenza
  • PARA-01: PostgreSQL in rete privata → RDS in VPC privata
  • PARA-02: Architettura usa nomenclatura cloud (VPC, subnet)
  • PARA-03: Differenze locale/cloud documentate
  • PARA-04: Comandi Docker equivalenti mostrati

Integration & Testing (Phase 7)

  • TEST-02: Script verificano criteri di sicurezza (no root, reti isolate, limiti risorse)
  • TEST-03: Script verificano funzionalità (connettività, persistenza dati, accessibilità)
  • TEST-04: Ogni lab include sezione troubleshooting con errori comuni e soluzioni
  • INF-01: Validazione nessun container root across tutti labs
  • INF-02: Validazione reti private across tutti labs
  • INF-03: Validazione limiti risorse across tutti labs
  • INF-04: Validazione persistenza dati across tutti labs

Repository Structure (Phase 8)

  • GIT-01: Ogni lab sviluppato su branch isolato
  • GIT-02: Commit seguono Conventional Commits
  • GIT-03: Commit sono atomici
  • GIT-05: Struttura repo chiara confermata

Troubleshooting Docs (Phase 9)

  • TEST-04: Sezioni troubleshooting complete per ogni lab
  • TEST-05: Comandi double check per ogni lab
  • DOCT-02: How-to Guides per procedure specifiche

Final Validation (Phase 10)

  • TEST-02: Validazione finale criteri sicurezza
  • TEST-03: Validazione finale funzionalità
  • INF-01: Validazione finale no root
  • INF-02: Validazione finale reti isolate
  • INF-03: Validazione finale limiti risorse
  • INF-04: Validazione finale persistenza dati
  • INF-05: Validazione finale docker-compose config
  • PARA-01: Validazione finale parallelismi cloud-locale
  • PARA-02: Validazione finale nomenclatura cloud
  • PARA-03: Validazione finale differenze documentate
  • PARA-04: Validazione finale comandi equivalenti

Coverage Validation

Total v1 requirements: 40 Mapped to phases: 40 Orphaned requirements: 0 Duplicate mappings: 0

Coverage: 100%


Last updated: 2026-03-25