Un'introduzione per principianti ai principi DevOps

0
127
Shutterstock/BoVLD

DevOps è una parola d'ordine che viene comunemente lanciata in giro—in ​​realtà, è un insieme di principi progettati per semplificare e governare l'intero processo di sviluppo, dal cervello dei tuoi programmatori ai tuoi server.< /p>

Le basi

La maggior parte dei team può probabilmente dividere i propri sviluppatori in due categorie principali:

  • Sviluppatori, che gestiscono l'aggiornamento della base di codice, la correzione dei bug e la programmazione completa. Puoi anche includere altri ruoli, come web designer e UI designer in questa categoria. In generale, include chiunque sia coinvolto nella creazione del tuo prodotto.
  • SysAdmins o il “Operations Team.” Queste persone gestiscono l'aggiornamento dei server con il nuovo codice, la gestione dell'infrastruttura server sia pubblica che interna e tutto intorno mantenendo tutto attivo e funzionante.

Per dirla semplicemente, DevOps consiste nell'integrare insieme questi due team (da qui il portmanteau di un nome). Non trasformerà i tuoi sviluppatori in amministratori di sistema, o viceversa, ma dovrebbe aiutarli a lavorare insieme.

Ogni aspetto e fase è completata da strumenti che rendono più semplice l'intero processo. DevOps è più di semplici strumenti e automazione e implementa una serie di “strumenti DevOps” non farà lavorare automaticamente il tuo team due volte più velocemente, ma questi strumenti sono una parte importante del processo e sarebbe difficile essere altrettanto efficienti senza alcuni di essi.

Mentre ci sono molte altre parole d'ordine gettate sotto l'ombrello di “DevOps,” il concetto di base è piuttosto semplice. Quando un team funziona correttamente, DevOps generalmente scorre in questo modo:

Shutterstock/Ribkhan

Per spiegare, inizieremo con la fase di monitoraggio. Ciò implica tenere d'occhio i tuoi server, guardare le analisi, analizzare i log e identificare i problemi con la tua base di codice. Sebbene gran parte di questo sia correlato al codice, molto ricade anche sul lato commerciale delle cose. Stai raggiungendo efficacemente i tuoi obiettivi? I tuoi clienti sono contenti? Questa fase consiste nello scoprire cosa c'è che non va in modo da poter fissare obiettivi adeguati. Gli strumenti di monitoraggio più diffusi includono Nagios, AWS CloudWatch e software di analisi come Google Analytics.

Forse ricevi un ticket direttamente da un cliente e inizi dalla fase di pianificazione. Qui è dove ti siederai con i tuoi sviluppatori principali e discuterai cosa è necessario fare per completare un ticket. Se utilizzi un software come Jira, probabilmente suddividerai un ticket di grandi dimensioni in singole storie e problemi che possono essere monitorati più facilmente e assegnati a singoli sviluppatori. Se stai pianificando uno sprint di codice per la prossima settimana o due, ti consigliamo di avere il tuo piano chiaramente definito per ridurre il tempo speso a ripetere il codice.

Pubblicità

Invece di testare e creare solo una volta quando tutto è finito, in un ambiente DevOps, ogni sviluppatore invierà idealmente le modifiche al controllo del codice sorgente più volte al giorno, ogni volta che i problemi sono completi o viene raggiunto un traguardo minore. Ciò consente alle fasi di compilazione e test di iniziare presto e assicurarsi che nessuno sviluppatore si allontani troppo dall'HEAD del controllo del codice sorgente principale. Questa fase riguarda principalmente la corretta gestione del controllo del codice sorgente, quindi disporre di un servizio git efficace come GitHub, Gitlab o BitBucket è cruciale per mantenere l'integrazione continua senza intoppi.

Non è necessario distribuire immediatamente ogni commit alla produzione, ma le distribuzioni rapide automatizzate sono una parte importante della capacità di spingere i rilasci rapidi. Inoltre, riduce lo stress del tuo team operativo, consentendo loro di concentrarsi su cose più importanti rispetto all'aggiornamento manuale dei server con il nuovo codice.

Una volta implementate le nuove modifiche, il ciclo ricomincia. Forse la nuova funzionalità aggiunta sta causando il lavoro straordinario del server del database di staging e potrebbe dover essere contrassegnato per la revisione delle prestazioni e corretto prima della distribuzione in produzione. Se tutto scorre correttamente, DevOps smette di essere una serie fissa di passaggi e diventa semplicemente una cultura che tutti seguono in modo naturale.

Integrazione continua/pipeline di distribuzione continua

h2>

L'automazione e gli strumenti sono una parte importante di qualsiasi ambiente DevOps. Forse lo strumento più grande da avere è una pipeline di integrazione continua/consegna continua (CI/CD). Si tratta di un processo automatizzato che inizia con il codice sorgente e gestisce il processo di creazione, test e distribuzione sui server.

CodePipeline di AWS ne è un buon esempio. Ogni volta che viene rilevata una modifica nel controllo del codice sorgente (GitHub, BitBucket o AWS CodeCommit), viene inviata ad AWS CodeBuild per la creazione e il test. In alternativa, Jenkins viene utilizzato abbastanza spesso per gestire questa fase di compilazione.

Di solito, una volta completata una build, ti consigliamo di inviarla a un ambiente di test prima di passare direttamente alla produzione. Tuttavia, l'automazione delle distribuzioni sia sui server di test che su quelli di produzione accelererà notevolmente i tempi di iterazione. Nella pipeline di AWS, questo è gestito da CodeDeploy. Jenkins può anche gestire l'implementazione, così come software come Ansible.

Tutto sommato, una pipeline CI/CD può automatizzare la maggior parte del flusso DevOps, dalla build all'implementazione, rendendolo un elemento cruciale per qualsiasi team cercando di lavorare in modo efficiente.