Condividi tramite


Raccomandazioni per l'implementazione dell'automazione

Si applica a questa raccomandazione dell'elenco di controllo per l'eccellenza operativa di Well-Architected Framework:

OE:09 Automatizzare tutte le attività che non traggono vantaggio dalle informazioni dettagliate e dall'adattabilità dell'intervento umano, sono estremamente procedurali e hanno una durata di conservazione 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 di Well-Architected Framework alla progettazione e all'implementazione.

Questa guida descrive le raccomandazioni 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 il carico di lavoro. L'automazione consente ai team operativi e tecnici 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 supportare l'organizzazione.

Strategie di progettazione chiave

Durante lo sviluppo del carico di lavoro, cercare le 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à semplici, procedurali e avere una durata lunga. 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à.

Valutare le attività da automatizzare

Considerare i consigli seguenti per assicurarsi di classificare in ordine di priorità le attività che traggono il massimo vantaggio dall'automazione:

  • Mirano a vincere facilmente. Concentrarsi sulle attività altamente procedurali e soggette a errori umani. 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 classificare in ordine di priorità le attività di automazione che richiedono la scrittura di script complessi per tenere conto dei fenomeni variabili o delle 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, in risposta a un evento o a un avviso di monitoraggio o in base alle esigenze in base a fattori esterni.

  • Cerca modi per potenziare gli operatori e liberare le tue PMI. Si potrebbero avere esperti dell'organizzazione su cui si basa per le escalation che potrebbero non essere necessarie. Ad esempio, gli amministratori di database potrebbero ricevere regolarmente richieste per creare nuovi database quando si esegue l'onboarding di nuovi clienti nella soluzione multi-tenant. Se si crea un portale self-service per il team help desk, è possibile abilitarli per creare in modo sicuro un database vuoto. Oppure come passaggio intermedio, è possibile automatizzare le richieste e i passaggi per l'esecuzione dello SME creando script da eseguire.

  • Concentrarsi sul ritorno sugli investimenti. L'automazione ad alto valore richiede un sovraccarico di gestione minimo e aggiunge un grado di efficienza demonstrable. Se è possibile salvare il team operativo un'ora ogni giorno automatizzando le voci del database, ad esempio, è possibile 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 quotidiana. Usare l'elenco di esempi seguente per considerare le ampie aree del ciclo di vita del carico di lavoro che possono trarre vantaggio dall'automazione. È possibile automatizzare:

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

  • Distribuzioni: usare strumenti come i 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 IaC (Infrastructure as Code).

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

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

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

  • Riparazione automatica: usare gli avvisi generati dal sistema di monitoraggio per automatizzare le azioni e ripristinare i componenti o i processi non funzionanti. Per altre informazioni, vedere Raccomandazioni per la riparazione automatica 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: consente ai sistemi di prendere automaticamente decisioni di approvazione in base alle regole predefinite per migliorare l'efficienza per i flussi di lavoro con controlli di approvazione. Questo metodo incoraggia l'uso di moduli e modelli standardizzati, aumentando così l'efficienza dei processi. L'approvazione automatica in ambienti elevati può essere rischiosa. Concentrarsi attentamente e testare le approvazioni automatizzate per assicurarsi che vengano 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 gli aggiornamenti del database e la creazione delle credenziali.

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

Scegliere uno strumento di automazione appropriato

Lo sviluppo interno dell'automazione è intensivo del tempo e può introdurre carico di gestione per il team di sviluppo. Hanno bisogno di mantenere uno strumento di automazione interno come fanno qualsiasi altro software interno. È consigliabile usare strumenti predefiniti ogni volta che possono soddisfare le proprie esigenze. Tra strumenti disponibili per piattaforme commerciali, open source e cloud, sono disponibili molte opzioni. È probabile che si usi un'ampia gamma di strumenti per creare l'automazione necessaria. Affidarsi alle competenze interne per aiutare a guidare le decisioni durante la valutazione degli strumenti. Il team potrebbe avere familiarità con determinati linguaggi e framework di sviluppo. Inizialmente è possibile concentrarsi sugli strumenti 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 procurarsi strumenti che in genere si preferisce e quindi prendere in considerazione le attività in un secondo momento.

Tenere presente i fattori che possono complicare le operazioni quando si compila l'automazione, ad esempio il blocco della versione e l'uso eccessivo del plug-in. I plug-in, come Jenkins o i plug-in di Azure DevOps, sono un ottimo modo per aggiungere funzionalità. È consigliabile adottare plug-in quando offre vantaggi agli obiettivi di automazione. Tuttavia, quando si usano più plug-in per eseguire una singola attività, può rendere difficili gli aggiornamenti di automazione e la risoluzione dei problemi. Siate succosi nell'uso dei plug-in. Evitare anche soluzioni con dipendenze della versione del framework perché sono un carico di lavoro da gestire 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 creare 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 a pipeline, API e librerie CI/CD. 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 di una soluzione personalizzata se le soluzioni non sono adatte alle proprie esigenze. In questi casi, essere succoso nei vostri sforzi di sviluppo. Concentrarsi strettamente sullo sviluppo solo di ciò che è necessario coprire le lacune che non è possibile risolvere con soluzioni non aggiornate e ridurre al minimo le complessità come le dipendenze.

  • L'automazione complessa che richiede un elevato grado di manutenzione può essere difficile per i team operativi di gestire e risolvere i problemi. Mantenere le attività automatizzate strettamente incentrate sull'esecuzione di processi discreti. Provare a ridurre al minimo le dipendenze da 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, ad esempio un operatore che esegue erroneamente il processo errato. Questa documentazione consente anche di progettare l'automazione per tale processo in futuro.

  • Quando si usa un approccio manuale ibrido e automatizzato, è necessario prestare particolare attenzione. Se uno script esegue la maggior parte di un processo, ma poi rinvia a un essere umano per una determinata parte o decisione, è importante fornire alla persona il contesto e le informazioni necessarie per prendere una decisione informata.

Facilitazione di Azure

Azure offre molti strumenti che consentono di 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. Funzioni offre un set completo di trigger e associazioni 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 va oltre 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 automatizzare le attività operative. Usare questi linguaggi 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. Da solo, questi linguaggi non offrono una piattaforma per la gestione centralizzata, il controllo della versione o la cronologia di esecuzione. I linguaggi non dispongono anche di un meccanismo nativo per rispondere a eventi come gli avvisi basati sul monitoraggio. Per fornire queste funzionalità, è necessaria una piattaforma di automazione.

Automazione offre una piattaforma ospitata in 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. L'automazione può essere utilizzata nei contesti indicati di seguito.

  • Attivare runbook su richiesta, in base a una pianificazione o tramite un webhook.

  • Cronologia di esecuzione e registrazione.

  • Integrare un archivio segreti.

  • Integrare il controllo del codice sorgente.

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

  • Supervisionare la conformità sull'intera flotta di macchine.
  • Pianificare gli aggiornamenti ricorrenti
  • Distribuire gli 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 in sottoscrizioni predefinite. Gli amministratori dell'infrastruttura di sviluppo possono applicare 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 script per la creazione di ambienti di distribuzione e gestire gli ambienti a livello di codice.

App per la logica di Azure e Microsoft Power Automate: quando si crea un'automazione del processo digitale personalizzata (DPA) per gestire attività del carico di lavoro come flussi di approvazione o compilazione di integrazioni ChatOps, è consigliabile usare 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 hanno 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 riparazione automatica quando viene attivato un avviso, usare i 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 delle operazioni usando Griglia di eventi di Azure. Questo esempio usa App per la logica e Griglia di eventi per automatizzare le attività operative.

Elenco di controllo per l'eccellenza operativa

Fare riferimento al set completo di raccomandazioni.