Esplorare le pratiche DevOps

Completato

L'incorporazione di DevOps nel ciclo di vita dell'applicazione comporta l'implementazione di una serie di procedure DevOps. La possibilità di ottimizzare i vantaggi di DevOps dipende molto dalla misura in cui questa implementazione ha esito positivo. In questo scenario di esempio, l'organizzazione dovrà introdurre modifiche significative al modello operativo, a partire dalla promozione della collaborazione e della comunicazione tra i team di sviluppo e operazioni, nonché l'investimento nel controllo della versione, automazione, integrazione continua, test continui, recapito continuo e monitoraggio continuo. Queste procedure verranno esaminate in questa unità.

Diagramma che illustra le procedure DevOps.

Controllo della versione

Il controllo della versione è la pratica di gestire gli aggiornamenti al codice archiviandolo in repository designati, monitorando le revisioni e mantenendo la cronologia delle modifiche. Ciò facilita le revisioni del codice e la possibilità di eseguire il ripristino da errori di programmazione. Inoltre, i sistemi di controllo della versione (VCS) come Git consentono la collaborazione nella creazione di codice tra più sviluppatori tramite funzionalità come la clonazione del repository, le richieste pull, le unioni delle modifiche al codice, la risoluzione dei conflitti e il supporto per il rollback. L'uso del controllo della versione è una procedura fondamentale di DevOps. Il controllo della versione è anche un prerequisito per tali procedure, ad esempio l'integrazione continua e l'infrastruttura come codice.

Integrazione continua (CI) e test continui

Una delle procedure di base di DevOps è l'automazione. In questo caso, l'automazione si applica al processo di unione delle modifiche al codice, al test e alla creazione di artefatti risultanti, il prima possibile nel ciclo di vita dell'applicazione. L'intento è quello di rilevare eventuali problemi potenziali nella fase di sviluppo, in quanto ciò riduce al minimo lo sforzo e i costi necessari per risolverli. I test automatizzati convalidano che le modifiche al codice non hanno introdotto errori o problemi di regressione.

Distribuzione continua (CD)

Il recapito continuo automatizza il processo di distribuzione degli artefatti realizzati come parte dell'integrazione continua, rendendoli disponibili ai loro consumatori. CD automatizza la progressione di questi artefatti in ambienti diversi, ad esempio test, gestione temporanea e produzione. L'integrazione continua e la consegna continua (CI/CD) costituiscono un processo di sviluppo e consegna di software unificato, semplificato ed end-to-end.

Monitoraggio continuo

Il monitoraggio continuo offre visibilità in tempo reale automatizzato sull'integrità e sulle prestazioni dell'intero stack di applicazioni, inclusa l'infrastruttura sottostante. Questa operazione viene eseguita tramite la raccolta di dati di telemetria, inclusi log e metriche, e avvisi personalizzabili che recapitano notifiche sul comportamento anomalo, semplificando le azioni di correzione delle richieste.

Sicurezza continua (DevSecOps)

La sicurezza è una parte essenziale di ogni fase del ciclo di vita dell'applicazione basata su DevOps, motivo per cui si conia il termine DevSecOps. DevSecOps è un'estensione di DevOps, con particolare attenzione all'integrazione di procedure di sicurezza in ogni fase, dalla pianificazione, al codice, ai test e alla distribuzione, alle operazioni.

Infrastruttura distribuita come codice (IaC)

L'infrastruttura come codice è un componente integrante delle procedure moderne di sviluppo e operazioni del software. Prevede l'uso di metodi di programmazione per effettuare il provisioning e gestire i servizi dell'infrastruttura. IaC definisce componenti dell'infrastruttura, ad esempio server, dispositivi di rete e database usando il codice. Questo codice si trova in genere in un vcs, che gestisce e tiene traccia delle modifiche apportate alle configurazioni dell'infrastruttura. L'uso del codice facilita il provisioning e la configurazione automatizzati dell'infrastruttura, migliorando l'efficienza, la coerenza e la scalabilità. Inoltre, L'IaC può essere (e spesso è) integrato con CI/CD, producendo una strategia completa per la distribuzione di software combinando il provisioning dell'infrastruttura, con la compilazione, il test e la distribuzione delle applicazioni in una sequenza continua e completamente automatizzata.