Turnkey Continuous Delivery
- Italian Agile Days
- DevOps Heroes
Abstract
Con l’aiuto di Ansible, Vagrant, Docker, GitLab e Jenkins, realizzeremo una soluzione completa e pronta all’uso per muovere i primi passi verso il Continuous Delivery.
Lungo questo percorso esploreremo i concetti fondamentali della cultura DevOps, dimostrando che la vera chiave del successo risiede nei principi metodologici piuttosto che negli strumenti utilizzati. Approfondiremo pratiche essenziali come Infrastructure as Code, Immutable Server, Automated Provisioning e Infrastructure Testing.
Quando si parla di Continuous Integration e Delivery, si tende a credere che la configurazione degli strumenti sia lo scoglio principale, richiedendo tempi lunghi e un’elevata complessità per predisporre l’infrastruttura di base. In realtà, la vera sfida non è dominare la tecnologia, ma trasformare la mentalità del team, il modo di lavorare e l’approccio al rilascio del software.
Cosa hanno imparato i partecipanti
Grazie alla combinazione di sessioni teoriche ed esercizi pratici guidati, i partecipanti hanno appreso come:
- Distinguere e applicare le pratiche Continuous: Comprendere le differenze chiave tra Continuous Integration (integrazione frequente e test automatizzati), Continuous Delivery (codice sempre pronto per il rilascio manuale) e Continuous Deployment (rilascio in produzione completamente automatizzato).
- Implementare l’Infrastructure as Code (IaC): Utilizzare Ansible e Vagrant per automatizzare il provisioning e la configurazione dell’ambiente di delivery e degli ambienti target (Testing, Staging e Production).
- Strutturare una Build Automation Pipeline completa: Costruire un flusso di delivery per un microservizio basato sui passaggi fondamentali:
- Checkout dal Version Control (GitLab)
- Analisi statica del codice (linting)
- Esecuzione dei test pre-deploy (unit e integration test)
- Packaging e pubblicazione dell’artefatto (creazione e push dell’immagine Docker nel Registry)
- Deploy automatizzato su ambienti isolati via Ansible
- Esecuzione dei test post-deploy (API ed E2E)
- Gestire l’integrazione continua dei Feature Branch: Configurare strategie di merge automatizzato e trigger di build su Jenkins per validare le modifiche del codice rispetto al branch master prima del merge definitivo.
- Applicare la filosofia “Fail Fast”: Riconoscere l’importanza di build rapide (sotto i 10 minuti), test affidabili ad ogni commit e visibilità dello stato delle build per tutto il team.