Introduzione a DevOps per principianti

DevOps è diventata una parola d’ordine, che significa molte cose diverse per molte persone.

È difficile capire e definire cosa sia esattamente DevOps. Ed è per questo che se conosci i concetti fondamentali di DevOps a cui la maggior parte delle persone si associa e la storia di come si è evoluto, allora ottieni una visione olistica di esso.

L’origine di DevOps

DevOps è un perfetto esempio di sviluppo software agile. L’idea di DevOps è nata dalla necessità di stare al passo con l’aumento della velocità del software e raggiungerlo attraverso metodi agili. Nell’ultimo decennio, i grandi progressi nella cultura e nelle pratiche agili hanno messo in luce la necessità di un approccio più olistico al ciclo di vita della distribuzione del software end-to-end.

Ti starai chiedendo cosa sia lo sviluppo agile del software:

Sviluppo agile è un termine ampio per definire diverse metodologie di sviluppo software iterativo e incrementale. Le metodologie agili più diffuse sono Scrum, Kanban, Scaled Agile Framework® (SAFe®), Lean Development e Extreme Programming (XP).

I valori fondamentali e la visione di tutte queste metodologie agili sono gli stessi, ma ognuno di essi ha un approccio unico. Tutte queste metodologie incorporano iterazioni e feedback continui per perfezionare e fornire software scalabile con successo. Tutte queste metodologie implicano una pianificazione continua, test continui, integrazione continua e altre infinite forme sia per il progetto che per il software.

A differenza dei tradizionali processi in stile cascata, queste metodologie agili sono leggere e hanno una natura intrinsecamente adattabile. Una delle cose migliori di queste metodologie agili è che si concentrano tutte sull’empowerment delle persone quando si tratta di collaborare e prendere decisioni rapide insieme.

Immagine di Segue

Gli ideali di DevOps eseguono la pratica di sviluppo agile estesa per perfezionare il movimento del cambiamento del software attraverso la creazione, la convalida, l’implementazione e le diverse fasi di consegna. Consente al team interfunzionale di avere la piena proprietà del prodotto software, dalla progettazione alla produzione.

Sfide risolte da DevOps

Processo di distribuzione: le applicazioni distribuite spesso richiedono la distribuzione dei file binari e di configurazione su più server. Diventa più difficile quando si dispone di una farm di server. Diventa difficile capire cosa, come e dove distribuire. Il risultato ovvio è?

La lunga attesa per portare gli artefatti nell’ambiente successivo del percorso per vivere fa ritardare tutto come test, tempo di vita, ecc.

DevOps consente agli sviluppatori software o Web e alle operazioni IT di implementare processi in una sessione di collaborazione assolutamente irreprensibile. Ci consentirà di verificare ciò che funziona e quindi di portarlo al livello successivo con l’automazione per implementare lo sviluppo continuo. Crea anche strade per uno sviluppo più frequente.

Obiettivi DevOps

Migliora la collaborazione tra le parti interessate dalla pianificazione alla consegna e implementa l’automazione del processo di consegna per:

  • Migliora la frequenza della distribuzione
  • Ottieni tempi più rapidi per commercializzare il prodotto finale
  • Diminuisce il tasso di errore delle nuove versioni
  • Riduce il tempo di attesa tra le correzioni
  • Migliora nel frattempo ai fini del recupero

Scenario DevOps comune

L’intero software arriva al punto di incontro prima di iniziare un nuovo progetto software. Il team è composto da sviluppatori, tester, operazioni e professionisti del supporto. Il team prepara il piano per la creazione di un software completamente funzionale pronto per la distribuzione.

Ogni giorno un nuovo codice viene distribuito una volta che gli sviluppatori lo completano. La procedura di test automatizzata garantisce che il codice sia pronto per essere implementato. Una volta che il codice ottiene il segnale verde dal processo di test di automazione, viene distribuito a un numero limitato di utenti. Il codice viene monitorato per un breve periodo per garantire che non ci siano problemi imprevisti e sia stabile. Il nuovo codice viene quindi distribuito al resto degli utenti una volta che il monitoraggio finale ha dimostrato che il codice è stabile. Una parte significativa delle fasi successive alla pianificazione e allo sviluppo viene eseguita senza alcun intervento umano.

Diverse fasi della maturità DevOps

Esistono molte fasi diverse della maturità di DevOps. Ecco le frasi chiave che devi conoscere.

Sviluppo della cascata

Prima del tempo dell’integrazione continua, i team di sviluppo scrivevano un’enorme quantità di codice, quindi quelli di diversi team venivano uniti per il rilascio. Le versioni del codice erano così diverse da richiedere un gran numero di modifiche.

L’applicazione di questi numeri di modifiche richiede più di pochi mesi. Questo processo non è stato produttivo.

