A cosa serve DevOps e chi sono i professionisti DevOps

Quando un'applicazione non funziona, la cosa che meno si desidera sentire dai colleghi è "il problema è dalla vostra parte". Alla fine a soffrire sono gli utenti, che non si preoccupano affatto di quale parte del team sia responsabile del guasto. La cultura DevOps è emersa proprio per unire sviluppo e supporto, raccogliendoli attorno a una responsabilità condivisa per il prodotto finale.

Quali pratiche rientrano nel concetto di DevOps e a cosa servono? Di cosa si occupano gli ingegneri DevOps e quali competenze devono possedere? Gli esperti di EPAM rispondono a queste e altre domande: Kirill Sergeev, ingegnere di sistema ed evangelista DevOps, e Igor Boyko, ingegnere di sistema senior e coordinatore di uno dei team DevOps dell'azienda.

A cosa serve DevOps e chi sono i professionisti DevOps

A cosa serve il DevOps?

In passato esisteva una barriera tra sviluppatori e supporto (cosiddetta operations). Può sembrare paradossale, ma avevano obiettivi e KPI diversi, pur perseguendo uno scopo comune. L'obiettivo dello sviluppo era implementare rapidamente i requisiti aziendali e integrarli nel prodotto funzionante. Il supporto si occupava di garantire che l'applicazione funzionasse in modo stabile, e qualsiasi cambiamento metteva a rischio questa stabilità. È evidente un conflitto di interessi – il DevOps è nato per risolvere questa situazione.

Che cos'è il DevOps?

È una domanda interessante – e controversa: nel mondo non c'è ancora un accordo definitivo su questo. In EPAM sosteniamo che il DevOps unisce tecnologie, processi e cultura della collaborazione all'interno del team. Questa integrazione mira a una continua consegna di valore agli utenti finali.

Kirill Sergeev: «Gli sviluppatori scrivono il codice, i tester lo verificano, e gli amministratori installano il prodotto finale nell'ambiente di produzione. A lungo, queste parti del team sono state piuttosto slegate, e poi è emersa l'idea di unirle in un unico processo. Così sono nate le pratiche DevOps».

È arrivato il giorno in cui sviluppatori e ingegneri di sistema si sono interessati al lavoro degli altri. La barriera tra produzione e supporto ha cominciato a svanire. Così è nato il DevOps, che include pratiche, cultura e modalità di interazione all'interno del team.

A cosa serve DevOps e chi sono i professionisti DevOps

Qual è l'essenza della cultura DevOps?

Consiste nel fatto che la responsabilità del risultato finale ricade su ciascun membro del team. La parte più interessante e complessa della filosofia DevOps è comprendere che una persona non è solo responsabile della propria fase di lavoro, ma si assume la responsabilità di come funzionerà l'intero prodotto. Il problema non è di qualcun altro — è comune, e ogni membro del team contribuisce alla sua risoluzione.

Un principio fondamentale della cultura DevOps è risolvere il problema, non limitarsi ad applicare pratiche DevOps. Inoltre, queste pratiche non vengono implementate "da un lato", ma per l'intero prodotto. Il progetto non ha bisogno di un ingegnere DevOps isolato – ha bisogno di una soluzione al problema, e il ruolo dell'ingegnere DevOps può essere distribuito tra diversi membri del team con specializzazioni diverse.

Quali sono le pratiche DevOps?

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

Igor Boiko: «Il caso ideale è quando iniziamo a utilizzare pratiche DevOps sin dall'avvio del progetto. Insieme agli architetti, pianifichiamo quale sarà il paesaggio architettonico dell'applicazione, dove si troverà e come si scalerebbe, scegliamo la piattaforma. Attualmente va di moda l'architettura a microservizi: per essa selezioniamo un sistema di orchestration: è necessario sapere come gestire ogni elemento dell'applicazione separatamente e aggiornalo indipendentemente dagli altri. Un'altra pratica è l'“infrastruttura come codice”. Questo si riferisce a un approccio in cui l'infrastruttura del progetto è creata e gestita tramite codice, piuttosto che attraverso un'interazione diretta con i server.

Successivamente, passiamo alla fase di sviluppo. Qui una delle pratiche più importanti è costruire CI/CD: è necessario aiutare gli sviluppatori ad integrare rapidamente le modifiche nel prodotto, in piccole porzioni, più frequentemente e senza problemi. CI/CD comprende sia il controllo del codice che la fusione del branch principale nella base di codice, e il deployment dell'applicazione negli ambienti di test e produzione.

