Perché è necessario DevOps e chi sono gli specialisti DevOps?

Quando un'applicazione non funziona, l'ultima cosa che vuoi sentire dai tuoi colleghi è la frase "il problema è dalla tua parte". Di conseguenza, gli utenti soffrono, e a loro non importa quale parte del team sia responsabile del guasto. La cultura DevOps è emersa proprio per riunire sviluppo e supporto attorno a una responsabilità condivisa per il prodotto finale.

Quali pratiche sono incluse nel concetto di DevOps e perché sono necessarie? Cosa fanno gli ingegneri DevOps e cosa dovrebbero essere in grado di fare? A queste e ad altre domande rispondono gli esperti di EPAM: Kirill Sergeev, ingegnere di sistema e sostenitore di DevOps, e Igor Boyko, ingegnere di sistema leader e coordinatore di uno dei team DevOps dell'azienda.

Perché è necessario DevOps e chi sono gli specialisti DevOps?

Perché è necessario DevOps?

In precedenza esisteva una barriera tra sviluppatori e supporto (le cosiddette operazioni). Sembra paradossale, ma avevano obiettivi e KPI diversi, sebbene facessero la stessa cosa. L'obiettivo dello sviluppo era implementare i requisiti aziendali il più rapidamente possibile e aggiungerli a un prodotto funzionante. Il supporto era responsabile di garantire che l'applicazione funzionasse in modo stabile e qualsiasi modifica mettesse a rischio la stabilità. C'è un conflitto di interessi: DevOps sembra risolverlo.

Cos'è DevOps?

È una bella domanda – e anche controversa: il mondo non è ancora finalmente d’accordo su questo. EPAM ritiene che DevOps combini tecnologie, processi e una cultura dell'interazione all'interno di un team. Questa associazione mira a fornire continuamente valore agli utenti finali.

Kirill Sergeev: “Gli sviluppatori scrivono il codice, i tester lo esaminano e gli amministratori distribuiscono il prodotto finale in produzione. Per molto tempo queste parti del team sono state un po' disperse, poi è nata l'idea di unirle attraverso un processo comune. Ecco come sono apparse le pratiche DevOps.”

Arrivò il giorno in cui gli sviluppatori e gli ingegneri di sistema iniziarono a interessarsi al lavoro degli altri. La barriera tra produzione e sostegno cominciò a scomparire. È così che è emerso DevOps, che include pratiche, cultura e interazione del team.

Perché è necessario DevOps e chi sono gli specialisti DevOps?

Qual è l'essenza della cultura DevOps?

Il fatto è che la responsabilità del risultato finale spetta a ciascun membro della squadra. La cosa più interessante e difficile nella filosofia DevOps è capire che una persona specifica non è solo responsabile della propria fase di lavoro, ma è responsabile di come funzionerà l'intero prodotto. Il problema non risiede da parte di nessuno: è condiviso e ogni membro del team contribuisce a risolverlo.

La cosa più importante in una cultura DevOps è risolvere il problema, non limitarsi ad applicare le pratiche DevOps. Inoltre, queste pratiche non vengono implementate “dalla parte di qualcuno”, ma attraverso l’intero prodotto. Un progetto non ha bisogno di un ingegnere DevOps di per sé: ha bisogno di una soluzione a un problema e il ruolo di un ingegnere DevOps può essere distribuito tra diversi membri del team con diverse specializzazioni.

Quali sono i tipi di pratiche DevOps?

Le pratiche DevOps coprono tutte le fasi del ciclo di vita del software.

Igor Boyko: “Il caso ideale è quando iniziamo a utilizzare le pratiche DevOps fin dall’inizio del progetto. Insieme agli architetti, pianifichiamo che tipo di paesaggio architettonico avrà l'applicazione, dove sarà posizionata e come scalarla, e scegliamo una piattaforma. Al giorno d'oggi va di moda l'architettura a microservizi: per essa scegliamo un sistema di orchestrazione: devi essere in grado di gestire ogni elemento dell'applicazione separatamente e aggiornarlo indipendentemente dagli altri. Un’altra pratica è “l’infrastruttura come codice”. Questo è il nome di un approccio in cui l'infrastruttura del progetto viene creata e gestita utilizzando il codice, anziché attraverso l'interazione diretta con i server.

