Close

Monitoraggio DevOps

Aumentare la consapevolezza durante ogni fase della pipeline di distribuzione

Foto di Krishna Sai
Krishna Sai

Head of Engineering, IT Solutions


Con DevOps, l'aspettativa è di accelerare lo sviluppo, testare in modo regolare ed effettuare rilasci più frequenti, il tutto migliorando la qualità e riducendo i costi. Per raggiungere questo obiettivo, gli strumenti di monitoraggio DevOps forniscono funzionalità di automazione e misurazione estesa durante l'intero ciclo di vita: pianificazione, sviluppo effettivo, integrazione, test, distribuzione e operazioni.

Il moderno ciclo di vita di sviluppo del software è più veloce che mai, con più fasi di sviluppo e test che avvengono contemporaneamente. Questo ha generato DevOps, che rappresenta un cambiamento da team isolati che eseguono funzioni di sviluppo, test e operazioni a un team unificato che esegue tutte le funzioni e adotta un modello "You Build It, You Run It" (YBIYRI).

Poiché le modifiche frequenti al codice sono ormai la norma, i team di sviluppo hanno bisogno del monitoraggio DevOps, che fornisce una visione completa e in tempo reale dell'ambiente di produzione.

Cos'è il monitoraggio DevOps?


Diagramma del monitoraggio rispetto all'osservabilità

I team DevOps monitorano l'intero ciclo di vita di sviluppo, dalle fasi di pianificazione, sviluppo vero e proprio, integrazione e test fino a quelle della distribuzione e delle operazioni. Comporta una visione completa e in tempo reale dello stato delle applicazioni, dei servizi e dell'infrastruttura nell'ambiente di produzione. Funzioni come lo streaming in tempo reale, la riproduzione storica e le visualizzazioni sono componenti cruciali del monitoraggio delle applicazioni e dei servizi.

Icona di anelli interconnessi
scopri la soluzione

Semplifica la risposta e la gestione degli imprevisti

Icona strumenti
materiale correlato

Scopri di più sugli strumenti DevOps

Il monitoraggio DevOps consente ai team di rispondere in modo rapido e automatico a qualsiasi riduzione della qualità dell'esperienza del cliente. Soprattutto, consente loro di adottare l'approccio "shift-left" e di intervenire già nelle prime fasi dello sviluppo per ridurre al minimo le modifiche dovute a problemi nell'ambiente di produzione. Un esempio è dato dalla migliore strumentazione del software per rilevare e rispondere agli errori, sia manualmente su chiamata che automaticamente ogni qualvolta sia possibile.

Monitoraggio DevOps rispetto a osservabilità


Se si considera il lato sinistro del simbolo dell'infinito come il lato prodotto e il lato destro come lato operativo, il responsabile del prodotto che inserisce una nuova funzione in produzione è interessato a vedere in che modo il progetto si suddivide in task e storie utente. Lo sviluppatore sul lato sinistro del progetto deve capire come spostare la funzionalità in produzione, includendo ticket di progetto, storie utenti e dipendenze. Se gli sviluppatori aderiscono al principio DevOps "You Build It, You Run It", sono interessati anche alla risoluzione degli imprevisti.

Passando al lato operativo del ciclo di vita, il tecnico responsabile dell'affidabilità del sito deve comprendere i servizi che possono essere misurati e monitorati, in modo da poter risolvere gli eventuali problemi che si verificano. Se non si dispone di una toolchain DevOps che unisce tutti questi processi, il risultato è un ambiente caotico, disordinato e non correlato. Se si dispone di una toolchain adeguatamente integrata, è possibile ottenere un contesto migliore di ciò che sta avvenendo.

Immagine del ciclo DevOps

L'importanza del monitoraggio DevOps


Un approccio DevOps estende il monitoraggio continuo negli ambienti di staging, test e persino di sviluppo. Le ragioni sono molteplici.

Le modifiche frequenti al codice richiedono visibilità

Le modifiche frequenti al codice basate su continuous integration e continuous deployment hanno aumentato il ritmo delle modifiche e reso gli ambienti di produzione sempre più complessi. Con l'ingresso di microservizi e micro front-end nei moderni ambienti nativi per il cloud, ci sono centinaia e talvolta migliaia di carichi di lavoro diversi che operano in produzione, ciascuno con requisiti operativi diversi in termini di scalabilità, latenza, ridondanza e sicurezza.

Ciò ha determinato la necessità di una maggiore visibilità. I team hanno l'esigenza non solo di rilevare e rispondere alla riduzione della qualità nell'esperienza cliente, ma anche di farlo in modo estremamente tempestivo.

Collaborazione automatizzata

DevOps richiede implicitamente una maggiore collaborazione tra le funzioni di sviluppo, operative e aziendali a livello di team. Tuttavia, la collaborazione può essere ostacolata dalla mancanza di integrazione tra gli strumenti, che determina problemi di coordinamento con team diversi; quest'aspetto è emerso in misura preponderante nel sondaggio DevOps di Atlassian.

