Files
laboratori-cloud/prd.md
Luca Sacchi Ricciardi d4c4f7d717 docs: add Phase 3 validation strategy and project specifications
- Add 03-VALIDATION.md for Phase 3 (Lab 02 Network & VPC)
- Add CLAUDE.md v3.3 with hybrid agent-based development standards
- Add prd.md with product requirements for cloud course

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 15:55:18 +01:00

5.0 KiB

PRD: Laboratori "Soluzioni Cloud" Simulate in Locale

1. Obiettivo del Progetto

Creare materiale didattico tecnico, strutturato secondo il framework Diátaxis, per un corso pratico sulle tecnologie Cloud. I laboratori simuleranno i servizi core di un cloud provider (IAM, Network, Compute, Storage, Database) utilizzando un ambiente locale basato su macchine virtuali (KVM/VirtualBox) e Docker.

L'output generato dall'LLM dovrà avere un tono diretto, semplice e rigorosamente tecnico.

2. Regole d'Ingaggio per l'Agente LLM (Core Principles)

L'agente LLM incaricato di generare il contenuto deve rispettare tassativamente i seguenti principi nella stesura del codice e dei testi:

  • Spec-Driven: Ogni modulo deve iniziare con le specifiche tecniche chiare dell'architettura da realizzare.
  • Infrastructure-TDD (Test-Driven Development): Prima di fornire i file di configurazione (docker-compose.yml, Dockerfile, script bash), l'LLM deve fornire i test o i comandi di validazione. Bisogna definire "come testiamo che funzioni" prima di scriverlo.
  • Le 3 Regole d'Oro:
    1. Safety first: Il codice e le architetture devono partire dal principio del minimo privilegio (reti isolate, permessi restrittivi, niente root se non necessario).
    2. Little often: I laboratori devono essere incrementali. Piccoli step testabili.
    3. Double check: Ogni fase deve concludersi con una verifica esplicita dello stato dell'infrastruttura (connettività, log, processi).
  • Git Flow Avanzato: Il tutorial deve guidare l'allievo nel versionamento. L'LLM deve suggerire commit atomici utilizzando le convenzioni dei Conventional Commits (es. feat: add private vpc network, test: verify db connection via pg_isready) e indicare le strategie di branching ottimali per isolare i laboratori.

3. Struttura dei Contenuti (Framework Diátaxis)

Per ogni modulo (Lab), l'LLM dovrà produrre 4 artefatti distinti:

  1. Tutorials (Learning-oriented): La guida passo-passo che prende per mano l'allievo. Segue la regola del little often. Contiene le istruzioni pratiche, i comandi Git e le verifiche (double check).
  2. How-to Guides (Goal-oriented): Ricettari per compiti specifici e slegati dal flusso principale (es. "Come resettare l'ambiente Docker", "Come generare una nuova coppia di chiavi SSH sicure").
  3. Reference (Information-oriented): Specifiche tecniche pure. I file docker-compose.yml completi, mappe delle reti IP assegnate, tabelle delle porte esposte, spiegazione nuda e cruda dei parametri usati.
  4. Explanation (Understanding-oriented): Il raccordo concettuale. Spiegazione del parallelismo tra l'infrastruttura locale simulata e i servizi managed reali (es. "Perché questo container MinIO si comporta come un bucket AWS S3").

4. Specifiche dei Moduli (I Laboratori)

Lab 1: IAM & Sicurezza

  • Obiettivo: Gestione accessi e perimetrazione.
  • Componenti Locali: Utenti Linux, gruppi, chiavi SSH, permessi Docker socket.
  • Parallelismo Cloud: AWS IAM, Azure AD, RBAC.
  • Spec-Driven & TDD: Il test deve provare a eseguire un container privilegiato con un utente non autorizzato e fallire.
  • Git: Branch lab-01-iam.

Lab 2: Network

  • Obiettivo: Isolamento delle risorse e routing.
  • Componenti Locali: Docker Networks (bridge), configurazione iptables per NAT.
  • Parallelismo Cloud: VPC, Subnets pubbliche/private, Security Groups, NAT Gateway.
  • Spec-Driven & TDD: I test consistono nell'avviare container sonda (Alpine/Busybox) ed eseguire ping e nc per verificare che la rete privata non esca su internet se non tramite il NAT, e che le due reti non comunichino senza regole esplicite.
  • Git: Branch lab-02-network.

Lab 3: Compute

  • Obiettivo: Erogazione della potenza di calcolo e containerizzazione.
  • Componenti Locali: VM (per concetti Hypervisor/IaaS) + Docker (CaaS). Web server leggero (Nginx/Node.js).
  • Parallelismo Cloud: EC2, Compute Engine, ECS, Fargate.
  • Spec-Driven & TDD: Configurare i limiti (cpus, mem_limit) nel Compose. Il test deve essere uno stress-test che causa l'OOM (Out Of Memory) kill del container per dimostrare l'enforcement delle quote.
  • Git: Branch lab-03-compute.

Lab 4: Storage

  • Obiettivo: Persistenza dei dati e object storage.
  • Componenti Locali: Docker Volumes (Block) e container MinIO (Object).
  • Parallelismo Cloud: EBS (Block), S3 (Object).
  • Spec-Driven & TDD: Test API via client CLI (mc) per creare un bucket e caricare un file testuale su MinIO.
  • Git: Branch lab-04-storage.

Lab 5: Database

  • Obiettivo: Simulazione di un database gestito e disaccoppiato.
  • Componenti Locali: Container PostgreSQL/MySQL allocato nella VPC privata con volume persistente.
  • Parallelismo Cloud: Amazon RDS, Cloud SQL.
  • Spec-Driven & TDD: Un container applicativo (VPC pubblica) deve eseguire uno script di verifica connessione al DB (VPC privata) all'avvio. Se la connessione fallisce, l'app non si espone (safety first).
  • Git: Branch lab-05-database.