Nelle fasi di CI/CD, il codice attraversa dei quality gates. Questi vengono utilizzati per verificare che il codice rilasciato dalla stazione di lavoro dello sviluppatore soddisfi i criteri di qualità stabiliti. Qui vengono inclusi test unitari e test UI. Per un rilascio del prodotto rapido, indolore e mirato, si può scegliere il tipo di deployment più adatto.

Le pratiche DevOps hanno un ruolo anche nella fase di supporto del prodotto finito. Vengono utilizzate per monitoraggio, feedback, sicurezza e implementazione di cambiamenti. Per tutte queste attività, DevOps adotta una prospettiva di miglioramento continuo. Minimizzando le operazioni ripetitive, le automatizziamo. Ciò include anche migrazioni, ampliamento dell'applicazione e manutenzione della funzionalità.

A cosa servono le pratiche DevOps?

Se scrivessimo un manuale sulle pratiche moderne di DevOps, nella sua prima pagina ci sarebbero tre punti: automazione, accelerazione dei rilasci e feedback rapido dagli utenti.

Kirill Sergeev: «La prima è l'automazione. Possiamo automatizzare tutte le interazioni nel team: scriver codice – rilasciare – verificare – installare – raccogliere feedback – tornare all'inizio. Tutto ciò avviene automaticamente.

Secondo – ridurre il tempo di rilascio e semplificare lo sviluppo. Per il cliente è sempre importante che il prodotto arrivi sul mercato il prima possibile e inizi a dare vantaggi prima dei concorrenti. Il processo di consegna del prodotto può essere continuamente migliorato: riducendo il tempo, aggiungendo punti di controllo aggiuntivi, perfezionando il monitoraggio.

Terzo – velocizzare il feedback dell'utente. Se ha osservazioni, possiamo apportare subito correzioni e aggiornare immediatamente l'applicazione».

A cosa serve DevOps e chi sono i professionisti DevOps

Come si relazionano i concetti di «ingegnere di sistema», «ingegnere di build» e «ingegnere DevOps»?

Si sovrappongono, ma appartengono a sfere leggermente diverse.

L'ingegnere di sistema in EPAM è una posizione. Possono essere di diversi livelli: da junior a chief-specialist.

L'ingegnere di build è più un ruolo che può essere ricoperto in un progetto. Ora è il termine per indicare le persone responsabili del CI/CD.

Si definisce DevOps engineer lo specialista che implementa pratiche DevOps in un progetto.

In sintesi, il professionista con il titolo di system engineer svolge nel progetto il ruolo di build engineer e si occupa dell'implementazione delle pratiche DevOps.

Di cosa si occupa esattamente un DevOps engineer?

I DevOps engineer uniscono tutte le parti che compongono un progetto. Conoscono la specificità del lavoro degli sviluppatori, dei tester e degli amministratori di sistema, e aiutano a semplificare il loro lavoro. Comprendono le esigenze e i requisiti del business, il suo ruolo nel processo di sviluppo e costruiscono il processo tenendo conto degli interessi del cliente.

Abbiamo parlato molto di automazione: essa è la priorità per i DevOps engineer. Questo è un punto molto importante che, tra l'altro, include la preparazione dell'ambiente.

Kirill Sergeev: «Prima di implementare aggiornamenti nel prodotto, devono essere testati in un ambiente esterno. Questo ambiente viene preparato dai DevOps engineer. Inoltre, promuovono la cultura DevOps nel progetto: implementano pratiche DevOps a tutti i livelli dei loro progetti. Questi tre principi: automazione, semplificazione, accelerazione – li portano ovunque possano arrivare».

Cosa deve sapere un ingegnere DevOps?

In linea di massima, deve avere competenze in diversi ambiti: programmazione, gestione dei sistemi operativi, database e sistemi di build e configurazione. A questo si aggiungono le abilità nella gestione dell'infrastruttura cloud, nei sistemi di orchestrazione e nel monitoraggio.

1. Linguaggi di programmazione