Successivamente passiamo alla fase di sviluppo. Una delle pratiche più importanti in questo caso è la creazione di CI/CD: è necessario aiutare gli sviluppatori a integrare le modifiche nel prodotto rapidamente, in piccole porzioni, più spesso e in modo indolore. CI/CD copre la revisione del codice, il caricamento del master nella codebase e la distribuzione dell'applicazione in ambienti di test e di produzione.

Nelle fasi CI/CD, il codice passa attraverso i controlli di qualità. Con il loro aiuto controllano che il codice che esce dalla postazione dello sviluppatore soddisfi i criteri di qualità specificati. Qui vengono aggiunti i test delle unità e dell'interfaccia utente. Per una distribuzione del prodotto rapida, semplice e mirata, puoi scegliere il tipo di distribuzione appropriato.

I professionisti DevOps hanno un ruolo anche nella fase di supporto del prodotto finito. Vengono utilizzati per il monitoraggio, il feedback, la sicurezza e l'introduzione di modifiche. DevOps esamina tutte queste attività da una prospettiva di miglioramento continuo. Riduciamo al minimo le operazioni ripetitive e le automatizziamo. Ciò include anche migrazioni, espansione delle applicazioni e supporto delle prestazioni."

Quali sono i vantaggi delle pratiche DevOps?

Se stessimo scrivendo un libro di testo sulle moderne pratiche DevOps, ci sarebbero tre punti nella prima pagina: automazione, accelerazione dei rilasci e feedback rapido da parte degli utenti.

Kirill Sergeev: “La prima cosa è l’automazione. Possiamo automatizzare tutte le interazioni nel team: scrivere il codice - implementarlo - controllarlo - installarlo - raccogliere feedback - tornare all'inizio. Tutto questo è automatico.

Il secondo è accelerare il rilascio e persino semplificare lo sviluppo. È sempre importante per il cliente che il prodotto entri nel mercato il prima possibile e inizi a fornire vantaggi prima rispetto agli analoghi della concorrenza. Il processo di consegna del prodotto può essere migliorato all'infinito: riducendo i tempi, aggiungendo ulteriori segni di controllo, migliorando il monitoraggio.

Il terzo è l'accelerazione del feedback degli utenti. Se ha commenti, possiamo immediatamente apportare modifiche e aggiornare immediatamente l’applicazione.”

Perché è necessario DevOps e chi sono gli specialisti DevOps?

Come si relazionano i concetti di “ingegnere di sistema”, “ingegnere di costruzione” e “ingegnere DevOps”?

Si sovrappongono, ma appartengono ad aree leggermente diverse.

Ingegnere di sistema presso EPAM è una posizione. Sono disponibili in diversi livelli: da junior a capo specialista.

Un ingegnere di costruzione è più un ruolo che può essere svolto su un progetto. Ecco come vengono chiamate le persone responsabili di CI/CD.

Un ingegnere DevOps è uno specialista che implementa le pratiche DevOps su un progetto.

Se riassumiamo il tutto, otteniamo qualcosa del genere: una persona nella posizione di ingegnere di sistema svolge il ruolo di ingegnere di costruzione in un progetto ed è coinvolta nell'implementazione delle pratiche DevOps lì.

Cosa fa esattamente un ingegnere DevOps?

Gli ingegneri DevOps mettono insieme tutti i pezzi che compongono un progetto. Conoscono le specifiche del lavoro di programmatori, tester, amministratori di sistema e aiutano a semplificare il loro lavoro. Comprendono le esigenze e i requisiti dell'azienda, il suo ruolo nel processo di sviluppo e costruiscono il processo tenendo conto degli interessi del cliente.

Abbiamo parlato molto di automazione: questo è ciò di cui si occupano innanzitutto gli ingegneri DevOps. Questo è un punto molto importante che, tra le altre cose, include la preparazione dell'ambiente.

Kirill Sergeev: “Prima di implementare gli aggiornamenti nel prodotto, è necessario testarli in un ambiente di terze parti. È preparato dagli ingegneri DevOps. Instillano una cultura DevOps nel progetto nel suo insieme: introducono pratiche DevOps a tutti i livelli dei loro progetti. Questi tre principi: automazione, semplificazione, accelerazione, portano ovunque possano arrivare”.

Cosa dovrebbe sapere un ingegnere DevOps?

In generale, deve avere conoscenze in diverse aree: programmazione, lavoro con sistemi operativi, database, sistemi di assemblaggio e configurazione. A questi si aggiunge la capacità di lavorare con infrastrutture cloud, sistemi di orchestrazione e monitoraggio.

1. Linguaggi di programmazione

