Raccomandazioni per pratiche di distribuzione sicure
Si applica a questa raccomandazione della checklist di eccellenza operativa ben progettata: Power Platform
OE:10 | Definisci chiaramente le pratiche di distribuzione sicure del tuo carico di lavoro. Enfatizza gli ideali di metodi di rilascio piccoli, incrementali e vincolati alla qualità. Utilizza modelli di distribuzione moderni per controllare i rischi. Tieni conto delle distribuzioni di routine e delle distribuzioni di emergenza o hotfix. |
---|
Questo guida descrive le raccomandazioni per l'utilizzo di pratiche di distribuzione sicure. Le procedure e le pratiche di distribuzione sicure definiscono come apportare e distribuire in modo sicuro le modifiche al carico di lavoro. Per implementarle è necessario pensare alle distribuzioni in un'ottica di gestione del rischio. È possibile ridurre al minimo il rischio di errore umano nelle distribuzioni e limitare gli effetti di distribuzioni problematiche sugli utenti implementando queste pratiche.
Strategie di progettazione chiave
Esistono linee guida importanti da tenere a mente quando si implementano pratiche di distribuzione sicure:
- Sicurezza e coerenza: tutte le modifiche al carico di lavoro di produzione sono intrinsecamente rischiose e devono essere apportate concentrandosi sulla sicurezza e sulla coerenza.
- Modelli di integrità: le distribuzioni devono superare i controlli di integrità prima che possa iniziare ogni fase di esposizione progressiva.
- Rilevamento dei problemi: quando vengono rilevati dei problemi, la distribuzione deve essere immediatamente interrotta e deve essere avviato il ripristino.
Le sezioni seguenti forniscono raccomandazioni dettagliate per ciascuno di questi punti.
Sicurezza e coerenza
Che tu stia distribuendo un aggiornamento al codice dell'applicazione, all'infrastruttura come codice (IaC), al feature flag o alla configurazione, stai introducendo un rischio per il carico di lavoro. Non esistono implementazioni a basso rischio in produzione. Ogni distribuzione deve seguire un modello standard e deve essere automatizzata per garantire la coerenza e ridurre al minimo il rischio di errore umano. È fondamentale che la catena di approvvigionamento del carico di lavoro e le pipeline di distribuzione siano affidabili, sicure e dispongano di standard di distribuzione chiaramente definiti. Tratta ogni distribuzione come un possibile rischio e sottoponila allo stesso livello di gestione del rischio.
Nonostante i rischi, dovresti continuare a distribuire modifiche regolari al tuo carico di lavoro. La mancata distribuzione di aggiornamenti regolari introduce altri rischi, come vulnerabilità della sicurezza che devono essere risolte tramite le distribuzioni. Per saperne di più, consulta Raccomandazioni per la progettazione di uno sviluppo del carico di lavoro catena di approvvigionamento.
Sono preferibili distribuzioni piccole e frequenti rispetto a distribuzioni grandi e poco frequenti. Piccole modifiche sono più facili da risolvere quando si verificano problemi e distribuzioni frequenti aiutano il tuo team ad acquisire fiducia nel processo di distribuzione. È inoltre importante apprendere dalla produzione riesaminando i processi del carico di lavoro quando si riscontra un'anomalia durante la distribuzione. Potresti trovare punti deboli nella progettazione della tua infrastruttura o nell'implementazione. Quando si verificano problemi durante le missioni, assicurati che le analisi post-mortem imparziali facciano parte del tuo processo per trarre insegnamenti dall'incidente.
Modelli di integrità
Sviluppa un modello di integrità solido come parte della tua piattaforma di monitoraggio dell'osservabilità e delle strategie di affidabilità. Il tuo modello di integrità deve fornire una visibilità approfondita dei componenti e dello stato generale del carico di lavoro. Monitorare attentamente i parametri sanitari dopo un lancio. Se durante l'implementazione ricevi un avviso relativo a una modifica dello stato di salute, analizza immediatamente il problema e stabilisci il percorso successivo, ad esempio il rollback della modifica. Se gli utenti non segnalano problemi e tutti gli indicatori di integrità rimangono verdi, l'implementazione dovrebbe proseguire. Assicurati di includere metriche di utilizzo nel tuo modello sanitario per garantire che la mancanza di problemi segnalati dagli utenti e di segnali di salute negativi non nasconda un problema. Per ulteriori informazioni, consultare Raccomandazioni per l'esecuzione dell'analisi delle modalità di guasto.
Rilevamento di problemi
Quando la tua distribuzione causa un problema in uno dei gruppi di implementazione, l'implementazione deve essere interrotta immediatamente. Investiga sulla causa del problema e sulla gravità degli effetti non appena viene visualizzato l'avviso. La risoluzione del problema può includere:
- Eseguire il rollback annullando le modifiche apportate durante la distribuzione e ripristinando l'ultima configurazione funzionante nota.
- Andare avanti affrontando il problema durante l'implementazione. Puoi risolvere i problemi durante l'implementazione applicando un hotfix o riducendo al minimo il problema.
- Distribuzione di una nuova infrastruttura utilizzando l'ultima configurazione funzionante nota.
Il rollback delle modifiche, in particolare delle modifiche a database, schema o altri componenti con stato, può essere complesso. Le linee guida per le pratiche di distribuzione sicura dovrebbero fornire istruzioni chiare su come gestire le modifiche dei dati in base alla progettazione del patrimonio di dati per il carico di lavoro. Allo stesso modo, il rollforward deve essere gestito con attenzione per garantire che i processi di distribuzione sicuri non vengano trascurati e che l'hotfix o altri sforzi di minimizzazione vengano eseguiti in modo sicuro.
Elementi consigliati generali
Implementa il controllo delle versioni negli artefatti della build per garantire la possibilità di eseguire rollback e rollforward quando necessario.
Utilizza un flusso di rilascio o una struttura di ramificazione basata sul trunk, che impone una collaborazione strettamente sincronizzata nel team di sviluppo, invece di un Gitflow o una struttura di ramificazione basata sull'ambiente.
Automatizza il più possibile le tue pratiche di distribuzione in sicurezza. Per ulteriori informazioni, consulta la sezione Raccomandazioni per l'implementazione dell'automazione.
Utilizza pratiche di integrazione continue (CI) per integrare regolarmente modifiche al codice nei repository. Le pratiche CI possono aiutarti a identificare i conflitti di integrazione e ridurre la probabilità di fusioni grandi e rischiose. Per ulteriori informazioni, consulta la sezione Raccomandazioni per l'integrazione continua.
Utilizza i flag di funzionalità per abilitare o disabilitare selettivamente nuove funzionalità o modifiche nella produzione. I flag di funzionalità possono aiutarti a controllare l'esposizione del nuovo codice ed eseguire rapidamente il rollback della distribuzione in caso di problemi.
Distribuisci le modifiche agli ambienti di gestione temporanea che rispecchiano il tuo ambiente di produzione. Gli ambienti di pratica ti consentono di testare le modifiche in un ambiente controllato prima della distribuzione nell'ambiente live.
Stabilisci controlli preliminari alla distribuzione, tra cui revisione del codice, scansioni di sicurezza e controlli di conformità, per garantire che le modifiche possano essere implementate in modo sicuro.
Implementare interruttori automatici per interrompere automaticamente il traffico verso un servizio che presenta problemi e contribuire a prevenire un ulteriore degrado del sistema.
Protocolli di emergenza
Stabilisci protocolli prescrittivi che definiscano in che modo i tuoi processi di distribuzione sicura possono essere adattati a un hotfix o a problemi di emergenza come una violazione della sicurezza o l'esposizione di una vulnerabilità. Ad esempio, i protocolli di emergenza potrebbero includere:
- Accelerazione della fase di promozione e approvazione
- Accelerazione dei test di fumo e di integrazione
- Riduzione del tempo di cottura
In alcuni casi, l’emergenza potrebbe limitare la qualità e i controlli, ma i controlli devono comunque essere eseguiti il più rapidamente possibile come esercizio fuori banda. Assicuratevi di definire chi può approvare l'accelerazione di un'implementazione sicura in caso di emergenza e i criteri che devono essere soddisfatti affinché l'accelerazione venga approvata. Allineare i tuoi protocolli di emergenza con il tuo piano di emergenza risposta per garantire che tutte le emergenze vengano gestite secondo gli stessi protocolli.
Considerazioni
Creare e gestire pratiche di distribuzione sicure è complesso. Il successo nell'implementazione completa di standard robusti dipende dalla maturità delle tue pratiche in molte aree dello sviluppo software. L'uso dell'automazione, dell'IaC-only per le modifiche all'infrastruttura, della coerenza nelle strategie di ramificazione, dei feature flag e di altre pratiche possono contribuire a garantire una distribuzione sicura. Utilizza questa guida per ottimizzare il carico di lavoro e definire i tuoi piani di miglioramento man mano che le tue pratiche evolvono.
Facilitazione di Power Platform
Microsoft Power Platform Gli strumenti di compilazione per Azure DevOps possono essere utilizzati per automatizzare le comuni attività di compilazione e distribuzione relative alle app create su Power Platform.
Le azioni GitHub consentono agli sviluppatori di creare flussi di lavoro automatizzati per il ciclo di vita dello sviluppo software. Power Platform Con GitHub Actions per Microsoft Power Platform puoi creare flussi di lavoro nel tuo repository per creare, testare, creare pacchetti, rilasciare e distribuire app; eseguire l'automazione; e gestire bot e altri componenti basati su Power Platform.
ALM Accelerator è uno strumento open source costituito da un set di applicazioni, script e pipeline progettati per automatizzare il processo di integrazione continua/distribuzione continua.
Automatizza i test con Azure Pipelines.
Le variabili ambiente nelle soluzioni memorizzano le chiavi e i valori dei parametri, che poi servono come input per altri oggetti dell'applicazione. La separazione dei parametri dagli oggetti di consumo consente di modificare i valori all'interno dello stesso ambiente o quando si migrano soluzioni ad altri ambienti.
Power Platform gli ambienti forniscono funzionalità di ripristino in un dato momento che possono aiutarti a tornare indietro.