Che cos’è DevOps? Non è una cosa che si può risolvere con uno strumento, né è una metodologia, né richiede il reclutamento di persone super dotate per gestire tutte le attività del ciclo di vita dell’applicazione. Né si può dire che sia solo CI/CD. DevOps è un modello organizzativo leggero che coinvolge processi, persone e tecnologie al fine di ottenere un sostanziale miglioramento nella gestione del ciclo di vita delle applicazioni, dal loro sviluppo e collaudo, alla loro implementazione fino al funzionamento in produzione.

Ma esattamente in cosa consiste questo sostanziale miglioramento? Secondo Red Hat sono cinque gli ambiti fondamentali in cui vanno a operare le pratiche DevOps.

  • Agilità: maggiore capacità di rendere disponibili ambienti e risorse senza aumentare, o addirittura riducendo i costi.
  • Standardizzazione: minore sforzo nell’integrazione, nel test, nell’implementazione e nel funzionamento, incapsulando le differenze tra le applicazioni con un modello omogeneo e semplice.
  • Stabilità: riduzione dei guasti e dei malfunzionamenti grazie all’automazione dei processi di test, implementazione, recupero ed escalation.
  • Comunicazione: diminuzione delle tensioni tra le aree di sviluppo, test e funzionamento in modo da condividere obiettivi, processi e tecnologia.
  • Velocità: come probabile conseguenza dei punti precedenti, il tempo che intercorre tra lo sviluppo di una nuova funzionalità e il suo impiego in produzione si riduce.

jelastic-container-cloud-1020

L’altra domanda che sorge spontanea riguarda l’impatto che hanno le piattaforme container nell’implementazione di DevOps. Quando incapsuliamo le applicazioni e le loro dipendenze in container, non è più necessario sapere come queste vengono installate o configurate, o se la destinazione è on-premise o nel cloud. Sono portatili. Queste piattaforme container facilitano l’organizzazione di DevOps, fornendo un modello comune e continuo tra Dev e Ops, consentendo al contempo la separazione delle responsabilità senza interrompere la continuità e fornendo quattro vantaggi specifici.

  • Agilità: Creazione automatica degli ambienti di test, che vengono eliminati al termine della prova, o la creazione istantanea degli ambienti e delle risorse necessarie per il ciclo di vita completo di un nuovo progetto.
  • Normalizzazione: Quando un operatore riceve un’applicazione, non ha bisogno di una guida per installarla, in quanto viene implementata come qualsiasi altro container. Non è necessario modificare file di configurazione specifici. L’applicazione viene monitorata automaticamente, in tutti gli ambienti.
  • Stabilità: Promuovendo o trasferendo lo stesso container che ha superato il processo di test (QA) si evita l’iniezione di possibili guasti in fase di installazione o configurazione, o quelli derivanti da differenze tra l’ambiente sorgente e quello di destinazione.
  • Comunicazione: Esiste uno standard per qualsiasi applicazione e per tutti gli ambienti (Kubernetes), parlano la stessa lingua.