SlideShare a Scribd company logo
AZURE WELL-
ARCHITECTED
FRAMEWORK
Sessione 5 di 6
ABOUT ME
➤ Rauno De Pasquale, Co-Founder and CTO at Newesis Srl,
constantly trying to reconcile his degree in Philosophy with
a passion for computer science. After almost 18 year at
Deltatre, at the beginning of 2019 he creates Newesis, with
the aim of simplifying the use of the most advanced
services of Cloud platforms even in fields other than sports.
➤ Newesis is a pure technology based, Cloud Native company,
having as a target to support and evolve adoption of
DevOps culture and practices, with particular focus on
Kubernetes as technological platform.
➤ Twitter: @RaunoDepa
➤ Twitter: @newesissrl
AZURE WELL-ARCHITECTED FRAMEWORK –
SESSIONE 5 DI 6 - AGENDA
➤ Posizione nel percorso complessivo
➤ Panoramica
➤ Principi
➤ Automazione
➤ Release Management
➤ Monitoring e
➤ Observability
INTRODUZIONE
Posizione nel percorso
AZURE WELL-ARCHITECTED FRAMEWORK –
PERCORSO
➤ I Modulo: introduzione, principi e concetti base
➤ II Modulo: affidabilità
➤ III Modulo: sicurezza
➤ IV Modulo: ottimizzazione dei costi
➤ V Modulo: eccellenza operativa
➤ VI Modulo: efficienza delle prestazioni
ECCELLENZA
OPERATIVA
Panoramica
ECCELLENZA OPERATIVA - PANORAMICA
➤ Il pilastro dell'eccellenza operativa riguarda i
processi operativi che mantengono
un'applicazione in esecuzione nell'ambiente di
produzione. Le distribuzioni devono essere
affidabili e prevedibili. Le distribuzioni
automatizzate riducono la probabilità di errori
umani.
➤ I processi di distribuzione veloci e di routine non
rallentano il rilascio di nuove funzionalità o
correzioni di bug. Altrettanto importante è essere
in grado di eseguire rapidamente il rollback o il
roll forward in caso di problemi di aggiornamento.
ECCELLENZA
OPERATIVA
Principi
ECCELLENZA OPERATIVA - PRINCIPI
➤ Considerare e migliorare il modo in cui il software viene sviluppato, distribuito, gestito e
manutenuto è una parte del raggiungimento di una competenza più elevata nelle operazioni.
➤ Altrettanto importante è fornire una cultura nei team a favore di sperimentazione e crescita,
per la ricerca continua di soluzioni per razionalizzare lo stato corrente delle operazioni e
sviluppare piani di risposta agli eventi imprevisti.
➤ I principi di eccellenza operativa sono una serie di considerazioni che consentono di ottenere
procedure operative ottimali.
ECCELLENZA OPERATIVA - PRINCIPI
➤ Metodologie DevOps
➤ La contrazione di "Dev" e "Ops" si riferisce alla sostituzione delle attività di sviluppo e
operative rigidamente definite per creare team multidisciplinari in grado di interagire con
procedure e strumenti condivisi ed efficienti.
➤ Le procedure DevOps essenziali includono la pianificazione agile, l'integrazione continua, la
distribuzione continua e il monitoraggio delle applicazioni.
ECCELLENZA OPERATIVA - PRINCIPI
➤ Principi DevOps – CAMS
➤ Culture
➤ "Quando mi è stato chiesto quale fosse la cosa più difficile nell'adottare DevOps, ho risposto - senza esitazione - alle persone"
(Donovan Brown). Persone e processi prima di tutto. Se non hai cultura, tutti i tentativi di automazione saranno infruttuosi.
➤ Automation
➤ La piena indipendenza e responsabilità del team per la fornitura di valore all'utente finale è un principio fondamentale di DevOps.
L'automazione è fondamentale non solo per consentire iterazioni più veloci, ma nello specifico per rendere il processo ripetibile
indipendentemente dalla presenza di una determinata persona o gruppo di persone.
➤ Measurement
➤ Il processo di miglioramento continuo (Kaizen) è al centro di DevOps. Se non puoi misurare, non puoi migliorare. Un'implementazione
Devops di successo misurerà tutto ciò che può il più spesso possibile.
➤ Sharing
➤ Il trasferimento della conoscenza mira ad evitare vincoli nell'organizzazione e a promuovere l'intelligenza collettiva. La visibilità
consente di sapere se il lavoro di un team può introdurre un problema in un altro team e consente anche un feedback tempestivo. La
trasparenza è ciò che consente a tutti di lavorare per un obiettivo comune.
ECCELLENZA OPERATIVA - PRINCIPI
➤ Ottimizzare i processi di compilazione e rilascio
➤ Dal provisioning secondo pratiche di «Infrastructure as code», alla compilazione e al rilascio
con pipeline CI/CD, ai test automatizzati: tutto disegnato con l’intento di applicare le
discipline di ingegneria del software all'intero ambiente.
➤ Questo approccio garantisce che la creazione e la gestione degli ambienti in tutto il ciclo di
vita dello sviluppo software siano coerenti, ripetibili e consentano il rilevamento anticipato
dei problemi.
ECCELLENZA OPERATIVA - PRINCIPI
➤ Monitorare l'intero sistema e comprendere l'integrità operativa
➤ Implementare sistemi e processi per monitorare i processi di compilazione e rilascio,
l'integrità dell'infrastruttura e l'integrità delle applicazioni. I dati di telemetria sono
fondamentali per comprendere l'integrità di un carico di lavoro e se il servizio è in grado di
soddisfare gli obiettivi aziendali.
ECCELLENZA OPERATIVA - PRINCIPI
➤ Eseguire la prova del ripristino e dell'errore di pratica
➤ Eseguire esercitazioni di ripristino di emergenza con una cadenza regolare e usare procedure
di progettazione per identificare e correggere i punti deboli nell'affidabilità delle
applicazioni.
➤ Le prove regolari delle condizione di errore convalideranno l'efficacia dei processi di
ripristino e garantiranno che i team conoscano le proprie responsabilità.
ECCELLENZA OPERATIVA - PRINCIPI
➤ Gestione di eventi imprevisti
➤ Quando si verificano eventi imprevisti, è necessario avere ben pensato ai piani e alle
soluzioni per la gestione degli eventi imprevisti, la comunicazione degli eventi imprevisti e i
cicli di feedback.
➤ Raccogliere e formalizzare le lezioni apprese da ogni evento imprevisto e creare elementi di
telemetria e monitoraggio per evitare eventi futuri.
ECCELLENZA
OPERATIVA
Automazione
ECCELLENZA OPERATIVA - AUTOMAZIONE
➤ L'automazione ha rivoluzionato il funzionamento delle aziende e questa tendenza continua a
evolversi.
➤ Le aziende sono sempre più impegnate all'automazione dei processi manuali in modo che i
tecnici possano concentrare l'attenzione sulle attività che aggiungono valore aziendale.
➤ L'automazione delle soluzioni aziendali consente di:
• Attivare le risorse su richiesta.
• Distribuire rapidamente le soluzioni.
• Ridurre al minimo gli errori umani nella configurazione di attività ripetitive.
• Produrre risultati coerenti e ripetibili.
ECCELLENZA OPERATIVA - AUTOMAZIONE
➤Infrastruttura ripetibile
➤ In genere, la distribuzione di un nuovo servizio o di un'applicazione comporta il lavoro
manuale, ad esempio la preparazione dell'hardware, la configurazione degli ambienti
operativi e l'abilitazione di soluzioni di monitoraggio. Idealmente, un'organizzazione avrebbe
più ambienti in cui testare le distribuzioni. Questi ambienti di test devono essere
sufficientemente simili all'ambiente di produzione in modo che i problemi di distribuzione e
di esecuzione possano essere rilevati prima della distribuzione nell'ambiente di produzione.
Questo lavoro manuale richiede tempo, è ingigantito da errori e può generare incoerenze tra
gli ambienti se non è stato eseguito correttamente.
ECCELLENZA OPERATIVA - AUTOMAZIONE
➤Infrastruttura ripetibile
➤ Il cloud computing cambia il modo in cui si acquista l'infrastruttura. Non si sta più unboxing,
racking e cablaggio dell'infrastruttura fisica. Sono disponibili portali di gestione accessibili a
Internet e interfacce REST utili. È ora possibile effettuare il provisioning di macchine virtuali,
database e altri servizi cloud su richiesta e a livello globale. Quando i servizi cloud non sono
più necessari, possono essere eliminati facilmente. Tuttavia, la cloud computing da sola non
elimina il lavoro e i rischi nel provisioning dell'infrastruttura. Quando si usa un portale cloud
per creare sistemi, molte delle stesse attività di configurazione manuale rimangono. I server
applicazioni richiedono la configurazione, i database richiedono la rete e i firewall richiedono
interfacce e regole.
ECCELLENZA OPERATIVA - AUTOMAZIONE
➤ Distribuire l'infrastruttura con il codice
➤ Per realizzare completamente l'ottimizzazione della distribuzione, ridurre il lavoro di configurazione e
automatizzare la distribuzione completa degli ambienti, è necessario qualcosa di più. Un'opzione viene
definita infrastruttura come codice (Infrastructure as Code, IaC).
➤ Per IaC si intende la gestione dell'infrastruttura (reti, macchine virtuali, servizi di bilanciamento del
carico e topologia di connessione) in un modello descrittivo, usando un sistema di controllo delle
versioni simile a quello usato per il codice sorgente. Quando si crea un'applicazione, lo stesso codice
sorgente genererà lo stesso file binario ogni volta che viene compilato. Analogamente, un modello di
infrastruttura come codice genera lo stesso ambiente ogni volta che viene applicato.
➤ L’automazione nella creazione e gestione di infrastrutture è una procedura DevOps essenziale e viene
spesso usata in combinazione con la distribuzione continua.
➤ In definitiva, IaC consente all'utente e al team di sviluppare e rilasciare le modifiche più rapidamente, ma
con maggiore attendibilità nelle distribuzioni.
ECCELLENZA OPERATIVA - AUTOMAZIONE
➤Eseguire il processo di integrazione
➤Se si dispone di un processo tramite il quale le modifiche al
codice vengono esaminate tramite peer, è possibile usare lo
stesso processo per esaminare le modifiche dell'infrastruttura.
➤Questo processo di revisione consente di rilevare in modo
proattivo le configurazioni problematiche difficili da rilevare
quando si apportano modifiche manuali all'infrastruttura.
ECCELLENZA OPERATIVA - AUTOMAZIONE
➤ Coerenza
➤ L'esecuzione di un processo IaC garantisce che l'intero team segua un processo standard e
consolidato.
➤ Alcune organizzazioni designano un singolo o piccolo gruppi di utenti responsabili della
distribuzione e della configurazione dell'infrastruttura. Seguendo un processo
completamente automatizzato, la responsabilità delle distribuzioni dell'infrastruttura passa
dai singoli utenti al processo di automazione e agli strumenti.
➤ Questo spostamento amplia il numero di membri del team che possono avviare le
distribuzioni dell'infrastruttura mantenendo la coerenza e la qualità.
ECCELLENZA OPERATIVA - AUTOMAZIONE
➤ Analisi automatizzata
➤ Molti tipi di configurazioni IaC possono essere analizzati tramite strumenti automatizzati.
Uno di questi tipi di strumenti è linting per verificare la presenza di errori nel codice o per
analizzare le modifiche proposte all'infrastruttura per assicurarsi che seguano le procedure
consigliate per la sicurezza e le prestazioni, ad esempio per garantire che gli account di
archiviazione siano configurati per bloccare le connessioni non protette.
ECCELLENZA OPERATIVA - AUTOMAZIONE
➤ Gestione dei segreti
➤ La maggior parte delle soluzioni richiede la manutenzione e la gestione dei segreti. tra cui
stringhe di connessione, chiavi API, segreti client e certificati. Seguendo un approccio IaC, è
necessario adottare le procedure consigliate per la gestione dei segreti.
➤ Ad esempio, Azure Key Vault può essere usato per archiviare i segreti in modo sicuro.
➤ Key Vault possibile integrare molti strumenti e configurazioni IaC per garantire che la
persona che esegue la distribuzione non necessiti dell'accesso ai segreti di produzione.
ECCELLENZA OPERATIVA - AUTOMAZIONE
➤ Evitare la deriva della configurazione
➤ Quando si usa IaC, è possibile ridistribuire tutti i modelli di ambiente in ogni versione della
soluzione.
➤ Gli strumenti IaC sono in genere creati per essere idempotenti ,ad esempio per poter essere
eseguiti più volte senza effetti negativi.
➤ In genere, la prima distribuzione di una configurazione IaC distribuirà effettivamente la
configurazione, mentre le ridistribuzioni successive fungeranno essenzialmente da "no-ops"
e non avranno alcun effetto.
➤ É possibile automotizzare la correzione delle derive, onde evitare che interventi fatti
esternamente alla catena di IaC possano permanere sui sistemi.
ECCELLENZA OPERATIVA - AUTOMAZIONE
➤ Categorie di strumenti IaC
➤ È possibile usare molte tecnologie di distribuzione dell'infrastruttura con Azure. Queste
categorie rientrano in due categorie principali.
➤ IaC imperativo prevede la scrittura di script in un linguaggio come Bash, PowerShell, file di
script C# o Python. Questi passaggi vengono eseguiti a livello di codice per creare o
modificare le risorse. Quando si usano distribuzioni imperative, è necessario gestire elementi
come la sequenziazione delle dipendenze, il controllo degli errori e gli aggiornamenti delle
risorse.
➤ IaC dichiarativo prevede la scrittura di una definizione dell'aspetto dell'ambiente. Gli
strumenti quindi illustrano come eseguire questa operazione controllando lo stato corrente,
confrontandolo con lo stato di destinazione richiesto e applicando le differenze.
ECCELLENZA OPERATIVA - AUTOMAZIONE
➤ Azure Resource Manager (ARM)
➤ Azure Resource Manager (ARM) fornisce un'infrastruttura nativa di Azure come soluzione di
Infrastructure as code.
➤ I modelli arm sono scritti in un linguaggio derivato da JavaScript Object Notation (JSON) e
definiscono l'infrastruttura e le configurazioni per le distribuzioni di Azure. Un modello arm è
dichiarativo, indica cosa intende distribuire, fornisce i valori di configurazione e il motore di
Azure si occupa di effettuare le richieste put dell'API REST di Azure necessarie.
ECCELLENZA OPERATIVA - AUTOMAZIONE
➤ Terraform
➤ Terraform è un framework dichiarativo per la distribuzione e la configurazione
dell'infrastruttura che supporta molti cloud privati e pubblici, tra cui Azure.
➤ Ha il vantaggio principale di offrire un framework indipendente dal cloud e moduli per un
numero molto alto di piattaforme.
➤ Anche se le configurazioni terraform sono specifiche per ogni cloud, il framework stesso è lo
stesso per tutti. Le configurazioni Terraform vengono scritte in un linguaggio specifico di
dominio (DSL) denominato Hashicorp Configuration Language.
ECCELLENZA OPERATIVA - AUTOMAZIONE
➤ Configure l’infrastruttura
➤ Quando si usa Azure, molti servizi possono essere creati e configurati a livello di codice
usando l'automazione o l'infrastruttura come strumenti di codice. Questi strumenti
accedono ad Azure tramite le API REST esposte o il piano di controllo di Azure. Ad esempio, è
possibile distribuire un gruppo di sicurezza di rete di Azure e creare regole del gruppo di
sicurezza usando un modello Azure Resource Manager sicurezza. Il gruppo di sicurezza di
rete e la relativa configurazione vengono esposti tramite il piano di controllo di Azure e
accessibili in modo nativo.
➤ Non è possibile accedere ad altre configurazioni, ad esempio l'installazione di software in
una macchina virtuale, l'aggiunta di dati a un database o l'avvio di pod in un cluster servizio
Azure Kubernetes tramite il piano di controllo di Azure. Queste azioni richiedono un set
diverso di strumenti di configurazione.
ECCELLENZA OPERATIVA - AUTOMAZIONE
➤ Estensioni di VM di Azure
➤ Le estensioni delle macchine virtuali di Azure sono pacchetti di piccole dimensioni che
eseguono la configurazione e l'automazione post-distribuzione nelle macchine virtuali di
Azure. Sono disponibili diverse estensioni per molte attività di configurazione diverse, ad
esempio l'esecuzione di script, la configurazione di soluzioni antimalware e la configurazione
di soluzioni di registrazione. Queste estensioni possono essere installate ed eseguite in
macchine virtuali usando un modello arm, l'interfaccia della riga di comando di Azure, Azure
PowerShell modulo o il portale di Azure. Ogni macchina virtuale di Azure ha un agente di
macchine virtuali installato e questo agente gestisce il ciclo di vita dell'estensione.
➤ Un caso d'uso tipico dell'estensione vm è l'uso di un'estensione di script personalizzata per
installare software, eseguire comandi ed eseguire configurazioni in una macchina virtuale o
in un set di scalabilità di macchine virtuali.
ECCELLENZA OPERATIVA - AUTOMAZIONE
➤ Cloud-init
➤ cloud-init è uno strumento noto del settore per la configurazione di macchine virtuali Linux
al primo avvio. Analogamente all'estensione di script personalizzata di Azure, cloud-init
consente di installare pacchetti ed eseguire comandi in macchine virtuali Linux.
➤ cloud-init può essere usato per operazioni come l'installazione del software, le configurazioni
di sistema e la gestione temporanea del contenuto.
➤ Azure include molte immagini di macchine virtuali del Marketplace abilitate per cloud-init in
molte delle distribuzioni Linux più note.
ECCELLENZA OPERATIVA - AUTOMAZIONE
➤ Automatizzare le attività operative
➤ Le attività operative possono includere qualsiasi azione o attività che è possibile eseguire
durante la gestione dei sistemi, dell'accesso al sistema e dei processi.
➤ Alcuni esempi includono il riavvio dei server, la creazione di account e la spedizione di log a
un archivio dati.
➤ Queste attività possono verificarsi in base a una pianificazione, come risposta a un evento o
a un avviso di monitoraggio o ad-hock in base a fattori esterni. Come molte altre attività
correlate alla gestione dei sistemi informatici, queste attività vengono spesso eseguite
manualmente, il che richiede tempo e porta il rischio di errore.
➤ Molte di queste attività operative possono e devono essere automatizzate. Usando le
tecnologie di scripting e le soluzioni correlate.
ECCELLENZA OPERATIVA - AUTOMAZIONE
➤ Function – Automation Account Playbook – Logic App
➤ PowerShell e Python sono linguaggi di programmazione comuni per l'automazione delle
attività operative. Usando questi linguaggi, l'esecuzione di operazioni come il riavvio dei
servizi, lo spostamento dei log tra archivi dati e il ridimensionamento dell'infrastruttura per
soddisfare la domanda possono essere espressi nel codice ed eseguiti su richiesta.
➤ Azure Functions, Automation Account Playbook e Logic App sono tutte piattaforme
utilizzabili per realizzare esecuzioni automatiche, a tempo o basate su eventi.
ECCELLENZA
OPERATIVA
Release Management
ECCELLENZA OPERATIVA – RELEASE MANAGEMENT
➤ Integrazione continua
➤ L'integrazione continua è una procedura di sviluppo software in base alla quale gli
sviluppatori integrano gli aggiornamenti software in un sistema di controllo del codice
sorgente a cadenza regolare.
➤ Il processo di integrazione continua viene avviato quando un tecnico crea una richiesta pull
che segnala al sistema di integrazione continua che le modifiche al codice sono pronte per
essere integrate.
➤ Idealmente, l'integrazione convalida il codice in base a diverse baseline e test e fornisce un
rapido feedback al tecnico richiedente sullo stato di questi test. Supponendo che i controlli e
i test di base siano stati eseguiti correttamente, il processo di integrazione produce e
distribuisce in fasi asset come il codice compilato e le immagini dei contenitori che
distribuiranno infine il software aggiornato.
ECCELLENZA OPERATIVA – RELEASE MANAGEMENT
➤ Pipeline di integrazione continua
➤ Una pipeline di integrazione continua include un software, in molti casi ospitato nel cloud,
che fornisce una piattaforma per l'esecuzione di test automatizzati, analisi di conformità,
creazione di report e tutti i componenti aggiuntivi che costituiscono il processo di
integrazione continua. Nella maggior parte dei casi, il software della pipeline viene collegato
al controllo del codice sorgente in modo che quando vengono create richieste pull o il
software viene unito in un ramo specifico e viene eseguita la pipeline di integrazione
continua. L'integrazione del controllo del codice sorgente offre anche la possibilità di fornire
commenti e suggerimenti sull'integrazione continua direttamente nella richiesta pull.
ECCELLENZA OPERATIVA – RELEASE MANAGEMENT
➤ Automazione dei test
➤ Il test è uno dei componenti fondamentali e in DevOps e lo sviluppo Agile in generale. Se
l'automazione DevOps la velocità e l'agilità necessarie per distribuire rapidamente il
software, solo tramite test approfonditi tali distribuzioni raggiungeranno l'affidabilità
richiesta dai clienti.
➤ Gli errori sono più economici da correggere quando vengono rilevati in anticipo. Possono
essere costose o impossibili da correggere in un secondo momento nel ciclo di vita
dell'applicazione.
➤ Un altro aspetto da considerare è che i test devono essere eseguiti sia sul codice
dell'applicazione che sul codice dell'infrastruttura e devono essere soggetti agli stessi
controlli di qualità.
ECCELLENZA OPERATIVA – RELEASE MANAGEMENT
➤ Processo di rilascio
➤ Una delle sfide dell'automazione della distribuzione è il rilascio, che porta il software dalla
fase finale del test alla produzione.
➤ In genere è necessario eseguire questa operazione rapidamente per ridurre al minimo i
tempi di inattività.
➤ Esistono diversi approcci e modalità di rilascio.
ECCELLENZA OPERATIVA – RELEASE MANAGEMENT
➤ Blue-Green Deployment
➤ La distribuzione blu-verde comporta la distribuzione di un aggiornamento in un ambiente di
produzione separato dall'applicazione attiva per gli utenti reali.
➤ Dopo la convalida della distribuzione, viene modificato il routing del traffico alla versione
aggiornata.
➤ Un modo per eseguire questa operazione è usare gli slot di staging disponibili in Servizio app
di Azure per creare una distribuzione temporanea prima di spostarla nell'ambiente di
produzione.
ECCELLENZA OPERATIVA – RELEASE MANAGEMENT
➤ Canary Deployment
➤ Le versioni canary sono simili alle distribuzioni blu-verde. Invece di passare tutto il traffico
all'applicazione aggiornata, si instrada solo una piccola parte del traffico alla nuova
distribuzione.
➤ Se si verifica un problema, si ripristina la distribuzione precedente.
➤ In caso contrario, gradualmente più traffico viene spostato sulla nuova versione.
➤ Se si usa Servizio app di Azure, è possibile usare la funzionalità Test in produzione per gestire
una versione canary.
ECCELLENZA OPERATIVA – RELEASE MANAGEMENT
➤ GitOps
➤ L'intero sistema descritto in modo
dichiarativo.
➤ Lo stato di sistema desiderato canonico
con versione in Git.
➤ Le modifiche approvate che possono
essere applicate automaticamente al
sistema.
➤ Agenti software per garantire la
correttezza e avvisare in caso di
divergenza.
ECCELLENZA OPERATIVA – RELEASE MANAGEMENT
➤ GitOps
ECCELLENZA
OPERATIVA
Monitoring e Observability
ECCELLENZA OPERATIVA – MONITORING E
OBSERVABILITY
➤ Monitoraggio e osservabilità
➤ Ciò che non è possibile visualizzare, non è possibile misurare. Ciò che non è possibile
misurare, non è possibile migliorare. Questo assioma di gestione classico è vero anche nel
cloud. Il monitoraggio tradizionale dell'applicazione e dell'infrastruttura si basa sul fatto che
l'applicazione sia in esecuzione o meno o sul tempo di risposta che sta fornendo. Tuttavia, il
monitoraggio basato sul cloud offre molte più opportunità che è consigliabile sfruttare per
offrire agli utenti la migliore esperienza possibile.
ECCELLENZA OPERATIVA – MONITORING E
OBSERVABILITY
➤ Monitoraggio dell'applicazione
➤ Application Insights è il servizio di Azure che consente non solo di verificare che l'applicazione sia in
esecuzione correttamente, ma semplifica la risoluzione dei problemi dell'applicazione e può essere
usata per i dati di telemetria aziendali personalizzati che indicano se l'applicazione viene usata
come previsto.
➤ Per usare Application Insights sono disponibili due opzioni: il monitoraggio senza codice, in cui
l'onboarding dell'app in Application Insights non richiede alcuna modifica del codice o il
monitoraggio basato sul codice, in cui si instrumenta il codice per inviare dati di telemetria
all'Insights dell'applicazione usando Software Development Kit per il linguaggio di programmazione
preferito.
➤ È certamente possibile usare altri strumenti di gestione delle prestazioni delle applicazioni per
monitorare l'applicazione in Azure, ad esempio DataDog, NewRelic o AppDynamics.
ECCELLENZA OPERATIVA – MONITORING E
OBSERVABILITY
➤ Monitoraggio della piattaforma
➤ Application Insights è in realtà uno dei componenti di Monitoraggio di Azure, che offre
metriche e log completi per verificare lo stato del panorama applicativo completo di Azure.
Indipendentemente dal fatto che l'applicazione sia in esecuzione in macchine virtuali, servizi
app o Kubernetes, Monitoraggio di Azure consente di seguire lo stato dell'infrastruttura e di
reagire tempestivamente in caso di problemi.
➤ Assicurarsi non solo di monitorare gli elementi di calcolo che supportano il codice
dell'applicazione, ma anche la piattaforma dati: i database, gli account di archiviazione o i
data lake devono essere monitorati con attenzione, poiché le prestazioni del livello dati di
un'applicazione potrebbero avere gravi conseguenze.
ECCELLENZA OPERATIVA – MONITORING E
OBSERVABILITY
➤ Monitoraggio della rete
➤ Indipendentemente dal fattore di forma o dal linguaggio di programmazione su cui si basa
l'applicazione, la rete che connette il codice agli utenti può creare o interrompere
l'esperienza fornita dall'applicazione. Di conseguenza, il monitoraggio e la risoluzione dei
problemi della rete possono essere una risorsa importante per un team operativo. Il
componente di Monitoraggio di Azure che gestisce i componenti di rete è denominato
Network Watcher, una raccolta di strumenti di monitoraggio e risoluzione dei problemi di
rete.
ECCELLENZA OPERATIVA – MONITORING E
OBSERVABILITY
➤ Altre fonti di informazioni
➤ Non solo i componenti dell'applicazione producono dati, ma esistono molti altri segnali che è necessario
tenere traccia per gestire in modo efficace un ambiente cloud:
➤ Log attività: si tratta di un controllo che consente di visualizzare tutte le modifiche che sono passate
attraverso le API di Azure. Può essere fondamentale comprendere i problemi o i cambiamenti improvvisi delle
prestazioni, che potrebbero essere dovuti a un errore di configurazione della piattaforma Azure.
➤ Integrità dei servizi di Azure: a volte le interruzioni non sono provocate da modifiche alla configurazione, ma
da problemi nella piattaforma Azure stessa. È possibile trovare informazioni su qualsiasi problema correlato
ad Azure che influisce sull'applicazione nei log integrità dei servizi di Azure registrazione.
➤ Azure Advisor: trovare qui raccomandazioni su come ottimizzare la piattaforma Azure per ridurre i costi,
migliorare il proprio stato di sicurezza o aumentare la disponibilità dell'ambiente.
➤ Centro sicurezza di Azure: non è un obiettivo di questo pilastro, ma deve essere incluso per completezza:
Centro sicurezza di Azure consente di comprendere se le risorse di Azure sono configurate in base alle
procedure consigliate per la sicurezza
ECCELLENZA OPERATIVA – MONITORING E
OBSERVABILITY
➤ Dal monitoring all’osservabilità
➤ Lo spostamento di mentalità tra monitoraggio
tradizionale e osservabilità può essere riassunto
come segue:
• Monitorare servizi/applicazioni non macchine
• Applica monitoraggio Black Box + Monitoraggio
White Box
• Raccoglie dati
• Raccoglie più dati
• Correlare i dati
• Cerca anomalie
ECCELLENZA OPERATIVA – MONITORING E
OBSERVABILITY
➤ Monitoring e alert
➤ Il monitoraggio può avere solo tre tipi di output:
➤ Allarmi - Un essere umano deve fare qualcosa adesso
➤ Ticket - Un essere umano deve fare qualcosa entro
pochi giorni
➤ Logs: nessuno deve guardare immediatamente questo
output, ma è disponibile per un'analisi successiva, se
necessario
➤ "Inserire avvisi nelle e-mail e sperare che qualcuno li
legga tutti e noti quelli importanti è l'equivalente
morale di indirizzarli a /dev/null: alla fine verranno
ignorati."
➤ Un avviso deve essere analizzato, se un avviso viene
ignorato, rimuovere la regola di avviso.
ECCELLENZA OPERATIVA – MONITORING E
OBSERVABILITY
➤ I quattro segnali fondamentali
➤ Latenza
➤ Il tempo necessario per soddisfare una richiesta. È importante distinguere tra la latenza delle
richieste riuscite e la latenza delle richieste non riuscite. Ad esempio, un errore HTTP 500
attivato a causa della perdita di connessione a un database o altro backend critico potrebbe
essere servito molto rapidamente; tuttavia, poiché un errore HTTP 500 indica una richiesta
non riuscita, il factoring di 500 nella latenza complessiva potrebbe comportare calcoli
fuorvianti. D'altra parte, un errore lento è anche peggio di un errore veloce! Pertanto, è
importante tenere traccia della latenza degli errori, anziché limitarsi a filtrare gli errori.
ECCELLENZA OPERATIVA – MONITORING E
OBSERVABILITY
➤ I quattro segnali fondamentali
➤ Traffico
➤ Una misura di quante richieste arrivano al sistema, misurata in una metrica specifica del
sistema di alto livello. Per un servizio Web, questa misurazione è solitamente costituita da
richieste HTTP al secondo, forse suddivise in base alla natura delle richieste (ad esempio,
contenuto statico rispetto a contenuto dinamico). Per un sistema di streaming audio, questa
misurazione potrebbe concentrarsi sulla velocità di I/O di rete o su sessioni simultanee. Per
un sistema di archiviazione di valori-chiave, questa misurazione potrebbe essere transazioni
e recuperi al secondo.
ECCELLENZA OPERATIVA – MONITORING E
OBSERVABILITY
➤ I quattro segnali fondamentali
➤ Errori
➤ La percentuale di richieste che falliscono, in modo esplicito (ad esempio HTTP 500),
implicitamente (ad esempio, una risposta di successo HTTP 200, ma abbinata al contenuto
sbagliato) o per criterio (ad esempio, "qualsiasi richiesta superiore a un secondo è un
errore"). Laddove i codici di risposta del protocollo sono insufficienti per esprimere tutte le
condizioni di guasto, potrebbero essere necessari protocolli secondari (interni) per tenere
traccia delle modalità di guasto parziale. Il monitoraggio di questi casi può essere
drasticamente diverso: catturare HTTP 500 sul tuo sistema di bilanciamento del carico può
fare un buon lavoro nel catturare tutte le richieste completamente fallite, mentre solo i test
di sistema end-to-end possono rilevare che stai servendo il contenuto sbagliato.
ECCELLENZA OPERATIVA – MONITORING E
OBSERVABILITY
➤ I quattro segnali fondamentali
➤ Saturazione
➤ Quanto è "pieno" il tuo servizio. Una misura della frazione di sistema, che enfatizza le risorse
più vincolate (ad esempio, in un sistema vincolato dalla memoria, mostra memoria; in un
sistema vincolato da I/O, mostra I/O). Si noti che molti sistemi degradano nelle prestazioni
prima di raggiungere il 100% di utilizzo, quindi è essenziale disporre di un obiettivo di
utilizzo. di valori-chiave, questa misurazione potrebbe essere transazioni e recuperi al
secondo.
ECCELLENZA
OPERATIVA
Conclusioni
ECCELLENZA OPERATIVA - CONCLUSIONI
DevOps e SRE
Il movimento DevOps nella community e l'iniziativa
SRE in Google sono partiti dallo stesso problema,
l'inefficienza di avere sviluppatori e operatori che
lavorano su lati diversi di un muro, il primo alla
ricerca di funzionalità e il secondo alla stabilità.
“Si potrebbe considerare DevOps come una
generalizzazione di diversi principi SRE
fondamentali per una gamma più ampia di
organizzazioni, strutture di gestione e personale. Si
potrebbe equivalentemente vedere SRE come
un'implementazione specifica di DevOps con alcune
estensioni idiosincratiche. "(Ben Traynor)
Un DevOps Engineer è una persona che comprende
l'intero SDLC (Software Development Life Cycle)
DevOps si concentra maggiormente sulla parte di
automazione
L'attenzione degli SRE è più sugli aspetti come la
disponibilità del sistema, l'osservabilità e la scala
"Il principio di base di SRE è che fare bene la
gestione dei sistemi è un problema software"
ECCELLENZA OPERATIVA - CONCLUSIONI
ECCELLENZA OPERATIVA - CONCLUSIONI
ECCELLENZA OPERATIVA - CONCLUSIONI
THE END – Q&A ?

More Related Content

PPTX
02 azure well architected framework
PPTX
06 azure well architected framework
PPTX
04 azure well architected framework
PPTX
03 azure well architected framework
PPTX
01 azure well architected framework
PDF
Costruire una chain of custody del software - una guida per Cto Cio Devops
PDF
Intro OPENSUITE09NR.pdf
PPTX
DevOps: l'IT al servizio del Business
02 azure well architected framework
06 azure well architected framework
04 azure well architected framework
03 azure well architected framework
01 azure well architected framework
Costruire una chain of custody del software - una guida per Cto Cio Devops
Intro OPENSUITE09NR.pdf
DevOps: l'IT al servizio del Business

Similar to 05 azure well architected framework (20)

PPTX
DevOps Jump Start
DOCX
PDF
LARUS 10th - Rampado Omar
PDF
Brochure 2014 - Unified Management Platform
PDF
Progetto DrFacto (sintesi)
PPTX
Competence center Application Management & Quality Assurance
PDF
TIGPaper_DevOps_170615 Final
PDF
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
PDF
DevOps - Come diventare un buon DevOpper
PDF
Network Monitoring e Nagios®
PDF
Building infrastructure as code with typescript and aws cdk
PDF
Cloud e innovazione
PDF
Slide Mulesoft Meetup Milano #10.pdf
PDF
Agile Lean Conference 2016 - Pescatore_ Road to Disciplined DevOps
PPTX
Disciplined Agile DevOps
PDF
Manuale Agile Stelnet
PDF
La nuova generazione dei gestionali cloud
PDF
XPeppers e AWS
PPTX
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
PDF
Essere project manager senza rinunciare all'agilità integrata - Fabio Savarino
DevOps Jump Start
LARUS 10th - Rampado Omar
Brochure 2014 - Unified Management Platform
Progetto DrFacto (sintesi)
Competence center Application Management & Quality Assurance
TIGPaper_DevOps_170615 Final
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
DevOps - Come diventare un buon DevOpper
Network Monitoring e Nagios®
Building infrastructure as code with typescript and aws cdk
Cloud e innovazione
Slide Mulesoft Meetup Milano #10.pdf
Agile Lean Conference 2016 - Pescatore_ Road to Disciplined DevOps
Disciplined Agile DevOps
Manuale Agile Stelnet
La nuova generazione dei gestionali cloud
XPeppers e AWS
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Essere project manager senza rinunciare all'agilità integrata - Fabio Savarino
Ad

More from Rauno De Pasquale (8)

PPTX
DevOps Training - Introduction to Terraform
PPTX
Kubernetes the deltatre way the basics - introduction to containers and orc...
PPTX
DevOps Torino Meetup - DevOps Engineer, a role that does not exist but is muc...
PPTX
DevOps Torino Meetup - SRE Concepts
PPTX
DevOps Torino Meetup Group Kickoff Meeting - Why a meetup group on DevOps, wh...
PPTX
Newesis azure devops-presentation
PPTX
Newesis - Introduction to Containers
PPTX
Newesis - Introduction to the Cloud
DevOps Training - Introduction to Terraform
Kubernetes the deltatre way the basics - introduction to containers and orc...
DevOps Torino Meetup - DevOps Engineer, a role that does not exist but is muc...
DevOps Torino Meetup - SRE Concepts
DevOps Torino Meetup Group Kickoff Meeting - Why a meetup group on DevOps, wh...
Newesis azure devops-presentation
Newesis - Introduction to Containers
Newesis - Introduction to the Cloud
Ad

05 azure well architected framework

  • 2. ABOUT ME ➤ Rauno De Pasquale, Co-Founder and CTO at Newesis Srl, constantly trying to reconcile his degree in Philosophy with a passion for computer science. After almost 18 year at Deltatre, at the beginning of 2019 he creates Newesis, with the aim of simplifying the use of the most advanced services of Cloud platforms even in fields other than sports. ➤ Newesis is a pure technology based, Cloud Native company, having as a target to support and evolve adoption of DevOps culture and practices, with particular focus on Kubernetes as technological platform. ➤ Twitter: @RaunoDepa ➤ Twitter: @newesissrl
  • 3. AZURE WELL-ARCHITECTED FRAMEWORK – SESSIONE 5 DI 6 - AGENDA ➤ Posizione nel percorso complessivo ➤ Panoramica ➤ Principi ➤ Automazione ➤ Release Management ➤ Monitoring e ➤ Observability
  • 5. AZURE WELL-ARCHITECTED FRAMEWORK – PERCORSO ➤ I Modulo: introduzione, principi e concetti base ➤ II Modulo: affidabilità ➤ III Modulo: sicurezza ➤ IV Modulo: ottimizzazione dei costi ➤ V Modulo: eccellenza operativa ➤ VI Modulo: efficienza delle prestazioni
  • 7. ECCELLENZA OPERATIVA - PANORAMICA ➤ Il pilastro dell'eccellenza operativa riguarda i processi operativi che mantengono un'applicazione in esecuzione nell'ambiente di produzione. Le distribuzioni devono essere affidabili e prevedibili. Le distribuzioni automatizzate riducono la probabilità di errori umani. ➤ I processi di distribuzione veloci e di routine non rallentano il rilascio di nuove funzionalità o correzioni di bug. Altrettanto importante è essere in grado di eseguire rapidamente il rollback o il roll forward in caso di problemi di aggiornamento.
  • 9. ECCELLENZA OPERATIVA - PRINCIPI ➤ Considerare e migliorare il modo in cui il software viene sviluppato, distribuito, gestito e manutenuto è una parte del raggiungimento di una competenza più elevata nelle operazioni. ➤ Altrettanto importante è fornire una cultura nei team a favore di sperimentazione e crescita, per la ricerca continua di soluzioni per razionalizzare lo stato corrente delle operazioni e sviluppare piani di risposta agli eventi imprevisti. ➤ I principi di eccellenza operativa sono una serie di considerazioni che consentono di ottenere procedure operative ottimali.
  • 10. ECCELLENZA OPERATIVA - PRINCIPI ➤ Metodologie DevOps ➤ La contrazione di "Dev" e "Ops" si riferisce alla sostituzione delle attività di sviluppo e operative rigidamente definite per creare team multidisciplinari in grado di interagire con procedure e strumenti condivisi ed efficienti. ➤ Le procedure DevOps essenziali includono la pianificazione agile, l'integrazione continua, la distribuzione continua e il monitoraggio delle applicazioni.
  • 11. ECCELLENZA OPERATIVA - PRINCIPI ➤ Principi DevOps – CAMS ➤ Culture ➤ "Quando mi è stato chiesto quale fosse la cosa più difficile nell'adottare DevOps, ho risposto - senza esitazione - alle persone" (Donovan Brown). Persone e processi prima di tutto. Se non hai cultura, tutti i tentativi di automazione saranno infruttuosi. ➤ Automation ➤ La piena indipendenza e responsabilità del team per la fornitura di valore all'utente finale è un principio fondamentale di DevOps. L'automazione è fondamentale non solo per consentire iterazioni più veloci, ma nello specifico per rendere il processo ripetibile indipendentemente dalla presenza di una determinata persona o gruppo di persone. ➤ Measurement ➤ Il processo di miglioramento continuo (Kaizen) è al centro di DevOps. Se non puoi misurare, non puoi migliorare. Un'implementazione Devops di successo misurerà tutto ciò che può il più spesso possibile. ➤ Sharing ➤ Il trasferimento della conoscenza mira ad evitare vincoli nell'organizzazione e a promuovere l'intelligenza collettiva. La visibilità consente di sapere se il lavoro di un team può introdurre un problema in un altro team e consente anche un feedback tempestivo. La trasparenza è ciò che consente a tutti di lavorare per un obiettivo comune.
  • 12. ECCELLENZA OPERATIVA - PRINCIPI ➤ Ottimizzare i processi di compilazione e rilascio ➤ Dal provisioning secondo pratiche di «Infrastructure as code», alla compilazione e al rilascio con pipeline CI/CD, ai test automatizzati: tutto disegnato con l’intento di applicare le discipline di ingegneria del software all'intero ambiente. ➤ Questo approccio garantisce che la creazione e la gestione degli ambienti in tutto il ciclo di vita dello sviluppo software siano coerenti, ripetibili e consentano il rilevamento anticipato dei problemi.
  • 13. ECCELLENZA OPERATIVA - PRINCIPI ➤ Monitorare l'intero sistema e comprendere l'integrità operativa ➤ Implementare sistemi e processi per monitorare i processi di compilazione e rilascio, l'integrità dell'infrastruttura e l'integrità delle applicazioni. I dati di telemetria sono fondamentali per comprendere l'integrità di un carico di lavoro e se il servizio è in grado di soddisfare gli obiettivi aziendali.
  • 14. ECCELLENZA OPERATIVA - PRINCIPI ➤ Eseguire la prova del ripristino e dell'errore di pratica ➤ Eseguire esercitazioni di ripristino di emergenza con una cadenza regolare e usare procedure di progettazione per identificare e correggere i punti deboli nell'affidabilità delle applicazioni. ➤ Le prove regolari delle condizione di errore convalideranno l'efficacia dei processi di ripristino e garantiranno che i team conoscano le proprie responsabilità.
  • 15. ECCELLENZA OPERATIVA - PRINCIPI ➤ Gestione di eventi imprevisti ➤ Quando si verificano eventi imprevisti, è necessario avere ben pensato ai piani e alle soluzioni per la gestione degli eventi imprevisti, la comunicazione degli eventi imprevisti e i cicli di feedback. ➤ Raccogliere e formalizzare le lezioni apprese da ogni evento imprevisto e creare elementi di telemetria e monitoraggio per evitare eventi futuri.
  • 17. ECCELLENZA OPERATIVA - AUTOMAZIONE ➤ L'automazione ha rivoluzionato il funzionamento delle aziende e questa tendenza continua a evolversi. ➤ Le aziende sono sempre più impegnate all'automazione dei processi manuali in modo che i tecnici possano concentrare l'attenzione sulle attività che aggiungono valore aziendale. ➤ L'automazione delle soluzioni aziendali consente di: • Attivare le risorse su richiesta. • Distribuire rapidamente le soluzioni. • Ridurre al minimo gli errori umani nella configurazione di attività ripetitive. • Produrre risultati coerenti e ripetibili.
  • 18. ECCELLENZA OPERATIVA - AUTOMAZIONE ➤Infrastruttura ripetibile ➤ In genere, la distribuzione di un nuovo servizio o di un'applicazione comporta il lavoro manuale, ad esempio la preparazione dell'hardware, la configurazione degli ambienti operativi e l'abilitazione di soluzioni di monitoraggio. Idealmente, un'organizzazione avrebbe più ambienti in cui testare le distribuzioni. Questi ambienti di test devono essere sufficientemente simili all'ambiente di produzione in modo che i problemi di distribuzione e di esecuzione possano essere rilevati prima della distribuzione nell'ambiente di produzione. Questo lavoro manuale richiede tempo, è ingigantito da errori e può generare incoerenze tra gli ambienti se non è stato eseguito correttamente.
  • 19. ECCELLENZA OPERATIVA - AUTOMAZIONE ➤Infrastruttura ripetibile ➤ Il cloud computing cambia il modo in cui si acquista l'infrastruttura. Non si sta più unboxing, racking e cablaggio dell'infrastruttura fisica. Sono disponibili portali di gestione accessibili a Internet e interfacce REST utili. È ora possibile effettuare il provisioning di macchine virtuali, database e altri servizi cloud su richiesta e a livello globale. Quando i servizi cloud non sono più necessari, possono essere eliminati facilmente. Tuttavia, la cloud computing da sola non elimina il lavoro e i rischi nel provisioning dell'infrastruttura. Quando si usa un portale cloud per creare sistemi, molte delle stesse attività di configurazione manuale rimangono. I server applicazioni richiedono la configurazione, i database richiedono la rete e i firewall richiedono interfacce e regole.
  • 20. ECCELLENZA OPERATIVA - AUTOMAZIONE ➤ Distribuire l'infrastruttura con il codice ➤ Per realizzare completamente l'ottimizzazione della distribuzione, ridurre il lavoro di configurazione e automatizzare la distribuzione completa degli ambienti, è necessario qualcosa di più. Un'opzione viene definita infrastruttura come codice (Infrastructure as Code, IaC). ➤ Per IaC si intende la gestione dell'infrastruttura (reti, macchine virtuali, servizi di bilanciamento del carico e topologia di connessione) in un modello descrittivo, usando un sistema di controllo delle versioni simile a quello usato per il codice sorgente. Quando si crea un'applicazione, lo stesso codice sorgente genererà lo stesso file binario ogni volta che viene compilato. Analogamente, un modello di infrastruttura come codice genera lo stesso ambiente ogni volta che viene applicato. ➤ L’automazione nella creazione e gestione di infrastrutture è una procedura DevOps essenziale e viene spesso usata in combinazione con la distribuzione continua. ➤ In definitiva, IaC consente all'utente e al team di sviluppare e rilasciare le modifiche più rapidamente, ma con maggiore attendibilità nelle distribuzioni.
  • 21. ECCELLENZA OPERATIVA - AUTOMAZIONE ➤Eseguire il processo di integrazione ➤Se si dispone di un processo tramite il quale le modifiche al codice vengono esaminate tramite peer, è possibile usare lo stesso processo per esaminare le modifiche dell'infrastruttura. ➤Questo processo di revisione consente di rilevare in modo proattivo le configurazioni problematiche difficili da rilevare quando si apportano modifiche manuali all'infrastruttura.
  • 22. ECCELLENZA OPERATIVA - AUTOMAZIONE ➤ Coerenza ➤ L'esecuzione di un processo IaC garantisce che l'intero team segua un processo standard e consolidato. ➤ Alcune organizzazioni designano un singolo o piccolo gruppi di utenti responsabili della distribuzione e della configurazione dell'infrastruttura. Seguendo un processo completamente automatizzato, la responsabilità delle distribuzioni dell'infrastruttura passa dai singoli utenti al processo di automazione e agli strumenti. ➤ Questo spostamento amplia il numero di membri del team che possono avviare le distribuzioni dell'infrastruttura mantenendo la coerenza e la qualità.
  • 23. ECCELLENZA OPERATIVA - AUTOMAZIONE ➤ Analisi automatizzata ➤ Molti tipi di configurazioni IaC possono essere analizzati tramite strumenti automatizzati. Uno di questi tipi di strumenti è linting per verificare la presenza di errori nel codice o per analizzare le modifiche proposte all'infrastruttura per assicurarsi che seguano le procedure consigliate per la sicurezza e le prestazioni, ad esempio per garantire che gli account di archiviazione siano configurati per bloccare le connessioni non protette.
  • 24. ECCELLENZA OPERATIVA - AUTOMAZIONE ➤ Gestione dei segreti ➤ La maggior parte delle soluzioni richiede la manutenzione e la gestione dei segreti. tra cui stringhe di connessione, chiavi API, segreti client e certificati. Seguendo un approccio IaC, è necessario adottare le procedure consigliate per la gestione dei segreti. ➤ Ad esempio, Azure Key Vault può essere usato per archiviare i segreti in modo sicuro. ➤ Key Vault possibile integrare molti strumenti e configurazioni IaC per garantire che la persona che esegue la distribuzione non necessiti dell'accesso ai segreti di produzione.
  • 25. ECCELLENZA OPERATIVA - AUTOMAZIONE ➤ Evitare la deriva della configurazione ➤ Quando si usa IaC, è possibile ridistribuire tutti i modelli di ambiente in ogni versione della soluzione. ➤ Gli strumenti IaC sono in genere creati per essere idempotenti ,ad esempio per poter essere eseguiti più volte senza effetti negativi. ➤ In genere, la prima distribuzione di una configurazione IaC distribuirà effettivamente la configurazione, mentre le ridistribuzioni successive fungeranno essenzialmente da "no-ops" e non avranno alcun effetto. ➤ É possibile automotizzare la correzione delle derive, onde evitare che interventi fatti esternamente alla catena di IaC possano permanere sui sistemi.
  • 26. ECCELLENZA OPERATIVA - AUTOMAZIONE ➤ Categorie di strumenti IaC ➤ È possibile usare molte tecnologie di distribuzione dell'infrastruttura con Azure. Queste categorie rientrano in due categorie principali. ➤ IaC imperativo prevede la scrittura di script in un linguaggio come Bash, PowerShell, file di script C# o Python. Questi passaggi vengono eseguiti a livello di codice per creare o modificare le risorse. Quando si usano distribuzioni imperative, è necessario gestire elementi come la sequenziazione delle dipendenze, il controllo degli errori e gli aggiornamenti delle risorse. ➤ IaC dichiarativo prevede la scrittura di una definizione dell'aspetto dell'ambiente. Gli strumenti quindi illustrano come eseguire questa operazione controllando lo stato corrente, confrontandolo con lo stato di destinazione richiesto e applicando le differenze.
  • 27. ECCELLENZA OPERATIVA - AUTOMAZIONE ➤ Azure Resource Manager (ARM) ➤ Azure Resource Manager (ARM) fornisce un'infrastruttura nativa di Azure come soluzione di Infrastructure as code. ➤ I modelli arm sono scritti in un linguaggio derivato da JavaScript Object Notation (JSON) e definiscono l'infrastruttura e le configurazioni per le distribuzioni di Azure. Un modello arm è dichiarativo, indica cosa intende distribuire, fornisce i valori di configurazione e il motore di Azure si occupa di effettuare le richieste put dell'API REST di Azure necessarie.
  • 28. ECCELLENZA OPERATIVA - AUTOMAZIONE ➤ Terraform ➤ Terraform è un framework dichiarativo per la distribuzione e la configurazione dell'infrastruttura che supporta molti cloud privati e pubblici, tra cui Azure. ➤ Ha il vantaggio principale di offrire un framework indipendente dal cloud e moduli per un numero molto alto di piattaforme. ➤ Anche se le configurazioni terraform sono specifiche per ogni cloud, il framework stesso è lo stesso per tutti. Le configurazioni Terraform vengono scritte in un linguaggio specifico di dominio (DSL) denominato Hashicorp Configuration Language.
  • 29. ECCELLENZA OPERATIVA - AUTOMAZIONE ➤ Configure l’infrastruttura ➤ Quando si usa Azure, molti servizi possono essere creati e configurati a livello di codice usando l'automazione o l'infrastruttura come strumenti di codice. Questi strumenti accedono ad Azure tramite le API REST esposte o il piano di controllo di Azure. Ad esempio, è possibile distribuire un gruppo di sicurezza di rete di Azure e creare regole del gruppo di sicurezza usando un modello Azure Resource Manager sicurezza. Il gruppo di sicurezza di rete e la relativa configurazione vengono esposti tramite il piano di controllo di Azure e accessibili in modo nativo. ➤ Non è possibile accedere ad altre configurazioni, ad esempio l'installazione di software in una macchina virtuale, l'aggiunta di dati a un database o l'avvio di pod in un cluster servizio Azure Kubernetes tramite il piano di controllo di Azure. Queste azioni richiedono un set diverso di strumenti di configurazione.
  • 30. ECCELLENZA OPERATIVA - AUTOMAZIONE ➤ Estensioni di VM di Azure ➤ Le estensioni delle macchine virtuali di Azure sono pacchetti di piccole dimensioni che eseguono la configurazione e l'automazione post-distribuzione nelle macchine virtuali di Azure. Sono disponibili diverse estensioni per molte attività di configurazione diverse, ad esempio l'esecuzione di script, la configurazione di soluzioni antimalware e la configurazione di soluzioni di registrazione. Queste estensioni possono essere installate ed eseguite in macchine virtuali usando un modello arm, l'interfaccia della riga di comando di Azure, Azure PowerShell modulo o il portale di Azure. Ogni macchina virtuale di Azure ha un agente di macchine virtuali installato e questo agente gestisce il ciclo di vita dell'estensione. ➤ Un caso d'uso tipico dell'estensione vm è l'uso di un'estensione di script personalizzata per installare software, eseguire comandi ed eseguire configurazioni in una macchina virtuale o in un set di scalabilità di macchine virtuali.
  • 31. ECCELLENZA OPERATIVA - AUTOMAZIONE ➤ Cloud-init ➤ cloud-init è uno strumento noto del settore per la configurazione di macchine virtuali Linux al primo avvio. Analogamente all'estensione di script personalizzata di Azure, cloud-init consente di installare pacchetti ed eseguire comandi in macchine virtuali Linux. ➤ cloud-init può essere usato per operazioni come l'installazione del software, le configurazioni di sistema e la gestione temporanea del contenuto. ➤ Azure include molte immagini di macchine virtuali del Marketplace abilitate per cloud-init in molte delle distribuzioni Linux più note.
  • 32. ECCELLENZA OPERATIVA - AUTOMAZIONE ➤ Automatizzare le attività operative ➤ Le attività operative possono includere qualsiasi azione o attività che è possibile eseguire durante la gestione dei sistemi, dell'accesso al sistema e dei processi. ➤ Alcuni esempi includono il riavvio dei server, la creazione di account e la spedizione di log a un archivio dati. ➤ Queste attività possono verificarsi in base a una pianificazione, come risposta a un evento o a un avviso di monitoraggio o ad-hock in base a fattori esterni. Come molte altre attività correlate alla gestione dei sistemi informatici, queste attività vengono spesso eseguite manualmente, il che richiede tempo e porta il rischio di errore. ➤ Molte di queste attività operative possono e devono essere automatizzate. Usando le tecnologie di scripting e le soluzioni correlate.
  • 33. ECCELLENZA OPERATIVA - AUTOMAZIONE ➤ Function – Automation Account Playbook – Logic App ➤ PowerShell e Python sono linguaggi di programmazione comuni per l'automazione delle attività operative. Usando questi linguaggi, l'esecuzione di operazioni come il riavvio dei servizi, lo spostamento dei log tra archivi dati e il ridimensionamento dell'infrastruttura per soddisfare la domanda possono essere espressi nel codice ed eseguiti su richiesta. ➤ Azure Functions, Automation Account Playbook e Logic App sono tutte piattaforme utilizzabili per realizzare esecuzioni automatiche, a tempo o basate su eventi.
  • 35. ECCELLENZA OPERATIVA – RELEASE MANAGEMENT ➤ Integrazione continua ➤ L'integrazione continua è una procedura di sviluppo software in base alla quale gli sviluppatori integrano gli aggiornamenti software in un sistema di controllo del codice sorgente a cadenza regolare. ➤ Il processo di integrazione continua viene avviato quando un tecnico crea una richiesta pull che segnala al sistema di integrazione continua che le modifiche al codice sono pronte per essere integrate. ➤ Idealmente, l'integrazione convalida il codice in base a diverse baseline e test e fornisce un rapido feedback al tecnico richiedente sullo stato di questi test. Supponendo che i controlli e i test di base siano stati eseguiti correttamente, il processo di integrazione produce e distribuisce in fasi asset come il codice compilato e le immagini dei contenitori che distribuiranno infine il software aggiornato.
  • 36. ECCELLENZA OPERATIVA – RELEASE MANAGEMENT ➤ Pipeline di integrazione continua ➤ Una pipeline di integrazione continua include un software, in molti casi ospitato nel cloud, che fornisce una piattaforma per l'esecuzione di test automatizzati, analisi di conformità, creazione di report e tutti i componenti aggiuntivi che costituiscono il processo di integrazione continua. Nella maggior parte dei casi, il software della pipeline viene collegato al controllo del codice sorgente in modo che quando vengono create richieste pull o il software viene unito in un ramo specifico e viene eseguita la pipeline di integrazione continua. L'integrazione del controllo del codice sorgente offre anche la possibilità di fornire commenti e suggerimenti sull'integrazione continua direttamente nella richiesta pull.
  • 37. ECCELLENZA OPERATIVA – RELEASE MANAGEMENT ➤ Automazione dei test ➤ Il test è uno dei componenti fondamentali e in DevOps e lo sviluppo Agile in generale. Se l'automazione DevOps la velocità e l'agilità necessarie per distribuire rapidamente il software, solo tramite test approfonditi tali distribuzioni raggiungeranno l'affidabilità richiesta dai clienti. ➤ Gli errori sono più economici da correggere quando vengono rilevati in anticipo. Possono essere costose o impossibili da correggere in un secondo momento nel ciclo di vita dell'applicazione. ➤ Un altro aspetto da considerare è che i test devono essere eseguiti sia sul codice dell'applicazione che sul codice dell'infrastruttura e devono essere soggetti agli stessi controlli di qualità.
  • 38. ECCELLENZA OPERATIVA – RELEASE MANAGEMENT ➤ Processo di rilascio ➤ Una delle sfide dell'automazione della distribuzione è il rilascio, che porta il software dalla fase finale del test alla produzione. ➤ In genere è necessario eseguire questa operazione rapidamente per ridurre al minimo i tempi di inattività. ➤ Esistono diversi approcci e modalità di rilascio.
  • 39. ECCELLENZA OPERATIVA – RELEASE MANAGEMENT ➤ Blue-Green Deployment ➤ La distribuzione blu-verde comporta la distribuzione di un aggiornamento in un ambiente di produzione separato dall'applicazione attiva per gli utenti reali. ➤ Dopo la convalida della distribuzione, viene modificato il routing del traffico alla versione aggiornata. ➤ Un modo per eseguire questa operazione è usare gli slot di staging disponibili in Servizio app di Azure per creare una distribuzione temporanea prima di spostarla nell'ambiente di produzione.
  • 40. ECCELLENZA OPERATIVA – RELEASE MANAGEMENT ➤ Canary Deployment ➤ Le versioni canary sono simili alle distribuzioni blu-verde. Invece di passare tutto il traffico all'applicazione aggiornata, si instrada solo una piccola parte del traffico alla nuova distribuzione. ➤ Se si verifica un problema, si ripristina la distribuzione precedente. ➤ In caso contrario, gradualmente più traffico viene spostato sulla nuova versione. ➤ Se si usa Servizio app di Azure, è possibile usare la funzionalità Test in produzione per gestire una versione canary.
  • 41. ECCELLENZA OPERATIVA – RELEASE MANAGEMENT ➤ GitOps ➤ L'intero sistema descritto in modo dichiarativo. ➤ Lo stato di sistema desiderato canonico con versione in Git. ➤ Le modifiche approvate che possono essere applicate automaticamente al sistema. ➤ Agenti software per garantire la correttezza e avvisare in caso di divergenza.
  • 42. ECCELLENZA OPERATIVA – RELEASE MANAGEMENT ➤ GitOps
  • 44. ECCELLENZA OPERATIVA – MONITORING E OBSERVABILITY ➤ Monitoraggio e osservabilità ➤ Ciò che non è possibile visualizzare, non è possibile misurare. Ciò che non è possibile misurare, non è possibile migliorare. Questo assioma di gestione classico è vero anche nel cloud. Il monitoraggio tradizionale dell'applicazione e dell'infrastruttura si basa sul fatto che l'applicazione sia in esecuzione o meno o sul tempo di risposta che sta fornendo. Tuttavia, il monitoraggio basato sul cloud offre molte più opportunità che è consigliabile sfruttare per offrire agli utenti la migliore esperienza possibile.
  • 45. ECCELLENZA OPERATIVA – MONITORING E OBSERVABILITY ➤ Monitoraggio dell'applicazione ➤ Application Insights è il servizio di Azure che consente non solo di verificare che l'applicazione sia in esecuzione correttamente, ma semplifica la risoluzione dei problemi dell'applicazione e può essere usata per i dati di telemetria aziendali personalizzati che indicano se l'applicazione viene usata come previsto. ➤ Per usare Application Insights sono disponibili due opzioni: il monitoraggio senza codice, in cui l'onboarding dell'app in Application Insights non richiede alcuna modifica del codice o il monitoraggio basato sul codice, in cui si instrumenta il codice per inviare dati di telemetria all'Insights dell'applicazione usando Software Development Kit per il linguaggio di programmazione preferito. ➤ È certamente possibile usare altri strumenti di gestione delle prestazioni delle applicazioni per monitorare l'applicazione in Azure, ad esempio DataDog, NewRelic o AppDynamics.
  • 46. ECCELLENZA OPERATIVA – MONITORING E OBSERVABILITY ➤ Monitoraggio della piattaforma ➤ Application Insights è in realtà uno dei componenti di Monitoraggio di Azure, che offre metriche e log completi per verificare lo stato del panorama applicativo completo di Azure. Indipendentemente dal fatto che l'applicazione sia in esecuzione in macchine virtuali, servizi app o Kubernetes, Monitoraggio di Azure consente di seguire lo stato dell'infrastruttura e di reagire tempestivamente in caso di problemi. ➤ Assicurarsi non solo di monitorare gli elementi di calcolo che supportano il codice dell'applicazione, ma anche la piattaforma dati: i database, gli account di archiviazione o i data lake devono essere monitorati con attenzione, poiché le prestazioni del livello dati di un'applicazione potrebbero avere gravi conseguenze.
  • 47. ECCELLENZA OPERATIVA – MONITORING E OBSERVABILITY ➤ Monitoraggio della rete ➤ Indipendentemente dal fattore di forma o dal linguaggio di programmazione su cui si basa l'applicazione, la rete che connette il codice agli utenti può creare o interrompere l'esperienza fornita dall'applicazione. Di conseguenza, il monitoraggio e la risoluzione dei problemi della rete possono essere una risorsa importante per un team operativo. Il componente di Monitoraggio di Azure che gestisce i componenti di rete è denominato Network Watcher, una raccolta di strumenti di monitoraggio e risoluzione dei problemi di rete.
  • 48. ECCELLENZA OPERATIVA – MONITORING E OBSERVABILITY ➤ Altre fonti di informazioni ➤ Non solo i componenti dell'applicazione producono dati, ma esistono molti altri segnali che è necessario tenere traccia per gestire in modo efficace un ambiente cloud: ➤ Log attività: si tratta di un controllo che consente di visualizzare tutte le modifiche che sono passate attraverso le API di Azure. Può essere fondamentale comprendere i problemi o i cambiamenti improvvisi delle prestazioni, che potrebbero essere dovuti a un errore di configurazione della piattaforma Azure. ➤ Integrità dei servizi di Azure: a volte le interruzioni non sono provocate da modifiche alla configurazione, ma da problemi nella piattaforma Azure stessa. È possibile trovare informazioni su qualsiasi problema correlato ad Azure che influisce sull'applicazione nei log integrità dei servizi di Azure registrazione. ➤ Azure Advisor: trovare qui raccomandazioni su come ottimizzare la piattaforma Azure per ridurre i costi, migliorare il proprio stato di sicurezza o aumentare la disponibilità dell'ambiente. ➤ Centro sicurezza di Azure: non è un obiettivo di questo pilastro, ma deve essere incluso per completezza: Centro sicurezza di Azure consente di comprendere se le risorse di Azure sono configurate in base alle procedure consigliate per la sicurezza
  • 49. ECCELLENZA OPERATIVA – MONITORING E OBSERVABILITY ➤ Dal monitoring all’osservabilità ➤ Lo spostamento di mentalità tra monitoraggio tradizionale e osservabilità può essere riassunto come segue: • Monitorare servizi/applicazioni non macchine • Applica monitoraggio Black Box + Monitoraggio White Box • Raccoglie dati • Raccoglie più dati • Correlare i dati • Cerca anomalie
  • 50. ECCELLENZA OPERATIVA – MONITORING E OBSERVABILITY ➤ Monitoring e alert ➤ Il monitoraggio può avere solo tre tipi di output: ➤ Allarmi - Un essere umano deve fare qualcosa adesso ➤ Ticket - Un essere umano deve fare qualcosa entro pochi giorni ➤ Logs: nessuno deve guardare immediatamente questo output, ma è disponibile per un'analisi successiva, se necessario ➤ "Inserire avvisi nelle e-mail e sperare che qualcuno li legga tutti e noti quelli importanti è l'equivalente morale di indirizzarli a /dev/null: alla fine verranno ignorati." ➤ Un avviso deve essere analizzato, se un avviso viene ignorato, rimuovere la regola di avviso.
  • 51. ECCELLENZA OPERATIVA – MONITORING E OBSERVABILITY ➤ I quattro segnali fondamentali ➤ Latenza ➤ Il tempo necessario per soddisfare una richiesta. È importante distinguere tra la latenza delle richieste riuscite e la latenza delle richieste non riuscite. Ad esempio, un errore HTTP 500 attivato a causa della perdita di connessione a un database o altro backend critico potrebbe essere servito molto rapidamente; tuttavia, poiché un errore HTTP 500 indica una richiesta non riuscita, il factoring di 500 nella latenza complessiva potrebbe comportare calcoli fuorvianti. D'altra parte, un errore lento è anche peggio di un errore veloce! Pertanto, è importante tenere traccia della latenza degli errori, anziché limitarsi a filtrare gli errori.
  • 52. ECCELLENZA OPERATIVA – MONITORING E OBSERVABILITY ➤ I quattro segnali fondamentali ➤ Traffico ➤ Una misura di quante richieste arrivano al sistema, misurata in una metrica specifica del sistema di alto livello. Per un servizio Web, questa misurazione è solitamente costituita da richieste HTTP al secondo, forse suddivise in base alla natura delle richieste (ad esempio, contenuto statico rispetto a contenuto dinamico). Per un sistema di streaming audio, questa misurazione potrebbe concentrarsi sulla velocità di I/O di rete o su sessioni simultanee. Per un sistema di archiviazione di valori-chiave, questa misurazione potrebbe essere transazioni e recuperi al secondo.
  • 53. ECCELLENZA OPERATIVA – MONITORING E OBSERVABILITY ➤ I quattro segnali fondamentali ➤ Errori ➤ La percentuale di richieste che falliscono, in modo esplicito (ad esempio HTTP 500), implicitamente (ad esempio, una risposta di successo HTTP 200, ma abbinata al contenuto sbagliato) o per criterio (ad esempio, "qualsiasi richiesta superiore a un secondo è un errore"). Laddove i codici di risposta del protocollo sono insufficienti per esprimere tutte le condizioni di guasto, potrebbero essere necessari protocolli secondari (interni) per tenere traccia delle modalità di guasto parziale. Il monitoraggio di questi casi può essere drasticamente diverso: catturare HTTP 500 sul tuo sistema di bilanciamento del carico può fare un buon lavoro nel catturare tutte le richieste completamente fallite, mentre solo i test di sistema end-to-end possono rilevare che stai servendo il contenuto sbagliato.
  • 54. ECCELLENZA OPERATIVA – MONITORING E OBSERVABILITY ➤ I quattro segnali fondamentali ➤ Saturazione ➤ Quanto è "pieno" il tuo servizio. Una misura della frazione di sistema, che enfatizza le risorse più vincolate (ad esempio, in un sistema vincolato dalla memoria, mostra memoria; in un sistema vincolato da I/O, mostra I/O). Si noti che molti sistemi degradano nelle prestazioni prima di raggiungere il 100% di utilizzo, quindi è essenziale disporre di un obiettivo di utilizzo. di valori-chiave, questa misurazione potrebbe essere transazioni e recuperi al secondo.
  • 56. ECCELLENZA OPERATIVA - CONCLUSIONI DevOps e SRE Il movimento DevOps nella community e l'iniziativa SRE in Google sono partiti dallo stesso problema, l'inefficienza di avere sviluppatori e operatori che lavorano su lati diversi di un muro, il primo alla ricerca di funzionalità e il secondo alla stabilità. “Si potrebbe considerare DevOps come una generalizzazione di diversi principi SRE fondamentali per una gamma più ampia di organizzazioni, strutture di gestione e personale. Si potrebbe equivalentemente vedere SRE come un'implementazione specifica di DevOps con alcune estensioni idiosincratiche. "(Ben Traynor) Un DevOps Engineer è una persona che comprende l'intero SDLC (Software Development Life Cycle) DevOps si concentra maggiormente sulla parte di automazione L'attenzione degli SRE è più sugli aspetti come la disponibilità del sistema, l'osservabilità e la scala "Il principio di base di SRE è che fare bene la gestione dei sistemi è un problema software"
  • 57. ECCELLENZA OPERATIVA - CONCLUSIONI
  • 58. ECCELLENZA OPERATIVA - CONCLUSIONI
  • 59. ECCELLENZA OPERATIVA - CONCLUSIONI
  • 60. THE END – Q&A ?

Editor's Notes

  • #6: Azure Well-Architected Framework è una serie di principi guida utilizzabili per migliorare la qualità dei carichi di lavoro. Il framework è costituito da cinque elementi fondamentali dell'eccellenza dell'architettura: Affidabilità - La capacità di un sistema di correggere gli errori e continuare a funzionare. Sicurezza - Protezione delle applicazioni e dei dati dalle minacce. Ottimizzazione dei costi - Gestione dei costi per massimizzare il valore offerto. Eccellenza operativa - Processi operativi che mantengono un sistema in esecuzione in produzione. Efficienza delle prestazioni - La capacità di un sistema di adattarsi ai cambiamenti di carico. L'integrazione di questi elementi fondamentali consente di produrre un'architettura cloud di alta qualità, stabile ed efficiente: