Principi di progettazione dell'eccellenza operativa

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 operazioni con disciplina?
  • I clienti usano il carico di lavoro con la massima prevedibilità?
  • Come si impara dall'esperienza e dai dati raccolti per migliorare in modo continuo?

Le operazioni del carico di lavoro possono essere devolve in procedure caotica quando non c'è una chiara proprietà o leadership. In questo tipo di ambiente, i team spesso usano metodi eseguiti con un impegno elevato e producono risultati bassi, che portano a un'esperienza utente scarsa. 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. I processi efficienti assicurano che il carico di lavoro raggiunga i risultati aziendali entro i vincoli di conformità, sia che la conformità sia organizzativa o 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

Icona obiettivo Consentire ai team operativi e di sviluppo di migliorare continuamente la progettazione e i processi del sistema lavorando con una mentalità orientata a collaborazione, responsabilità condivisa e proprietà.

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.

Approccio 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.

Eseguire analisi senza responsabilità e post-rilascio e/o revisioni post-evento imprevisto.
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 gli standard di sviluppo

Icona obiettivo Ottimizzare la produttività standardizzando le procedure di sviluppo, applicando controlli di qualità e monitorando i progressi e il successo attraverso la gestione sistematica dei cambiamenti.

Il team di sviluppo è responsabile della risoluzione dei problemi del carico di lavoro prima del rilascio con un attrito 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 pianificano e standardizzano le attività tecniche e guidano anche il consenso all'interno del team e degli stakeholder.

Approccio Vantaggi
Documentare le funzionalità del carico di lavoro e acquisire i vantaggi dei clienti.

Derivare l'ambito e i requisiti funzionali dettagliati e non funzionali dell'architettura.

Creare modelli di stima del ridimensionamento 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à dei processi offrendo ai membri del team aspettative chiare e responsabilità.

Tenendo traccia di un elenco comune, le attività possono essere perfezionate e classificate in ordine di priorità con le procedure standard. Il progetto avrà maggiori probabilità di essere consegnato in tempo.

Le metodologie standard consentono di gestire i rischi. Con revisioni cardine granulari, gli sviluppatori possono risolvere potenziali problemi prima che diventino showtopper.
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 senza attriti di funzionalità indipendenti e interdipendenti, correzioni di bug e hotfix.

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 peer come parte del processo e mantenere un audit trail.
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à.

Considera gli artefatti non modificabili quando vengono promossi tramite ambienti, ottenendo fiducia ogni volta che passano attraverso un controllo di qualità.

Dove pratico, automatizzare i controlli di routine.
La garanzia di qualità garantisce che i requisiti funzionali e non funzionali siano stati soddisfatti con fiducia, con un impatto positivo sul cliente.

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à

Icona obiettivo Ottenere visibilità sul sistema, derivare informazioni dettagliate e prendere decisioni basate sui dati.

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 i dati e migliorare le prestazioni.

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 fondamentale del monitoraggio è l'applicazione che usa la modellazione dell'integrità per prevedere i problemi prima che diventino eventi imprevisti e influiscano sull'esperienza dei clienti. Il monitoraggio efficiente riduce i cicli reattivi spesi per la gestione degli eventi imprevisti.

Approccio 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 aziendali non 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.
È 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.

Riservare l'uso di log e tracce per fornire contesto per flussi e 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 situazione per esplorare i dati per 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.

Cercare avvisi proattivi e provocatori che avviano azioni prima che uno stato danneggiato 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 in caso di correzione senza ritardi.

Distribuzione sicura

Icona obiettivo Raggiungere lo stato desiderato della distribuzione con prevedibilità.

Creare una supply chain del carico di lavoro che consente di raggiungere in modo coerente l'obiettivo di prevedibilità in tutti gli ambienti, tra le piattaforme di hosting, le applicazioni, i dati e le risorse di configurazione del carico di lavoro. Il meccanismo di distribuzione deve essere in grado di automazione, test, monitoraggio e controllo delle versioni. Deve essere modularizzato e pronto per l'esecuzione su richiesta. Non deve essere rappresentato come un processo end-to-end monolitico. La supply chain non è necessariamente per un'esecuzione più rapida, ma per ottenere coerenza e auto-documentazione su più iterazioni.

