Fondamenti e concetti di DevOps
In questo post tratteremo le basi, i concetti e le pratiche essenziali per chiunque lavori in un ambiente DevOps.
Tratteremo quanto segue:
- Cultura - La cultura della collaborazione tra Dev e Ops
- Pratiche - Le pratiche che supportano gli obiettivi della cultura DevOps
- Utensili - Gli strumenti che aiutano a implementare le pratiche DevOps
- Nube - La stretta relazione tra DevOps e il cloud
Cos'è DevOps
DevOps = Dev (sviluppo) + Ops (operazioni)
Questa definizione di Wikipedia è un buon punto di partenza:
'DevOps è una cultura e pratica dell'ingegneria del software che mira a unificare lo sviluppo del software (Dev) e il funzionamento del software (Ops) ... DevOps mira a cicli di sviluppo più brevi, maggiore frequenza di distribuzione, versioni più affidabili, in stretto allineamento con gli obiettivi aziendali.'
DevOps Is
- DevOps è innanzitutto una cultura della collaborazione tra sviluppatori e persone operative
- Questa cultura ha dato origine a una serie di pratiche
- DevOps è un modo di lavorare
- DevOps è un movimento, da parte di professionisti, per professionisti
DevOps non lo è
- DevOps NON è un insieme di strumenti, ma gli strumenti sono essenziali per il successo in DevOps
- DevOps NON è uno standard
- DevOps NON è un prodotto
- DevOps NON è un titolo professionale
Cultura DevOps
La cultura DevOps riguarda collaborazione tra Dev e Ops. Tradizionalmente, i due lavoravano separatamente e avevano diverso e opporsi obiettivi.
Nella cultura DevOps, Dev e Ops lavorano insieme e condividono il stesso obiettivo . Questo significa che gli sviluppatori si preoccupano della stabilità e della velocità, e gli operatori si preoccupano della velocità e della stabilità.
I ruoli tradizionali degli sviluppatori e degli ingegneri operativi diventano confusi con DevOps.
Invece di 'lanciare codice oltre il muro', sviluppatori e op lavorano insieme per creare e utilizzare strumenti e processi che supportano velocità e stabilità.
Con DevOps:
Silos tradizionali
Cosa c'era di sbagliato nei silos tradizionali?
Sotto i silos tradizionali:
- Gli sviluppatori scrivono del codice
- 'Gettalo oltre il muro' per QA
- Il codice rimbalza avanti e indietro tra lo sviluppo e il controllo qualità quando il controllo qualità rileva i problemi e gli sviluppatori li risolvono
- Finalmente è pronto per la produzione
- QA / Dev 'lancia il codice oltre il muro' in Operations
- Se c'è un problema, Ops lo rigetta oltre il muro a Dev
- Il dominio di ogni gruppo è una 'scatola nera' per gli altri gruppi
- Ops direbbe: “I nostri sistemi vanno bene; è il tuo codice! '
- Dev direbbe: 'Ma il codice funziona sulla mia macchina!'
Questo modo di lavorare porta a puntare molto il dito: le operazioni sono una scatola nera, gli sviluppatori non si fidano davvero di loro e le operazioni non si fidano davvero degli sviluppatori.
Dev e Ops hanno priorità diverse: Ops considera gli sviluppatori come una stabilità che infrange e gli sviluppatori considerano le operazioni come un ostacolo alla distribuzione del proprio codice.
Anche se VOGLIONO lavorare insieme, lo sviluppo viene misurato fornendo funzionalità, il che significa distribuire le modifiche e le operazioni vengono misurate in base al tempo di attività, ma le modifiche sono negative per la stabilità.
Aspetti negativi dei silos tradizionali
- Le 'scatole nere' portano al dito puntato
- Un processo lungo significa un lento time-to-market
- La mancanza di automazione significa che cose come build e distribuzioni sono incoerenti
- Ci vuole molto tempo per identificare e risolvere i problemi
Unione di sviluppo e operazioni (DevOps)
In che modo DevOps risolve i problemi dei silos tradizionali?
Sotto il modello DevOps:
- Gli sviluppatori scrivono il codice
- Il commit del codice attiva build, integrazione e test automatizzati
- QA può metterci le mani su quasi immediatamente
- Una volta pronto, avvia una distribuzione automatizzata in produzione
- Poiché tutto è automatizzato, è molto più facile da distribuire mantenendo le cose stabili
- Le distribuzioni possono verificarsi molto più frequentemente, portando le funzionalità nelle mani dei clienti più rapidamente
- Se l'ultima distribuzione interrompe qualcosa in produzione, il monitoraggio automatizzato avvisa immediatamente il team
- Il team esegue un rollback distribuendo la versione funzionante precedente, risolvendo rapidamente il problema
- Un'ora dopo, il team di sviluppo è in grado di distribuire una versione fissa del nuovo codice
Dev e Ops hanno collaborato per dare priorità sia alla velocità di consegna che alla stabilità.
L'automazione ha portato alla coerenza: la creazione, il test e la distribuzione sono avvenuti allo stesso modo ogni volta, molto più rapidamente e più spesso
Un buon monitoraggio, oltre al rapido processo di distribuzione, ha garantito che i problemi potessero essere risolti anche prima che gli utenti li notassero. Anche se una modifica del codice ha causato un problema, gli utenti hanno riscontrato tempi di inattività minimi o nulli.
Vantaggi di DevOps
- I team tecnologici tendono ad essere più contenti di fare DevOps piuttosto che essere in silos tradizionali
- Più tempo per innovare e meno tempo per spegnere gli incendi
- Devs e Ops condividono entrambi lo stesso obiettivo che è la velocità di consegna e il sistema stabile.
- Il modo di lavorare DevOps offre ai clienti le funzionalità che desiderano in modo rapido e affidabile.