A cura di Brett Hofe, Senior Solutions Architect-Dynatrace
L’IT lotta ogni giorno per offrire servizi migliori e funzionalità superiori ai propri clienti, il più velocemente possibile, in modo da eliminare lo scenario “War Room” a tutti così familiare.
Mao Sun Tzu nel suo manoscritto “L’arte della guerra” definisce la guerra come un male necessario, che deve essere evitato ove possibile e in alternativa affrontato con la giusta strategia, come accade anche nel nostro scenario dello sviluppo software e delle IT operations.
In ogni battaglia è fondamentale definire gli obiettivi primari quando si avvia un’operazione, questo vale anche per l’isola dello sviluppo da cui partono i DevOps. Qui la strategia ruota attorno a comunicazioni chiare e concise e difese ben delimitate nel rispetto della pianificazione di una delivery continuativa. Una prima fase che coinvolge fin da subito i livelli più alti dell’intelligence, cioè la gestione avanzata delle prestazioni.
Preparazione delle truppe e ordini precisi
Prima della messa in campo operativa è necessario scoprire quali armamenti e addestramento siano stati impiegati nella ricerca, progettazione e assemblaggio delle risorse che garantiscono una migliore qualità, precisione e prontezza.
Le truppe devono, quindi, ricevere una serie di ordini, con priorità ben definite da chi potremmo definire “il gruppo di elite”. Nel mondo DevOps ogni distribuzione deve essere studiata per poter esprimere al massimo il suo valore sul campo di battaglia. Il gruppo di elite deve, quindi, ottimizzare le comunicazioni tra i comandanti, che nel caso dei DevOps sono “gli ufficiali dello Sviluppo e quelli sul fronte Operativo”. L’idea è poter generare un feedback a livello globale e un ciclo di delivery. Affinché questa fase della missione sia pienamente efficace, è indispensabile utilizzare strumenti coerenti, allineati in base al proprio scopo funzionale, rispetto all’interno processo di delivery end-to-end.
Fornire a ogni membro dell’esercito degli sviluppatori ordini chiari e concisi è fondamentale se si vuole mantenere le priorità e raccogliere gli ordini in un sistema di archiviazione, che consenta poi la tracciabilità completa dal programmatore iniziale fino a chi ne fa richiesta. In questo modo chi comanda potrà conoscere le proprie risorse e quantificare le aree di debolezza durante la fase di sviluppo, oltre a capire dove indirizzare la responsabilità, la formazione e/o fare correzioni. In questa fase è importante anche poter documentare, quando si è a conoscenza, tutti gli obiettivi critici in termini di KPI e SLA come parte integrante degli ordini specifici.
Scrutare l’orizzonte con il monitoraggio
Dei validi sistemi di monitoraggio potranno fornire un orizzonte visivo alle truppe più deboli e delle risorse utili nel caso si verifichino perdite in battaglia. Per mitigare fin dall’inizio il rischio nei deployment applicativi, ovviamente, bisognerebbe evitare da subito di distribuire risorse con problemi; questo permetterebbe in definitiva di risparmiare tempo, denaro e perdite sul campo di battaglia. Prima riusciamo a identificare una criticità nel processo di delivery, meglio è!
La gestione delle prestazioni avanzate e l’automazione dell’intelligence giocano un ruolo importante nel formare una linea ottimale di difesa anche nella fase CI build, quando una serie di script di test deve essere eseguita. Una volta eseguiti gli script di automazione dei test dell’unità, la ricchezza delle informazioni raccolte da una tecnologia avanzata di gestione delle prestazioni può diventare un patrimonio importante a cui attingere. Le tecnologie di performance forniscono alert e sono in grado di eseguire operazioni automatizzate, come emettere richieste di modifica che tornano alle truppe di sviluppo quando ci sono criticità in termini di KPI o vengono violati gli SLA.
Deployment in corso, con il pieno controllo del campo di battaglia
Infine, giunge il momento di automatizzare le configurazioni infrastrutturali e i deployment.
Per garantire che ogni distribuzione possieda un setup ottimale per il monitoraggio delle prestazioni avanzate, gli strumenti per la configurazione e il release management devono certificare che tutte le impostazioni di monitoraggio delle prestazioni corrette siano configurate all’interno di ogni macchina target. In questo modo, una volta che il deployment di una fase viene completato, tutte le operazioni che si verificano sul campo di battaglia possono essere pienamente monitorate, offrendo una consapevolezza totale non solo sulla loro struttura ma anche sull’impatto che i cambiamenti nella configurazione possono comportare. Dopo aver preparato le unità ottimizzate e aver reso più solido il nostro posizionamento siamo ora pronti ad affrontare sfida della vera battaglia.