Deploy con Modal e Railway

Descrizione del corso

  • Architettura di Deployment
  • Stateless Agent API vs Stateful Agent Service
  • Modal e Deploy serverless di Agenti Python con @app.function, @app.cls e cron jobs
  • Scalabilità con Modal, Concorrenza, GPU access per Embedding ed ottimizzazione Cold Start
  • Railway e Deploy di servizi Stateful ( PostgreSQL, Redis e Langfuse ) con un Click
  • Docker multi-stage Builds per Agenti con Immagine leggera e dipendenze ottimizzate
  • Environment Management, Secrets, Config per Environment ( Sviluppo/Staging/Produzione )
  • CI/CD Pipeline per Agenti, GitHub Actions, Test automatici e strategie di Rollback
  • Monitoring in produzione con Health checks, Uptime ed integrazione con Langfuse e Sentry
  • Introduzione al Project Work finale
  • Esercizio 66.01 – Prendere uno degli Agent costruiti nei moduli precedenti e scrivere un Dockerfile multi-stage
  • Esercizio 66.02 – Primo stage con tutte le dipendenze di build
  • Esercizio 66.03 – Secondo stage con solo il necessario per il runtime, ottenendo un’immagine finale inferiore a 200MB
  • Esercizio 66.04 – Configurare tre file .env distinti per sviluppo, staging e produzione con variabili diverse per API keys, database URL, log level e feature flags
  • Esercizio 66.05 – Implementare una funzione di configurazione in Python che legge le variabili d’ambiente e valida che tutte quelle obbligatorie siano presenti al momento dell’avvio
  • Esercizio 66.06 – Usare Docker secrets per le variabili più sensibili invece delle variabili d’ambiente plain text e verificare che non siano visibili nei log
  • Esercizio 66.07 – Buildare l’immagine per tre architetture diverse con docker buildx: linux/amd64, linux/arm64 e verificare che funzioni correttamente su entrambe
  • Esercizio 66.08 – Pubblicare l’immagine su GitHub Container Registry con tag semantici: latest, versione specifica e hash del commit Git
  • Esercizio 66.09 – Deploy serverless su Modal
  • Esercizio 66.10 – Installare Modal CLI, autenticarsi e creare la prima app con @app.function che espone l’agente come funzione invocabile remotamente
  • Esercizio 66.11 – Configurare i secrets su Modal per API keys e variabili sensibili e verificare che siano accessibili dentro la funzione senza essere nei log
  • Esercizio 66.12 – Implementare un endpoint HTTP con @app.function(allow_concurrent_inputs=10) che gestisce fino a 10 richieste contemporanee e misurare la latenza sotto carico
  • Esercizio 66.13 – Aggiungere un @app.cls per un agente stateful che mantiene una connessione al DB aperta tra una invocazione e l’altra, evitando il costo di reconnessione ad ogni Request
  • Esercizio 66.14 – Configurare un cron job con @app.function(schedule=modal.Period(hours=1)) che ogni ora esegue un task di manutenzione
  • Esercizio 66.15 – Ottimizzare il cold start: misurare il tempo di avvio a freddo, identificare le dipendenze più pesanti e usare modal.Image con layer pre-buildati
  • Esercizio 66.16 – Creare un progetto Railway e deployare PostgreSQL con pgvector abilitato, configurando backup automatici giornalieri e retention di 7 giorni
  • Esercizio 66.17 – Aggiungere Redis come secondo servizio e configurare la persistenza con AOF per evitare perdita di dati in caso di restart
  • Esercizio 66.18 – Deployare Langfuse self-hosted come terzo servizio collegandolo al PostgreSQL già presente nel progetto
  • Esercizio 66.19 – Configurare le variabili d’ambiente condivise tra i servizi usando il sistema di riferimenti interni di Railway: ${{Postgres.DATABASE_URL}} invece di hardcodare i valori
  • Esercizio 66.20 – Testare la connettività tra i servizi dall’interno della rete privata di Railway e verificare che nessun servizio sia esposto pubblicamente tranne gli endpoint necessari

Codice:ET-AI-0001_66

Durata:0 giorni

Categorie:,

Moduli del corso