Puoi automatizzare la collaborazione attraverso pratiche come l'acquisizione di una vista completa della pipeline di sviluppo all'interno dell'editor. Puoi anche impostare regole di automazione che ascoltano i commit o le pull request, quindi aggiornare lo stato dei ticket Jira correlati e inviare messaggi al canale Slack del team. Inoltre, puoi sfruttare le informazioni dettagliate che forniscono report di scansione, test e analisi.

Screenshot della collaborazione automatizzata

Sperimentazione

La necessità di ottimizzare i prodotti per rispondere alle esigenze dei clienti, guidata dalla personalizzazione e da canali di conversione ottimizzati, porta a una sperimentazione costante. Gli ambienti di produzione possono eseguire centinaia di esperimenti e flag delle funzioni, il che rende difficile per i sistemi di monitoraggio comunicare la causa di una riduzione nella qualità dell'esperienza.

I requisiti più elevati per servizi e applicazioni sempre attivi, nonché gli impegni rigorosi degli SLA, possono aumentare la vulnerabilità alle applicazioni. I team di sviluppo devono assicurarsi di definire obiettivi dei livelli di servizio (SLO) e indicatori dei livelli di servizio (SLI) che siano monitorati e utilizzati per intraprendere delle azioni.

Gestione delle modifiche

Poiché la maggior parte delle interruzioni di produzione è causata dalle modifiche, la gestione delle modifiche è essenziale, soprattutto per le applicazioni mission-critical, come quelle dei settori finanziario e sanitario. È necessario determinare i rischi associati alle modifiche e automatizzare i flussi di approvazione in base al rischio associato alla modifica.

Far fronte a queste complessità richiede una strategia di comprensione e monitoraggio completa, che comporta la definizione e l'adozione di pratiche di monitoraggio e la disponibilità di una serie di strumenti di monitoraggio ricchi di funzioni, avanzati e flessibili che sono fondamentali per i processi di sviluppo.

Monitoraggio di sistemi dipendenti

I sistemi distribuiti sono diventati più comuni, spesso composti da molti servizi più piccoli e interaziendali. Ora i team devono non solo monitorare i sistemi che creano, ma anche monitorare e gestire le prestazioni e la disponibilità dei sistemi dipendenti. Amazon Web Services (AWS) offre oltre 175 prodotti e servizi, tra cui elaborazione, storage, rete, database, analisi, distribuzione, gestione, dispositivi mobili e strumenti per sviluppatori. Se crei la tua applicazione su AWS, devi assicurarti di scegliere il servizio giusto per le esigenze della tua applicazione. Sono inoltre necessari strumenti e strategie per tracciare gli errori in modo distribuito e gestire i guasti dei sistemi dipendenti.

Funzionalità chiave del monitoraggio DevOps


In linea con la tradizione DevOps, lo sviluppo e l'implementazione di una strategia di monitoraggio richiedono anche attenzione verso le pratiche fondamentali e una serie di strumenti.

Test Shift-Left

I test Shift-Left eseguiti all'inizio del ciclo di vita aiutano ad aumentare la qualità, abbreviare i cicli di test e ridurre gli errori. Per i team DevOps, è importante estendere le pratiche di test shift-left per monitorare lo stato degli ambienti di pre-produzione. Questo garantisce che il monitoraggio venga implementato tempestivamente e con una frequenza elevata, al fine di mantenere la continuità durante la produzione e preservare la qualità degli avvisi di monitoraggio. I test e il monitoraggio dovrebbero operare in modo sinergico. Il monitoraggio, se eseguito tempestivamente, consente di valutare il comportamento dell'applicazione nei percorsi e nelle transazioni degli utenti chiave. Ciò consente inoltre di identificare le deviazioni in termini di prestazioni e disponibilità prima della distribuzione in produzione.

Gestione degli avvisi e degli imprevisti

In un mondo nativo per il cloud gli imprevisti sono un dato di fatto tanto quanto i bug nel codice. Questi imprevisti includono guasti hardware e di rete, configurazione errata, esaurimento delle risorse, incoerenza dei dati e bug del software. I team DevOps dovrebbero accettare gli imprevisti e rispondervi con meccanismi di monitoraggio di alta qualità.

Alcune delle best practice utili in quest'ambito sono le seguenti:

  • Creazione di una cultura della collaborazione, in cui il monitoraggio viene utilizzato durante lo sviluppo insieme a funzioni/funzionalità e test automatizzati.
  • Creazione, in fase di sviluppo, di avvisi appropriati e di alta qualità nel codice che riducono al minimo il tempo medio di rilevamento (MTTD) e il tempo medio di isolamento (MTTI).
  • Creazione di sistemi di monitoraggio per garantire che i servizi dipendenti funzionino come previsto.
  • Allocazione del tempo necessario per creare le dashboard richieste e per formare tutti i membri del team sul loro utilizzo.
  • Pianificazione di "strategie di azione" per il servizio per garantire che i sistemi monitoraggio funzionino come previsto e rilevare i sistemi di monitoraggio mancanti.
  • Pianificazione, durante gli sprint, della chiusura di azioni delle precedenti revisioni degli imprevisti, in particolare quelle relative alla creazione di sistemi di monitoraggio mancanti e all'automazione.
  • Creazione di rilevatori per la sicurezza (aggiornamenti/patch/rotazione delle credenziali).
  • Adozione di un approccio che prevede la misurazione e il monitoraggio di ogni aspetto, in cui l'automazione determina la risposta agli avvisi rilevati.