Integrazione continua

È una pratica per integrare rapidamente un codice appena sviluppato con il codice principale da rilasciare. Quando si tratta di rilasciare il codice, lo sviluppo continuo aiuta a risparmiare molto tempo.

DevOps non ha introdotto questo termine. L’integrazione continua è una pratica ingegneristica agile derivante dalla metodologia Extreme Programming. DevOps ha adottato questa pratica perché l’automazione è necessaria quando si tratta di eseguire con successo l’integrazione continua. L’integrazione continua è spesso la prima strada verso la maturità DevOps.

L’integrazione continua dal punto di vista di DevOps include passaggi come il controllo del codice, la sua compilazione in codice utilizzabile e l’esecuzione di alcuni dei test di convalida necessari. ‘

Consegna continua

È un’estensione dell’integrazione continua e la seconda fase DevOps.

La distribuzione continua ti consente di aggiungere ulteriore automazione e test in modo da non solo unire rapidamente il codice con la riga di codice principale, ma anche che il codice sia quasi pronto per essere distribuito senza alcun intervento umano.

È una pratica mantenere la tua base di codice in uno stato quasi pronto per la distribuzione.

Distribuzione continua

La distribuzione continua è l’evoluzione avanzata della distribuzione continua. Questa pratica ci consente di implementare tutti i modi in produzione senza alcun intervento umano.

Il team che lavora allo sviluppo continuo non distribuisce mai codice senza testarlo. Tutto il codice appena creato viene sottoposto a test automatizzati prima di entrare nella fase di produzione. Il codice viene distribuito a un numero limitato di utenti ed è presente un ciclo di feedback automatizzato che monitora la qualità e l’utilizzo prima che il codice raggiunga il livello successivo.

Un piccolo numero di aziende come Netflix, Etsy, Amazon, Pinterest, Flicker, IMVU, Google, ecc., fanno uno sviluppo continuo.

Il valore

DevOps si concentra principalmente sullo sviluppo di una cultura collaborativa e sul miglioramento dell’efficienza attraverso l’automazione con diversi strumenti DevOps. Per implementare DevOps per la tua soluzione software, devi utilizzare una combinazione di cultura e strumenti.

Cultura DevOps

DevOps è una cultura particolare che aiuta a migliorare la collaborazione, ridurre il caos, gestire le responsabilità condivise in modo migliore, implementare l’automazione, il miglioramento della qualità, la valutazione del feedback e aumentare l’automazione.

I metodi agili sono sempre stati il ​​miglior modo olistico di fornire software. Quando si tratta di misurare i progressi, il team di sviluppo agile lo fa in termini di software funzionante. Il metodo agile della cultura DevOps consente a proprietari di prodotti, sviluppatori, tester e persone UX di lavorare a stretto contatto con lo stesso obiettivo in mente.

Strumenti DevOps

Include gli strumenti per la gestione della configurazione, il test e la creazione di sistemi, lo sviluppo di applicazioni, il controllo delle versioni e il monitoraggio. Quando si tratta di implementare l’integrazione continua, la distribuzione continua e la distribuzione continua, richiedono strumenti diversi e, allo stesso tempo, utilizzano anche gli stessi strumenti. Dovrai utilizzare più strumenti man mano che avanzi nella catena di consegna.

Conosciamo alcuni degli strumenti e delle pratiche popolari.

Repository del codice sorgente: questo è un luogo in cui gli sviluppatori possono effettuare il check-in e modificare il codice. Il repository del codice sorgente gestisce varie versioni del codice che viene archiviato in modo che possa assicurarsi che gli sviluppatori scrivano reciprocamente il codice.

Git, Apache Subversion, IBM Rational, Artifactory, Nexus, Eclipse, ecc., sono alcuni dei popolari strumenti di repository di codice.

Server di compilazione: – il server di compilazione è lo strumento di automazione utilizzato per compilare il codice nel codice sorgente respiratorio nella base di codice eseguibile. Alcuni degli strumenti del server di compilazione più utilizzati sono Jenkins, SonarQube e Artifactory.

Gestione della configurazione: Puppet, Chef, Ansible, SaltStack, Run Deck, ecc. aiutano a gestire la configurazione per l’applicazione e l’infrastruttura per mantenere la coerenza tra gli ambienti.

Infrastruttura virtuale: AWS, GCP e Azure sono i primi tre provider di cloud pubblico che offrono quasi tutti i servizi di infrastruttura. Offrono API, che ti consentono di fornire l’infrastruttura e gestirla come un codice.

Conclusione

Spero che ti dia un’idea su DevOps e, se questo ti eccita, puoi provare questo corso di masterclass online.

Articolo di Payal Goyal