Il team del carico di lavoro è responsabile della catena di fornitura in relazione al proprio carico di lavoro.

Approccio Vantaggi
Usare Infrastructure as Code (IaC) per definire gli aspetti ripetibili della supply chain pronti per la produzione.

Preferisce approcci dichiarativi rispetto ai metodi imperativi.
Le tecnologie IaC dichiarative sono progettate tenendo conto dell'automazione e della riutilizzabilità. È possibile eseguire l'offload delle distribuzioni dell'infrastruttura da singoli utenti agli strumenti e ottenere una qualità coerente.

Dal punto di vista dell'infrastruttura, la presenza di un minor numero di scelte tecnologiche elimina la varianza degli strumenti e semplifica il rilevamento della deviazione della configurazione. Anche la manutenzione sarà più semplice. Se si allineano le scelte con il set di competenze esistente del team, il team può facilmente adottarli.
Preparare il team a usare la tecnologia IaC scelta. Informazioni sul modello di estendibilità, sulle funzionalità e sulle limitazioni.

Sfruttare la specializzazione all'interno del team e condividere le conoscenze all'interno dell'organizzazione.
L'upskilling aumenta la produttività e promuove un ambiente di collaborazione attraverso l'apprendimento condiviso.

È possibile colmare le lacune con la formazione anziché l'assunzione.
Seguire le raccomandazioni software per lo sviluppo e la manutenzione IaC.

Modularizzare in moderazione. Evitare astrazioni personalizzate o a basso valore.

Seguire un approccio a più livelli per riflettere i diversi cicli di vita. Form foundational layer in cui i livelli inferiori rimangono costanti e i livelli superiori cambiano in base alle esigenze.

Gli artefatti della distribuzione, ad esempio i file binari dell'applicazione, i modelli IaC e i parametri, fanno parte della superficie di attacco. Applicare garanzie, ad esempio la gestione dei segreti, il controllo di accesso e altri principi del pilastro Sicurezza.
Gli artefatti sperimentano lo stesso livello di rigore tecnico del codice dell'applicazione. I controlli qualitativi tramite verifiche e test peer offrono fiducia nella distribuzione.

Un approccio a più livelli semplifica la manutenzione e crea limiti che stabiliscono linee chiare di responsabilità.

L'aggiunta di controlli di sicurezza agli artefatti consente di rafforzare il sistema durante il processo di distribuzione.
Sviluppare un manifesto di distribuzione comune usato in tutti gli ambienti. Usare tale manifesto come meccanismo predefinito per i progetti greenfield, gli aggiornamenti incrementali del carico di lavoro o il ripristino di emergenza. Rimuovere il sovraccarico di gestione di più asset.

In caso di emergenza, il ripristino sarà rapido e affidabile perché è possibile distribuire un manifesto provato e testato invece di creare un ambiente improvvisato.
Cercare un'infrastruttura non modificabile e temporanea distribuita tramite l'automazione IaC. Proibire la deriva della configurazione e rendere idempotente la distribuzione.

Questo tipo di infrastruttura elimina carichi operativi significativi, ad esempio l'applicazione di patch. Offre anche vantaggi per gli scenari di convalida principali, ad esempio le distribuzioni di infrastrutture blu-verde.

Nota

Ridurre l'ambito dell'utilizzo del portale solo a attività di investigatori non ripetute.

Automatizzare per l'efficienza

Icona obiettivoSostituire le attività manuali ripetitive con l'automazione software che li completa più rapidamente, con maggiore coerenza e accuratezza e riduce i rischi.

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 effettivamente l'intelletto umano. A seconda della frequenza, è possibile dedicare molto tempo a queste attività, investendo più tempo man mano che aumenta il carico di lavoro. 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.

Approccio Vantaggi
Valutare tutti i flussi di lavoro rispetto ai criteri che si trova al giusto livello di complessità, sforzo, frequenza, accuratezza, 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à corrette. 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 la situazione in cui la mancanza di automazione nella progettazione del sistema promuove il modello anti-modello di attività ripetitive, rallenta la crescita e inizia 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 Well-Architected Framework.
Progettare il componente di automazione per resistere ai rischi, ad esempio le minacce alla sicurezza. Con le procedure consigliate applicate, è possibile evitare lo sprawl dell'implementazione.