Strumenti di monitoraggio DevOps


A integrazione di una serie di pratiche di monitoraggio efficaci sono disponibili strumenti avanzati in linea con la cultura DevOps/YBIYRI. Occorre, pertanto, prestare molta attenzione all'identificazione e all'implementazione degli strumenti di monitoraggio, oltre ai ben noti strumenti per sviluppatori di repository di codice, IDE, debugger, monitoraggio dei difetti, strumenti di continuous integration e strumenti di distribuzione.

Un unico pannello di controllo offre una visione completa dei vari servizi, applicazioni e dipendenze infrastrutturali, non solo nella produzione ma anche nella fase di staging. Ciò consente di eseguire il provisioning, acquisire, taggare, visualizzare e analizzare lo stato di integrità di ambienti distribuiti complessi. Ad esempio, Micros, lo strumento PaaS interno di Atlassian, include uno strumento chiamato Microscope che fornisce tutte le informazioni sui servizi in modo conciso e individuabile.

Screenshot di un unico pannello di controllo

Il monitoraggio delle prestazioni delle applicazioni è essenziale per garantire che, oltre alle metriche di base del sistema come l'utilizzo della CPU e della memoria, siano monitorati anche gli indicatori di prestazioni specifici dell'applicazione, come il tempo di caricamento di una pagina, le latenze dei servizi a valle o le transizioni. Strumenti come SignalFX e NewRelic sono eccellenti per osservare i dati delle metriche in tempo reale.

Durante lo sviluppo, implementa diversi tipi di monitoraggio, inclusi quelli sintetici e relativi a errori, transazioni, heartbeat, avvisi, infrastruttura, capacità e sicurezza. Assicurati che ogni membro segua l'opportuna formazione in queste aree. Questi sistemi di monitoraggio sono spesso specifici dell'applicazione e devono essere implementati in base ai requisiti di ciascuna applicazione. Ad esempio, il nostro team di sviluppo Opsgenie implementa sistemi di monitoraggio sintetico che creano un avviso o un imprevisto e controllano se il flusso di avvisi viene eseguito come previsto (ovvero se le integrazioni, il reindirizzamento e le policy funzionano correttamente). Inoltre, implementiamo sistemi di monitoraggio sintetico per le dipendenze dell'infrastruttura che verificano periodicamente la funzionalità di vari servizi AWS.

Uno strumento di gestione degli avvisi e degli imprevisti deve integrarsi perfettamente con gli strumenti già utilizzati dal team (ad esempio, gestione dei log, segnalazione di arresti anomali ecc.) in modo che si adatti naturalmente al ritmo delle attività di sviluppo e operative del team. Lo strumento dovrebbe inviare avvisi importanti ai canali di notifica preferiti con le latenze più basse. Dovrebbe includere anche la possibilità di raggruppare gli avvisi per filtrarli, soprattutto quando vengono generati in numero elevato a seguito di un singolo errore o guasto. In Atlassian, non solo offriamo Opsgenie ai nostri clienti come prodotto che fornisce queste funzionalità, ma lo utilizziamo anche internamente per garantire un sistema di gestione degli avvisi e degli imprevisti solido, flessibile, affidabile e integrato con le nostre pratiche di sviluppo.

In conclusione...


Quando si adotta DevOps, è importante garantire che l'approccio shift-left sia attuato anche per i monitoraggi, oltre che per i test, e che siano implementati strumenti e pratiche che consentano di tenere fede alla promessa di introdurre rapidamente le modifiche in produzione con una qualità elevata.

Per ulteriori informazioni, dai un'occhiata queste risorse aggiuntive di Atlassian su DevOps, gestione degli imprevisti e gestione delle modifiche.

Krishna Sai
Krishna Sai

Krishna Sai è Head of Engineering, IT Solutions presso Atlassian. Ha oltre 20 anni di esperienza di leadership nella progettazione/tecnologia in diverse startup e aziende, tra cui Atlassian, Groupon e Polycom. Risiede a Bangalore, in India, e lo appassiona sviluppare prodotti che migliorano il modo di collaborare dei team.


Condividi l'articolo
Argomento successivo

Letture consigliate

Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.

Illustrazione su Devops

Community DevOps

Illustrazione su Devops

Percorso di apprendimento DevOps

Illustrazione di una mappa

Inizia gratis

Iscriviti alla nostra newsletter DevOps

Thank you for signing up