Gli ingegneri DevOps conoscono diversi linguaggi di base per l'automazione e possono, ad esempio, dire a un programmatore: “Che ne dici di installare il codice non a mano, ma utilizzando il nostro script, che automatizza tutto? Prepareremo un file di configurazione per questo, sarà conveniente sia per te che per noi leggerlo e potremo modificarlo in qualsiasi momento. Vedremo anche chi, quando e perché apporta modifiche”.

Un ingegnere DevOps può apprendere uno o più di questi linguaggi: Python, Groovy, Bash, Powershell, Ruby, Go. Non è necessario conoscerli a livello profondo: sono sufficienti le basi della sintassi, i principi OOP e la capacità di scrivere semplici script per l'automazione.

2. Sistemi operativi

Un ingegnere DevOps deve capire su quale server verrà installato il prodotto, in quale ambiente verrà eseguito e con quali servizi interagirà. Puoi scegliere di specializzarti in Windows o nella famiglia Linux.

3. Sistemi di controllo della versione

Senza la conoscenza di un sistema di controllo della versione, un ingegnere DevOps non è da nessuna parte. Git è uno dei sistemi più popolari al momento.

4. Fornitori di servizi cloud

AWS, Google, Azure, soprattutto se parliamo della direzione di Windows.

Kirill Sergeev: “I fornitori di servizi cloud ci forniscono server virtuali che si adattano perfettamente a CI/CD.

L'installazione di dieci server fisici richiede circa un centinaio di operazioni manuali. Ogni server deve essere avviato manualmente, installato e configurato il sistema operativo richiesto, installata la nostra applicazione su questi dieci server e quindi ricontrollato tutto dieci volte. I servizi cloud sostituiscono questa procedura con dieci righe di codice e un buon ingegnere DevOps dovrebbe essere in grado di operare con essi. Ciò fa risparmiare tempo, fatica e denaro, sia per il cliente che per l’azienda.”

5. Sistemi di orchestrazione: Docker e Kubernetes

Kirill Sergeev: “I server virtuali sono divisi in contenitori, in ognuno dei quali possiamo installare la nostra applicazione. Quando i contenitori sono tanti, è necessario gestirli: accenderne uno, spegnerne un altro, fare dei backup da qualche parte. Ciò diventa piuttosto complesso e richiede un sistema di orchestrazione.

In precedenza, ciascuna applicazione veniva gestita da un server separato: eventuali modifiche al suo funzionamento potevano influire sulla funzionalità dell'applicazione. Grazie ai contenitori, le applicazioni vengono isolate e vengono eseguite separatamente, ciascuna sulla propria macchina virtuale. Se si verifica un guasto, non è necessario perdere tempo a cercarne la causa. È più facile distruggere il vecchio contenitore e aggiungerne uno nuovo."

6. Sistemi di configurazione: Chef, Ansible, Puppet

Quando è necessario mantenere un'intera flotta di server, è necessario eseguire molte operazioni dello stesso tipo. È lungo e difficile e il lavoro manuale aumenta anche la possibilità di errore. È qui che i sistemi di configurazione vengono in soccorso. Con il loro aiuto, creano uno script di facile lettura per programmatori, ingegneri DevOps e amministratori di sistema. Questo script aiuta a eseguire automaticamente le stesse operazioni sui server. Ciò riduce le operazioni manuali (e quindi gli errori).

Che tipo di carriera può costruire un ingegnere DevOps?

Puoi svilupparlo sia in orizzontale che in verticale.

Igor Boyko: “Dal punto di vista dello sviluppo orizzontale, gli ingegneri DevOps hanno ora le prospettive più ampie. Tutto è in continua evoluzione e puoi sviluppare competenze in svariati ambiti: dai sistemi di controllo delle versioni al monitoraggio, dalla gestione delle configurazioni ai database.

Puoi diventare un architetto di sistema se un dipendente è interessato a capire come funziona un'applicazione in tutte le fasi del suo ciclo di vita, dallo sviluppo al supporto."

Come diventare un ingegnere DevOps?

  1. Leggi il Manuale del progetto Phoenix e DevOps. Questi sono i veri pilastri della filosofia DevOps, essendo il primo un'opera di finzione.
  2. Impara le tecnologie dall'elenco sopra: da solo o attraverso corsi online.
  3. Partecipa come ingegnere DevOps per un progetto open source.
  4. Esercitati e offri pratiche DevOps sui tuoi progetti personali e lavorativi.

Fonte: habr.com

Aggiungi un commento