Gli ingegneri DevOps conoscono diversi linguaggi di base per l'automazione e possono, ad esempio, dire a un programmatore: «Perché non realizziamo l'installazione del codice non manualmente, ma tramite il nostro script che automatizza tutto? Per questo prepareremo un file di configurazione, facile da leggere sia per te che per noi – e potremo modificarlo in qualsiasi momento. Inoltre, potremo vedere chi, quando e perché apporta delle modifiche».

Un ingegnere DevOps può apprendere uno o più di questi linguaggi: Python, Groovy, Bash, PowerShell, Ruby, Go. Non è necessario conoscerli a un livello approfondito – basta saperne le basi, i principi della programmazione orientata agli oggetti e saper scrivere semplici script per l'automazione.

2. Sistemi operativi

Un ingegnere DevOps deve comprendere su quale server sarà installato il prodotto, in quale ambiente verrà eseguito e con quali servizi interagirà. È possibile scegliere una specializzazione nel sistema Windows o in quelli basati su Linux.

3. Sistemi di controllo versioni

Senza la conoscenza dei sistemi di controllo versioni, un ingegnere DevOps non può andare lontano. Git è uno dei sistemi più popolari al momento.

4. Provider cloud

AWS, Google, Azure – soprattutto se parliamo di un approccio Windows.

Kirill Sergeev: «I provider cloud ci offrono server virtuali, che si integrano perfettamente con le pratiche CI/CD.

L'installazione di dieci server fisici richiede circa un centinaio di operazioni manuali. Ogni server deve essere avviato manualmente, installata e configurata l'operating system richiesta, il nostro applicativo deve essere installato su questi dieci server, e poi tutto deve essere verificato dieci volte. I servizi cloud sostituiscono questa procedura con dieci righe di codice, e un buon ingegnere DevOps deve saperli usare. Così risparmia tempo, energia e denaro – sia per il cliente che per l'azienda».

5. Sistemi di orchestrazione: Docker e Kubernetes

Kirill Sergeev: «I server virtuali sono suddivisi in contenitori, ciascuno dei quali può ospitare la nostra applicazione. Quando ci sono molti contenitori, è necessario gestirli: accendere uno, spegnere un altro, eseguire backup. Questo diventa un compito piuttosto complesso, per il quale è necessaria una soluzione di orchestrazione.

In passato, ogni applicazione era gestita da un server dedicato: qualsiasi modifica nel suo funzionamento poteva influire sul corretto funzionamento dell'applicazione. Grazie ai contenitori, le applicazioni diventano isolate e vengono eseguite separatamente, ognuna sulla propria macchina virtuale. Se si verifica un guasto, non è necessario perdere tempo a cercarne la causa. È più semplice distruggere il vecchio contenitore e aggiungere un nuovo contenitore.»

6. Sistemi di configurazione: Chef, Ansible, Puppet

Quando è necessario gestire un intero parco server, si devono eseguire molte operazioni ripetitive. Questo richiede tempo ed è complicato, e il lavoro manuale aumenta il rischio di errore. Qui entrano in gioco i sistemi di configurazione. Con il loro aiuto, si crea uno script che è facilmente leggibile da programmatori, ingegneri DevOps e amministratori di sistema. Questo script facilita l'esecuzione automatica delle stesse operazioni sui server. Di conseguenza, le operazioni manuali (e quindi gli errori) diventano meno frequenti.

Quale carriera può costruire un ingegnere DevOps?

È possibile svilupparsi sia orizzontalmente che verticalmente.

Igor Boiko: «Dal punto di vista dello sviluppo orizzontale, gli ingegneri DevOps hanno attualmente le prospettive più ampie. Tutto è in continua evoluzione e le competenze possono essere ampliate in molte direzioni diverse: dal controllo di versione al monitoraggio, dalla gestione della configurazione ai database.

Si può diventare architetti di sistema, se il dipendente è interessato a comprendere come funziona un'applicazione in tutte le fasi del suo ciclo di vita – dallo sviluppo al supporto».

Come diventare un ingegnere DevOps?

  1. Leggi i libri "Progetto 'Fenice'" e DevOps Handbook. Sono veri e propri pilastri della filosofia DevOps, e il primo è un romanzo di finzione.
  2. Studia le tecnologie della lista sopra: da solo o attraverso corsi online.
  3. Unisciti come ingegnere DevOps a un progetto open source.
  4. Pratica e proponi pratiche DevOps nei tuoi progetti personali e lavorativi.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster