Raccomandazioni per l'implementazione dell'automazione

Si applica a questo elenco di controllo di eccellenza operativa framework Well-Architected:

OE:09 Automatizzare tutte le attività che non beneficiano delle informazioni dettagliate e dell'adattabilità dell'intervento umano, sono altamente procedurali e hanno una durata elevata che restituisce un ritorno sugli investimenti di automazione. Quando possibile, scegliere il software off-the-shelf per l'automazione rispetto alle implementazioni personalizzate. Considerare tutte le operazioni di automazione uguali ai componenti del carico di lavoro e applicare i pilastri Well-Architected Framework alla progettazione e all'implementazione.

Questa guida descrive i consigli per l'adozione dell'automazione nel carico di lavoro. È possibile automatizzare le attività ripetitive e soggette a errori umani per aiutare i team a ottenere efficienza e rispettare gli standard. Automatizzare le attività per semplificare e coerenza del carico di lavoro. L'automazione consente ai team di operazioni e ingegneria di essere più efficienti perché offre più tempo per lavorare su altri miglioramenti. L'automazione è uno strumento potente in tutti gli aspetti della gestione del carico di lavoro. Implementare in modo ponderato l'automazione per consentire all'organizzazione.

Strategie di progettazione chiave

Man mano che si sviluppa il carico di lavoro, cercare opportunità di sfruttare l'automazione per ridurre il carico di gestione e ridurre al minimo l'errore umano. Valutare queste opportunità e considerare il valore che portano all'organizzazione. Per ottimizzare il valore dell'investimento nell'automazione, assegnare priorità alle attività che sono semplici, procedurali e hanno una lunga durata. L'applicazione dell'automazione non è una tattica all-or-nothing. Esistono flussi di lavoro che potrebbero avere operazioni che richiedono un intervento umano, ad esempio punti decisionali. Questi flussi di lavoro possono comunque trarre vantaggio dall'automazione per eseguire altre attività.

Attività di destinazione per automatizzare

Prendere in considerazione i consigli seguenti per assicurarsi di assegnare priorità alle attività che traggono vantaggio dalla maggior parte dell'automazione:

  • Mirano a vincere facilmente. Concentrarsi sulle attività altamente procedurali e sensibili all'errore umano. Queste attività sono altamente automatizzate. Sono chiaramente definiti, sono liberi dalle variabili che aggiungono complessità e vengono eseguite come parte delle normali operazioni. Al contrario, non assegnare priorità alle attività di automazione che richiedono la scrittura di script complessi per tenere conto di fenomeni variabili o attività che raramente si verificano.

    Esempi di attività altamente automatizzate includono il riavvio dei server, la creazione di account e il trasferimento dei log in un archivio dati. Queste attività possono verificarsi in base a una pianificazione, come risposta a un evento o a un avviso di monitoraggio o in base alle esigenze in base a fattori esterni.

  • Cercare modi per consentire agli operatori e liberare le PMI. Si potrebbero avere esperti nell'organizzazione che si basano su per le escalation che potrebbero non essere necessarie. Ad esempio, gli amministratori del database potrebbero ricevere richieste di routine per creare nuovi database quando si esegue l'onboarding di nuovi clienti nella soluzione multi-tenant. Se si compila un portale self-service per il team help desk, è possibile abilitarli per creare in modo sicuro un database vuoto. In alternativa, come passaggio intermedio, è possibile automatizzare le richieste e i passaggi per eseguire la PMI creando script da eseguire.

  • Concentrarsi sul ritorno sugli investimenti. L'automazione ad alto valore richiede un sovraccarico minimo di gestione e aggiunge un grado di efficienza demonstrable. Se è possibile salvare il team operativo un'ora ogni giorno automatizzando le voci del database, ad esempio, si dà tempo per trovare altre aree per migliorare.

Aree per implementare l'automazione

Adottare l'automazione nell'intero ciclo di vita del carico di lavoro, dallo sviluppo alla gestione giornaliera. Usare l'elenco seguente di esempi per considerare le aree estese del ciclo di vita del carico di lavoro che possono trarre vantaggio dall'automazione. È possibile automatizzare:

  • Definizione della pipeline, esecuzione e gestione: usare strumenti di integrazione continua e recapito continuo (CI/CD), ad esempio Azure DevOps e altri strumenti DevOps, per definire automaticamente una pipeline e come viene eseguita. Questi strumenti consentono di automatizzare attività CI/CD o altre attività, ad esempio la creazione di report.

  • Distribuzioni: usare strumenti come modelli di Azure Resource Manager, Bicep, Terraform e Ansible per automatizzare i processi di sviluppo e rilascio del carico di lavoro. Distribuire e aggiornare l'infrastruttura con le stesse piattaforme di automazione usando un approccio di infrastruttura come codice (IaC).

  • Test: molti strumenti sono disponibili per automatizzare i processi di test. Questi strumenti possono alleviare un carico significativo dal team di garanzia della qualità e garantire che i test siano standardizzati e affidabili.

  • Ridimensionamento: usare funzionalità fornite dalla piattaforma e altri strumenti, ad esempio strumenti di orchestrazione, per ridimensionare automaticamente l'infrastruttura quando il carico aumenta o diminuisce.

  • Monitoraggio e avviso: usare gli strumenti disponibili nella soluzione di monitoraggio per registrare automaticamente le risorse distribuite e configurare le azioni attivate dall'avviso per facilitare la correzione dei problemi.

  • Auto-guarigione: usare gli avvisi generati dal sistema di monitoraggio per automatizzare le azioni e ripristinare componenti o processi non funzionanti. Per altre informazioni, vedere Raccomandazioni per la auto-guarigione e la conservazione automatica.

  • Gestione della configurazione: usare gli strumenti di orchestrazione e criteri per garantire che tutte le risorse eseguano la stessa configurazione e che i requisiti di conformità vengano applicati nel carico di lavoro.

  • Altre attività amministrative: usare script per automatizzare attività ripetitive come l'aggiornamento di record di database o record DNS.

  • Approvazioni: abilitare i sistemi per prendere automaticamente decisioni di approvazione in base alle regole predefinite per migliorare l'efficienza per i flussi di lavoro con porte di approvazione. Questo metodo incoraggia l'uso di moduli e modelli standardizzati, che aumentano l'efficienza dei processi. L'approvazione automatica in ambienti elevati può essere rischiosa. Concentrarsi strettamente e testare le approvazioni automatizzate per garantire che siano definiti criteri specifici per concedere l'approvazione.

  • Nuovo utente e nuovo onboarding dei dipendenti: è possibile automatizzare molte attività associate all'onboarding di nuovi utenti di applicazioni o nuovi dipendenti, ad esempio aggiornamenti del database e creazione di credenziali.

  • Monitoraggio e avviso: sfruttare le funzionalità di automazione offerte dalla piattaforma di osservazione. Registrare automaticamente nuovi dispositivi per monitorare e avvisare le anomalie.

Scegliere uno strumento di automazione appropriato

Lo sviluppo di automazione in casa è intensivo del tempo e può introdurre il carico di gestione per il team di sviluppo. Hanno bisogno di mantenere uno strumento di automazione in casa come fanno qualsiasi altro software in-house. È consigliabile usare gli strumenti off-the-shelf ogni volta che possono soddisfare le proprie esigenze. Tra strumenti commerciali, open source e piattaforma cloud, sono disponibili molte opzioni. È probabile che si userà un'ampia gamma di strumenti per creare l'automazione necessaria. Affidarsi alle proprie competenze interne per aiutare a guidare le decisioni durante la valutazione degli strumenti. Il team potrebbe avere familiarità con determinati linguaggi di sviluppo e framework. È inizialmente possibile concentrarsi sugli strumenti off-the-shelf che possono usare senza una curva di apprendimento elevata. Riflettere sulle attività che si prevede di affrontare con l'automazione e investire negli strumenti che possono risolvere in modo specifico tali attività. Non procurare strumenti che si preferisce in genere e quindi prendere in considerazione le attività in seguito.

Tenere presente i fattori che possono complicare le operazioni quando si compila l'automazione, ad esempio l'overuse del blocco della versione e il plug-in. I plug-in, ad esempio Jenkins o Azure DevOps, sono un ottimo modo per aggiungere funzionalità. È consigliabile adottare plug-in quando offre vantaggi agli obiettivi di automazione. Ma quando si usano più plug-in per eseguire una singola attività, può rendere difficili gli aggiornamenti di automazione e la risoluzione dei problemi. Essere judici nell'uso dei plug-in. Evitare anche soluzioni con dipendenze della versione del framework perché sono un carico di lavoro da mantenere nel tempo. Per ridurre al minimo il rischio di questi tipi di problemi, standardizzare la selezione di strumenti e plug-in di automazione e usare il controllo del codice sorgente per tutti i progetti di automazione.

Integrare l'automazione nel carico di lavoro

Per qualsiasi strumento usato per compilare l'automazione, renderlo facilmente accessibile e gestibile per gli operatori. Fornire interfacce chiare e facili da usare per il team del carico di lavoro. È possibile fornire l'accesso alle pipeline CI/CD, alle API e alle librerie. Analogamente al carico di lavoro supportato dall'automazione, è necessario gestire l'automazione in modo olistico. Proteggere l'automazione allo stesso livello di altri componenti del carico di lavoro. Monitorare l'automazione e sottoporla agli stessi protocolli di test di altri componenti del carico di lavoro.

Considerazioni

  • A volte le efficienze ottenute dall'automazione superano il carico di gestione dello sviluppo della propria soluzione se non si adattano alle proprie esigenze. In questi casi, essere insoddibili negli sforzi di sviluppo. Concentrarsi strettamente sullo sviluppo solo di ciò che è necessario coprire le lacune che non è possibile risolvere con soluzioni off-the-shelf e ridurre al minimo le complessità come le dipendenze.

  • L'automazione complessa che richiede un livello elevato di manutenzione può essere difficile per i team operativi di gestire e risolvere i problemi. Mantenere strettamente incentrate le attività automatizzate solo sull'esecuzione di processi discreti. Provare a ridurre al minimo le dipendenze su altri strumenti o componenti.

  • È consigliabile usare processi manuali. Se si decide di non automatizzare un'operazione, documentare accuratamente il processo manuale creando un elenco di controllo dettagliato per gli operatori. Questa pratica riduce le probabilità di errore umano, come un operatore che esegue erroneamente il processo sbagliato. Questa documentazione consente anche di progettare l'automazione per tale processo in futuro.

  • Quando si usa un approccio manuale e automatizzato ibrido, è necessario prestare particolare attenzione. Se uno script esegue la maggior parte di un processo, ma quindi defera a un uomo per una parte o una decisione specifica, è importante dare alla persona il contesto e le informazioni necessarie per prendere una decisione informata.

Facilitazione di Azure

Azure offre molti strumenti per automatizzare le attività per il carico di lavoro.

Strumenti IaC: è possibile usare Terraform, Bicep e Azure Resource Manager per le distribuzioni IaC. A seconda dei requisiti e della familiarità del team con gli strumenti, è possibile usare uno o più di questi strumenti per le distribuzioni e la gestione delle risorse.

Funzioni di Azure: Funzioni di Azure è uno strumento serverless che è possibile usare per automatizzare le attività usando il linguaggio di sviluppo preferito. Le funzioni offrono un set completo di trigger e binding basati su eventi che connettono le funzioni ad altri servizi. Non è necessario scrivere codice aggiuntivo.

GitHub Actions per Azure: è possibile usare GitHub Actions per Azure per automatizzare i processi CI/CD. GitHub Actions si integra con Azure per semplificare le distribuzioni. È possibile creare flussi di lavoro che compilano e testano ogni richiesta pull nel repository o distribuiscono richieste pull unite nell'ambiente di produzione.

GitHub Actions supera solo DevOps e consente di eseguire flussi di lavoro quando si verificano altri eventi nel repository. Ad esempio, è possibile eseguire un flusso di lavoro per aggiungere automaticamente etichette appropriate quando un utente crea un nuovo problema nel repository.

Automazione di Azure: PowerShell e Python sono linguaggi di programmazione comuni per l'automazione delle attività operative. Usare queste lingue per eseguire operazioni come il riavvio dei servizi, il trasferimento dei log tra archivi dati e la scalabilità dell'infrastruttura per soddisfare la domanda. È possibile esprimere queste operazioni nel codice ed eseguirle su richiesta. Solo, queste lingue non offrono una piattaforma per la gestione centralizzata, il controllo della versione o la cronologia delle esecuzioni. Le lingue non dispongono anche di un meccanismo nativo per rispondere agli eventi come gli avvisi basati sul monitoraggio. Per fornire queste funzionalità, è necessaria una piattaforma di automazione.

Automazione offre una piattaforma ospitata da Azure per l'hosting e l'esecuzione di codice PowerShell e Python in ambienti cloud e locali, sia Azure che non Azure. Il codice PowerShell e Python viene archiviato in un runbook di Automazione. Usare Automazione per:

  • Attivare runbook su richiesta, su pianificazione o tramite un webhook.

  • Eseguire cronologia e registrazione.

  • Integrare un archivio segreti.

  • Integrare il controllo del codice sorgente.

Gestore aggiornamenti di Azure: Gestione aggiornamenti è un servizio unificato per gestire e gestire gli aggiornamenti per le macchine virtuali. È possibile monitorare la conformità degli aggiornamenti di Windows e Linux nel carico di lavoro. È anche possibile usare Gestione aggiornamenti per apportare aggiornamenti in tempo reale o pianificarli all'interno di una finestra di manutenzione definita. Usare Gestione aggiornamenti per:

  • Controlla la conformità sull'intera flotta di macchine.
  • Pianificare gli aggiornamenti ricorrenti
  • Distribuire aggiornamenti critici

Ambienti di distribuzione di Azure: gli ambienti di distribuzione consentono ai team di sviluppo di creare rapidamente un'infrastruttura di app coerente usando modelli basati su progetto. Questi modelli riducono al minimo il tempo di configurazione e ottimizzano la sicurezza, la conformità e l'efficienza dei costi. Un ambiente di distribuzione è una raccolta di risorse di Azure distribuite nelle sottoscrizioni predefinite. Gli amministratori dell'infrastruttura di sviluppo possono applicare i criteri di sicurezza aziendali e fornire un set curato di modelli IaC predefiniti.

Gli amministratori dell'infrastruttura di sviluppo definiscono gli ambienti di distribuzione come elementi del catalogo. Gli elementi del catalogo sono ospitati in un repository GitHub o Azure DevOps, denominato catalogo. Un elemento del catalogo è costituito da un modello IaC e da un file manifest.yaml.

È possibile creare uno script per creare ambienti di distribuzione e gestire a livello di codice gli ambienti.

App per la logica di Azure e Microsoft Power Automate: quando si compila l'automazione del processo digitale (DPA) personalizzata per gestire le attività del carico di lavoro, ad esempio i flussi di approvazione o la creazione di integrazioni chatops, valutare l'uso di App per la logica o Power Automate. È possibile costruire flussi di lavoro da connettori e modelli predefiniti. Le app per la logica e Power Automate sono basate sulla stessa tecnologia sottostante e sono entrambe adatte per le attività basate su trigger o basate sul tempo.

Scalabilità automatica: molte tecnologie di Azure dispongono di funzionalità di scalabilità automatica predefinite. È anche possibile programmare altri servizi per ridimensionare automaticamente usando le API. Per altre informazioni, vedere Raccomandazioni per la progettazione di una strategia di scalabilità affidabile.

Gruppi di azioni di Monitoraggio di Azure: per eseguire automaticamente operazioni di auto-guarigione quando viene attivato un avviso, usare gruppi di azioni di Monitoraggio di Azure. È possibile definire queste operazioni usando un runbook, una funzione di Azure o un webhook.

Esempio

Per un esempio di uso di Automazione in combinazione con altri servizi di Azure, vedere Automazione operazioni tramite Griglia di eventi di Azure. Questo esempio usa App per la logica e Griglia di eventi per automatizzare le attività operative.

Elenco di controllo Di eccellenza operativa

Fare riferimento al set completo di raccomandazioni.