Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Al centro del pilastro Dell'eccellenza operativa sono le procedure DevOps che garantiscono la qualità del carico di lavoro tramite flussi di lavoro standardizzati e coesione del team. Questo pilastro definisce le procedure operative per le procedure di sviluppo, l'osservabilità e la gestione del rilascio. L'obiettivo è ridurre al minimo la varianza dei processi, le probabilità di errori umani e l'interruzione dei clienti. Per valutare l'integrità operativa, iniziare con queste domande:
- Si eseguono le operazioni con disciplina?
- I clienti usano il carico di lavoro con la massima prevedibilità?
- Come si sta cercando di imparare dall'esperienza e dai dati raccolti per migliorare in modo continuo?
Le attività di gestione del carico di lavoro possono degenerare in pratiche caotiche quando non c'è una chiara responsabilità o leadership. In questo tipo di ambiente, i team spesso usano metodi eseguiti con un impegno elevato, ma producendo risultati scarsi, che portano a un'esperienza utente non ottimale. Questi approcci soddisfano solo gli obiettivi a breve termine. I vantaggi a lungo termine vengono realizzati attraverso la valutazione continua e gli investimenti strategici.
I principi di progettazione forniscono linee guida per le strategie operative che devono essere considerate per affrontare le cause sottostanti e non solo trattare i sintomi. Iniziare con gli approcci consigliati e quindi osservare cosa funziona e cosa non serve per identificare le aree di miglioramento. Dopo aver impostato la strategia, continuare a guidare l'azione usando l'elenco di controllo dell'eccellenza operativa.
I requisiti operativi di un carico di lavoro sono importanti quanto i requisiti aziendali. Processi efficienti garantiscono che il carico di lavoro raggiunga i risultati aziendali entro i vincoli di conformità, sia che la conformità sia organizzativa sia esterna. La chiave consiste nel trovare la ripetibilità con coerenza.
Gli obiettivi del pilastro Eccellenza operativa sono quello di fare la cosa giusta, di farlo nel modo giusto e di risolvere i problemi giusti come team.
Se si soddisfano questi obiettivi, i carichi di lavoro verranno eseguiti in modo affidabile e prevedibile anche durante i tempi di modifica. L'impossibilità di soddisfare i requisiti operativi può causare distribuzioni non riuscite, esperienza utente incoerente e costi aggiuntivi che potrebbero essere stati evitati tramite una pianificazione corretta e un'esecuzione semplificata.
Adottare una cultura basata su DevOps
|
---|
DevOps è una community di pratiche in cui la diversità di prospettiva e competenze guida verso una missione. I team devono promuovere un ambiente collaborativo di conoscenze condivise anziché l'apprendimento silo. Usare le funzioni condivise per cercare di superare i vincoli delle risorse.
La responsabilità condivisa favorisce una cultura DevOps ottimale. I team operativi e di sviluppo devono allineare gli obiettivi e le priorità alle aspettative dei clienti e tenere a mente il focus aziendale. Il team di sviluppo deve coinvolgere il team operativo nel ciclo di feedback, in modo che i miglioramenti siano guidati anche da upstream e offrano vantaggi anche agli altri team. I team operativi sono invece responsabili del successo del team di sviluppo a livello di risultati aziendali mediante la condivisione di risorse e feedback rilevanti per il carico di lavoro.
Allo stesso tempo, le procedure DevOps applicano linee chiare di proprietà e responsabilità a ogni team. Indipendentemente dalla posizione in cui viene eseguita l'applicazione, il team del carico di lavoro è responsabile di tale applicazione.
DevOps ottimizza le attività operative in modo che siano efficaci ma non onerose. Per sfruttare appieno il vantaggio di DevOps, la cultura deve ottimizzare i processi attraverso la tecnologia e avere processi per incoraggiare le persone dell'organizzazione a promuovere una comunicazione trasparente.
Avvicinarsi | Vantaggi |
---|---|
Usare sistemi e strumenti comuni che promuovono un ambiente collaborativo per la comunicazione e il monitoraggio dello stato di avanzamento. | Gli strumenti e i processi comuni consentono la comunicazione trasparente. I team di sviluppo e i team operativi traggono vantaggio dalla consapevolezza della situazione in vari ambienti, da informazioni relative a problemi di supporto comuni, sfide e risultati positivi complessivi. I team avranno già familiarità con i percorsi di escalation esistenti in caso di evento imprevisto. Un backlog condiviso rende chiare le priorità, ad esempio il lavoro a nuove funzionalità o la correzione di bug. |
Creare una mentalità di apprendimento e sperimentazione continua durante tutto il ciclo di sviluppo. Supportare la condivisione delle informazioni tra i team e gestire la documentazione per il riutilizzo. Condurre analisi senza attribuzione di colpa e riunioni di valutazione post-rilascio e/o post-incidente. |
Tramite meccanismi di sperimentazione, ad esempio test A/B e sviluppo di modelli di verifica, è possibile incoraggiare l'innovazione mantenendo i costi bassi. Condividere conoscenze attraverso la collaborazione che consente al team di acquisire competenze a livello di approcci di progettazione, strumenti e processi. L'esecuzione di analisi retrospettive dopo un progetto aiuta a identificare le aree per migliorare e celebrare il successo. |
Adottare procedure agile del settore comprovate che si concentrano sull'ottimizzazione delle azioni. Cercare opportunità di "spostamento a sinistra" nelle operazioni per processi manuali e automatizzati, procedure di distribuzione e controllo della qualità e osservabilità. |
Le procedure di sviluppo Agile portano a cicli di vita delle versioni più brevi, che rappresentano un indicatore del valore aziendale. Il rilevamento, la risoluzione e quindi la prevenzione dei problemi in precedenza sono spesso meno invadenti per il processo. |
Impostare gli standard per tutte le procedure operative e di sviluppo e revisione e convalidarle a cadenza regolare. Queste procedure includono attività di routine, processi fuori banda, esercitazioni e situazioni di emergenza, scelta di strumenti, procedure di monitoraggio, piani di sviluppo di competenza e persino comunicazioni con stakeholder e divulgazioni ai clienti. Essere intenzionali ed espliciti sulle decisioni. |
Gli standard aggiungono prevedibilità alle operazioni e rendono scalabili i processi e le procedure. La convalida degli standard è un ottimo modo per definire punti di miglioramento. Prepararsi per situazioni di emergenza e di ripristino eseguendo esercitazioni regolari. Eseguire con precisione e abilitare la governance per evitare anomalie che portano a rischi. |
Sfruttare i team operativi centralizzati con competenze specializzate e ampiezza di esperienza. | L'uso di risorse condivise per le operazioni e le risorse offre un vantaggio in termini di costi. Anche se si è proprietari del carico di lavoro, il team centralizzato consente di acquisire competenze interfunzionali, ad esempio la gestione degli eventi imprevisti, una prospettiva proattiva sul monitoraggio e l'esternalizzazione delle competenze con fiducia. |
Stabilire standard di sviluppo
|
---|
Il team di sviluppo è responsabile di risolvere problemi del carico di lavoro prima del rilascio con conflitto minimo. Tenere presente l'efficienza degli sviluppatori e ottimizzare i cicli di turnaround rapidi, dalla codifica ai risultati dei test. Implementare processi efficaci e di dimensioni corrette che pianifichino e standardizzino le attività tecniche e che promuovano inoltre consenso all'interno del team e tra gli stakeholder.
Avvicinarsi | Vantaggi |
---|---|
Documentare le funzionalità del carico di lavoro e raccogliere i vantaggi per i clienti. Derivare l'ambito e i requisiti funzionali dettagliati e non funzionali dell'architettura. Creare modelli di stima delle dimensioni per segnalare l'ambito e il costo delle attività coinvolte. |
Specifiche valide tagliano i costi operativi e le probabilità di errore supportando cicli di sviluppo più produttivi e semplificati. Gli sviluppatori comprendono i criteri di progettazione, obiettivi e completamento tecnici prima di iniziare il ciclo di codifica. Una buona documentazione facilita la comunicazione ripetibile e l'onboarding dei nuovi membri del team. |
Usare una metodologia di sviluppo software standard del settore ottimizzata in modo appropriato per le esigenze del carico di lavoro e delle dimensioni del team. Mantenere un backlog condiviso tra tutti i ruoli. |
L'adozione di una metodologia nota imposta il ritmo del progetto. Rimuove le ambiguità di processo, chiarificando le aspettative e le responsabilità dei membri del team. Tenendo traccia di un elenco comune, le attività possono essere perfezionate e classificate in ordine di priorità con le procedure standard. Il progetto avrà maggiore probabilità di essere consegnato in tempo. Le metodologie standard consentono di gestire i rischi. Con revisioni di attività cardine granulari, gli sviluppatori possono risolvere potenziali problemi prima che rappresentino un grave ostacolo. |
Usare il controllo del codice sorgente unificato per tutto il codice, gli script, i modelli di distribuzione, le definizioni di pipeline e la documentazione correlata. La strategia di diramazione deve supportare il rilascio agevole di funzionalità indipendenti e interdipendenti, correzioni di bug e correzioni urgenti. Usare le conoscenze condivise nell'organizzazione per creare la strategia di diramazione e i processi di distribuzione. |
L'uso corretto del controllo del codice sorgente è fondamentale per supportare le modifiche simultanee e il controllo delle versioni. Mantenere un flusso di lavoro ripetibile per rilasciare modifiche di varie dimensioni e rischi, condurre revisioni tra pari come parte del processo e mantenere la tracciabilità dell'audit. |
Avere processi di controllo della qualità che enfatizzano i test all'inizio del ciclo di vita dello sviluppo. Includere tutti gli artefatti per le procedure di test pianificate, inclusi i componenti dell'applicazione, l'infrastruttura e le operazioni del piano dati che fanno parte di una versione o di un aggiornamento delle funzionalità. Considerare gli artefatti come non modificabili quando vengono promossi tra ambienti, guadagnando fiducia ogni volta che superano una soglia di qualità. Quando conveniente, automatizzare i controlli di routine. |
Il controllo qualità garantisce che i requisiti funzionali e non funzionali siano stati soddisfatti con sicurezza, il che garantisce un impatto positivo sui clienti. La presenza di piani di test garantisce qualità e completezza e prende in considerazione i possibili casi di errore. Con i controlli di qualità, è possibile applicare procedure consigliate per ridurre i rischi. L'immutabilità garantisce che il sistema di cui si esegue il test sia esattamente quello che si rilascia. I cicli di test bloccano in modo efficiente lo stato di avanzamento a meno che non vengano soddisfatti i criteri di qualità. |
Favorire la coerenza usando guide e strumenti di stile, che applicano convenzioni e adottano una catena di strumenti comune per lo sviluppo, il test e la comunicazione con gli stakeholder. Gli standard tecnologici per gli sviluppatori devono richiedere l'implementazione di modelli, progettazione api, registrazione, gestione delle eccezioni e altri processi. |
La coerenza nel codice determina la leggibilità e una manutenzione più semplice. Riduce anche la complessità e abilita il riutilizzo del codice. Gli strumenti e le convenzioni comuni aiutano anche i team a ottimizzare i processi senza dover affrontare scelte occasionali. |
Costantemente e deliberatamente insistere sulla documentazione dello sviluppatore del codice come scritto. | La documentazione di codice chiaro garantisce che la logica e le funzionalità siano facilmente comprensibili quando è necessario rivedere il codice precedente o quando i team di sviluppo ruotano. |
Segnalare lo stato di avanzamento e le tendenze per misurare l'efficienza. | Le tendenze nei bug, gli aggiornamenti non riusciti, il tempo necessario per la distribuzione, i cicli di feedback e altre metriche vengono pubblicati e ciò determina miglioramenti. |
Evolvere le operazioni con osservabilità
|
---|
Creare una cultura che migliora continuamente la qualità monitorando il carico di lavoro e prendendo in considerazione tutti i pilastri di Azure Well-Architected Framework. Consentire al team e agli stakeholder di prendere decisioni a breve termine e a lungo termine in molti facet fornendo i dati, le statistiche e le tendenze necessari. Apprendere dai tuoi dati e promuovere miglioramenti.
Le operazioni create ai fini dell'osservabilità sono fondamentali per la manutenzione proattiva dell'applicazione, della qualità e della sicurezza, della pianificazione della capacità e della gestione dei prodotti.
Un aspetto cruciale del monitoraggio è il utilizzo della modellazione della salute per aiutarti a prevedere i problemi prima che diventino incidenti e influiscano sull'esperienza dei clienti. Il monitoraggio efficiente riduce i cicli reattivi spesi per la gestione degli eventi imprevisti.
Avvicinarsi | Vantaggi |
---|---|
Creare un sistema di monitoraggio con un proprio stack e flussi. Considerare il sistema di monitoraggio come una dimensione del carico di lavoro separato dalla relativa utilità. Lo stack deve coprire tutti i livelli, inclusi i processi di infrastruttura, integrità delle applicazioni e compilazione e rilascio. L'acquisizione o il campionamento dei dati aziendali non rientra nell'ambito per le implementazioni di osservabilità. |
Separare gli stack di monitoraggio e carico di lavoro per separare i requisiti funzionali e l'osservabilità e rendere possibile l'evoluzione indipendente. Le modifiche apportate al codice non devono influire sul monitoraggio e viceversa. Poiché i requisiti di osservabilità sono separati dai requisiti funzionali, i dati aziendalinon verranno interrotti monitorando le modifiche o le interruzioni della configurazione. |
Guidare la coerenza nel processo di raccolta per ogni tipo di origine dati. Standardizzare la strumentazione nel codice usando gli standard di settore per la telemetria, la raccolta di metriche dell'infrastruttura e gli strumenti. |
La coerenza impedisce la varianza nel rilevamento e nella misurazione perché la familiarità tra risorse simili riduce il tempo impiegato per correlare e analizzare i dati. Si ha una prospettiva olistica per anticipare i problemi. |
Generare dati di telemetria dal codice dell'applicazione che correla i punti chiave del flusso di esecuzione e offre una visualizzazione end-to-end a diversi livelli di granularità. | Classificare in ordine di priorità le azioni in base al livello di gravità e comprendere il contesto in base al livello di dettaglio. Queste informazioni sono fondamentali per la risoluzione dei problemi. |
Assumere la responsabilità dell'emissione e della raccolta dei dati, anche quando i sink di dati sono condivisi da più team e gestiti da team centrali. | Localizzando i dati di monitoraggio nell'ambiente del carico di lavoro, il team può accedere ai log e alle metriche per risolvere i problemi del carico di lavoro. |
Raccogliere solo dati sufficienti e conservarli per un tempo sufficiente. Prendere in considerazione i compromessi sui costi associati alla registrazione e all'archiviazione dei dati. |
La raccolta intenzionale dei dati consente di ottimizzare i costi finanziari e operativi associati alla raccolta di più dati di quanto necessario. Ridurre al minimo il rumore ed evitare calcoli intensivi durante l'analisi e ridurre i costi di archiviazione dei dati non più necessari. |
Distinguere i diversi segnali di monitoraggio: profili, log, metriche e tracce. Usare ogni segnale per lo scopo corretto. Classificare in ordine di priorità l'uso delle metriche per attivare azioni che si basano sulle misurazioni numeriche. Usare i profili per ottenere visibilità di livello inferiore, ad esempio l'allocazione di memoria, nel sistema. Limitare l'uso di log e tracce per fornire un contesto per i flussi e le dipendenze. |
Usando i segnali a scopo corretto, è possibile evitare un'implementazione inefficiente del sistema di monitoraggio. Ad esempio, l'uso dei log per le azioni richiede l'analisi. È possibile raggiungere gli stessi obiettivi più velocemente con le metriche. |
Aggregare e visualizzare i dati nei dashboard per presentare i dati di monitoraggio adatti ai destinatari e tenere presente il contesto aziendale. Usare i dashboard situazionali per visualizzare i dati e favorire la consapevolezza tra gli stakeholder. Usare dashboard operativi e cartelle di lavoro con funzionalità di drill-down per le attività degli operatori come la risposta agli eventi imprevisti. Aggiornare frequentemente i dashboard e fornire dati granulari. |
Con le visualizzazioni è possibile analizzare le tendenze, tenere traccia degli obiettivi aziendali e gestire gli eventi imprevisti. I dashboard personalizzati per l'interesse del cliente rendono pertinente l'interpretazione e accelerano il tempo per il rilevamento e l'azione. |
Rendere gli avvisi interattivi notificando i ruoli responsabili con descrizioni standardizzate e livelli di gravità. Fornire informazioni che vengono confrontate da varie origini e tenere traccia delle deviazioni dagli obiettivi aziendali. Attivare avvisi solo per gli eventi imprevisti che richiedono un'azione. Sforzarsi di ottenere avvisi proattivi e stimolanti che avviano azioni prima che uno stato degradato diventi un errore. |
Gli avvisi riportano attenzione a eventi significativi definiti dall'organizzazione. Un buon sistema di avviso identifica azioni e gravità e fornisce solo dati sufficienti per ottenere chiarezza e scopo. Gli operatori possono iniziare la bonifica immediatamente. |
Automatizzare per l'efficienza
|
---|
Il carico di lavoro potrebbe avere flussi di lavoro con processi che coinvolgono membri del team che eseguono attività banali, ripetitive e dispendiose in termini di tempo che non richiedono l'intelletto umano. A seconda della frequenza, si potrebbe star dedicando molto tempo a queste attività, investendovi più tempo man mano che il carico di lavoro aumenta. Inoltre, questi processi sono spesso soggetti a errori a causa dell'input umano.
Grazie all'automazione, si risparmiano tempo, fatica e denaro ed è possibile evitare errori.
Avvicinarsi | Vantaggi |
---|---|
Valutate tutti i flussi di lavoro rispetto ai criteri al corretto livello di complessità, frequenza, sforzo, precisione, tempestività e durata. Automatizzare i flussi di lavoro in base a tale valutazione e classificare in ordine di priorità i flussi di lavoro con i rendimenti previsti più elevati. Rimuovere i flussi di lavoro ridondanti o aggiungere valore per giustificare lo sforzo umano. |
È possibile reinvestire la capacità del team in un lavoro di valore superiore e aumentare la produttività e la coerenza. La creazione di un inventario dei flussi di lavoro garantisce l'automazione delle attività giuste. La rimozione di attività ridondanti riduce la complessità e gli errori. |
Essere espliciti sulla decisione quando si valuta se creare strumenti personalizzati o acquistare software. Riservare l'automazione degli edifici per lavori altamente specializzati e di alto valore. |
Acquistando software off-the-shelf e sfruttando il contratto di supporto, si risparmiano sui costi di manutenzione. Creando software, si ha più controllo e può soddisfare casi d'uso univoci per il team e il carico di lavoro. Tuttavia, c'è un impatto sul costo. La scelta degli strumenti offre un livello di standardizzazione alle operazioni. Con la formazione è possibile ottenere un livello uniforme di idoneità per l'adozione. |
Progettare i componenti del carico di lavoro per supportare le funzionalità di automazione. | Evitare situazioni in cui la mancanza di automazione nella progettazione di sistema promuova l'anti-modello di attività ripetitive, rallenti la crescita e cominci ad accumulare debito tecnico. |
Considerare tutta l'automazione come una dipendenza critica del carico di lavoro. Adattarsi alla crescita prevista del carico di lavoro. Gli strumenti di automazione sono parte integrante del carico di lavoro e devono rispettare i cinque pilastri di un Framework ben progettato. |
Progettare il componente di automazione per resistere a rischi, ad esempio le minacce alla sicurezza. Con le procedure consigliate applicate, è possibile evitare lo sprawl dell'implementazione. Se queste dipendenza è mantenuta funzionale e in sicurezza, il carico di lavoro continuerà a funzionare con una garanzia generale. |
Automatizzare su larga scala esplorando le opzioni oltre il carico di lavoro. Favorire un modello "design once, run everywhere" fornendo modelli e framework per caricare nuovi progetti e promuovere il riutilizzo di progetti e implementazioni esistenti. |
Usare metodi provati e testati e ridurre le probabilità di errore. |
Adottare procedure di distribuzione sicure
|
---|
Creare una catena di approvvigionamento automatizzata e modulare del carico di lavoro per garantire distribuzioni coerenti, prevedibili e ripetibili in tutti gli ambienti. L'applicazione di procedure sicure garantisce in anticipo la fiducia nell'ambiente di produzione e consente un ripristino rapido se i problemi raggiungono i clienti.
Tutte le modifiche, sia che si tratti di codice, configurazione o artefatti, devono essere distribuite con lo stesso livello di rigore. I test, il monitoraggio e il controllo delle versioni sono procedure comuni per ottenere coerenza.
Avvicinarsi | Vantaggi |
---|---|
Usare Infrastruttura come codice (IaC) per definire lo stato desiderato di tutta l'infrastruttura. Usare un approccio modulare e a più livelli, ma evitare astrazioni non necessarie. Allineare i livelli alle esigenze del ciclo di vita, mantenendo stabili i livelli fondamentali. |
IaC consente l'automazione e la coerenza della distribuzione e funge da documentazione autonoma che può essere usata per la traccia. Gli artefatti IaC diventano parte del ciclo di vita dello sviluppo software, che consente processi di test e revisione della qualità. IaC consente anche di rilevare e ridurre la deviazione della configurazione. |
Preferisce aggiornamenti incrementali di piccole dimensioni che vengono distribuiti frequentemente. | Gli aggiornamenti più piccoli semplificano la convalida riducendo il numero di errori simultanei. Quando più modifiche difettose vengono rilasciate simultaneamente, possono aumentare significativamente il raggio dell'esplosione. |
Distribuire ogni modifica del codice e dell'infrastruttura usando pipeline automatizzate in tutti gli ambienti. | I metodi di distribuzione coerenti riducono gli errori e la varianza rendendo le distribuzioni affidabili e ripetibili. Il processo di distribuzione documenta se stesso e ogni esecuzione crea un record di attività. |
Testare rigorosamente in tutto il ciclo di sviluppo, in ambienti di preproduzione e produzione. | I test iniziali rilevano prima i problemi, consentono correzioni iterative e riducono i problemi nel momento in cui l'aggiornamento è pronto per la produzione. La presenza di più ambienti di pre-produzione consente diversi tipi di test, aumentando la fiducia in una versione di produzione riuscita. |
Implementare nuove funzionalità usando modelli di distribuzione che consentono l'esposizione progressiva e l'adozione graduale da parte degli utenti. Testare la compatibilità con le versioni precedenti e successive. |
L'implementazione controllata degli aggiornamenti riduce il rischio di problemi diffusi da difetti. Aumentando gradualmente l'esposizione, si garantisce la compatibilità e la stabilità, aumentando la fiducia nel rilascio. |
Prepararsi con azioni di compensazione per il ripristino da distribuzioni difettose o difetti critici nell'ambiente di produzione. Usare l'automazione supportata dai test per implementare correzioni. Per gli aggiornamenti di emergenza, è necessario un processo accelerato pre-approvato dagli stakeholder. |
La presenza di un piano di mitigazione riduce la durata dell'impatto potenziale. È possibile distribuire rapidamente correzioni urgenti, ad esempio patch di sicurezza, per rendere più veloce la versione sicura degli utenti. |
Passaggi successivi
È consigliabile esaminare l'elenco di controllo per l'eccellenza operativa per esplorare altri concetti.