Il carico di lavoro continuerà a funzionare con una garanzia generale se questa dipendenza è mantenuta funzionale e sicura.
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

Icona obiettivo Implementare protezioni nel processo di distribuzione per ridurre al minimo l'effetto di errori o condizioni impreviste.

Durante il ciclo di sviluppo, gli artefatti del carico di lavoro passano attraverso molte modifiche man mano che vengono implementate e testate e man mano che vengono corretti i bug.

Il processo di distribuzione deve seguire una procedura operativa standard. Qualsiasi modifica deve essere distribuita con lo stesso livello di rigore. Questo principio si applica allo stesso modo al codice, alla configurazione e a tutti gli artefatti correlati. La chiave consiste nell'applicare le procedure sicure il prima possibile in modo da avere una prevedibilità nell'ambiente di produzione. Anche se gli errori raggiungono i clienti, dovrebbe essere possibile implementare le modifiche di ripristino il prima possibile.

Approccio Vantaggi
Standardizzare il processo per distribuire qualsiasi modifica usando processi di distribuzione automatizzati, ad esempio le pipeline.

Tutti gli ambienti devono usare pipeline.

Classificare asset e versioni per ogni ambiente per renderli facilmente tracciabili e identificabili.
I metodi di distribuzione coerenti riducono i problemi causati da errori di processo e varianza e consentono di concentrarsi sulle problematiche del carico di lavoro.

La standardizzazione garantisce che la distribuzione venga completata in modo sicuro, affidabile e ripetibile.

La classificazione semplifica la visualizzazione dei log delle distribuzioni e dei problemi precedenti che si sono verificati. È possibile usare tali informazioni per accelerare le operazioni di rollback e rollforward.
Distribuire piccoli aggiornamenti incrementali a cadenza regolare. Gli aggiornamenti frequenti, ben testati e di piccole dimensioni semplificano la convalida della versione.

Risolvere i problemi più velocemente con un impatto minimo sul cliente a causa di un footprint minore.
Gli aggiornamenti dei test usano meccanismi diversi per tutto il ciclo di vita dello sviluppo. Rilevare i problemi nelle fasi iniziali dello sviluppo. Le correzioni iterative e le procedure di distribuzione coerenti causano problemi quando l'aggiornamento è pronto per la produzione.
Implementare gli aggiornamenti gradualmente, con due diligence.

Usare i modelli di distribuzione che offrono il controllo per aumentare progressivamente il numero di istanze e clienti fino a quando l'aggiornamento non viene adottato in modo sicuro da tutti.
Testare ogni aggiornamento in modo controllato in modo che i problemi vengano risolti all'inizio della produzione. Evitare di distribuire un aggiornamento difettoso che influisce sull'intera base clienti.

Verificare se l'aggiornamento è compatibile con le versioni precedenti e successive.
Avere una strategia di mitigazione per ripristinare rapidamente gli errori di distribuzione.

La strategia deve coprire il processo decisionale sul rollback o il futuro in base alla criticità del problema.

Sono disponibili processi ben definiti e sistemi automatizzati che possono implementare rapidamente le correzioni usando le pipeline di distribuzione standard.
Ridurre la durata del potenziale impatto.

Ripristinare il sistema alla versione di lavoro precedente o eseguire il roll forward a una versione con correzioni che sono state testate accuratamente.
Disporre di un piano di fallback che reimposta il sistema su uno stato di lavoro in caso di emergenza e per il ripristino da errori imprevisti. Usare questa strategia solo quando necessario e con l'approvazione.

Cercare di migliorare il piano nel tempo.
È possibile correggere rapidamente le correzioni ad alta priorità, ad esempio la correzione della sicurezza.

La pipeline accelerata potrebbe non avere tutti i controlli delle procedure operative standard, ma si otterrà ai clienti una versione sicura nel modo più rapido possibile, che supera gli errori di impatto inferiore.

Passaggi successivi

È consigliabile esaminare l'elenco di controllo per l'eccellenza operativa per esplorare altri concetti.