# 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 - [x] **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 - [x] [01-01-PLAN.md](.planning/phases/01-setup-git-foundation/01-01-PLAN.md) — Create validation scripts (check-env.sh, validate-compose.sh, reset-env.sh) **COMPLETE** 2026-03-24 - [x] [01-02-PLAN.md](.planning/phases/01-setup-git-foundation/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 - [x] [02-01-PLAN.md](.planning/phases/02-lab-01-iam-sicurezza/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](.planning/phases/02-lab-01-iam-sicurezza/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](.planning/phases/02-lab-01-iam-sicurezza/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](.planning/phases/03-lab-02-network-vpc/03-01-PLAN.md) — Create test infrastructure (Wave 0: network creation tests, isolation tests, INF-02 compliance tests, final verification) - [ ] [03-02-PLAN.md](.planning/phases/03-lab-02-network-vpc/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](.planning/phases/03-lab-02-network-vpc/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:** TBD --- ### 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*