Principi di progettazione di un carico di lavoro fondamentale
La metodologia di progettazione critica è supportata da cinque principi chiave di progettazione che fungono da bussola per le successive decisioni di progettazione tra le aree critiche di progettazione. È consigliabile acquisire familiarità con questi principi per comprendere meglio il loro impatto e i compromessi associati alla non conformità.
Importante
Questo articolo fa parte della serie di carichi di lavoro cruciali di Azure Well-Architected . Se non si ha familiarità con questa serie, è consigliabile iniziare con un carico di lavoro mission-critical?
Questi principi di progettazione cruciali e estendono i pilastri qualitativi di Azure Well-Architected Framework: affidabilità, sicurezza, ottimizzazione dei costi, eccellenza operativa e efficienza delle prestazioni.
Affidabilità massima : ricerca fondamentale della soluzione più affidabile, garantendo che i compromessi siano ben compresi.
Principio di progettazione | Considerazioni |
---|---|
Progettazione attiva/attiva | Per ottimizzare la disponibilità e ottenere la tolleranza di errore a livello di area, i componenti della soluzione devono essere distribuiti in più aree zone di disponibilità e Azure usando un modello di distribuzione attivo/attivo, se possibile. |
Riduzione del raggio di esplosione e isolamento degli errori | L'errore è impossibile evitare in un ambiente cloud multi-tenant altamente distribuito, ad esempio Azure. Anticipando gli errori e l'impatto correlato, dai singoli componenti all'intera area di Azure, è possibile progettare e sviluppare una soluzione in modo resiliente. |
Osservazione dell'integrità dell'applicazione | Prima che i problemi che influiscono sull'affidabilità dell'applicazione possano essere ridotti, è necessario prima rilevare e comprendere. Monitorando l'operazione di un'applicazione rispetto a uno stato integro noto, diventa possibile rilevare o anche prevedere problemi di affidabilità, consentendo l'esecuzione di un'azione correttiva rapida. |
Promozione dell'automazione | Una delle cause principali del tempo di inattività dell'applicazione è l'errore umano, indipendentemente dal fatto che la distribuzione di software o configurazione non sufficientemente testati. Per ridurre al minimo la possibilità e l'impatto degli errori umani, è fondamentale cercare l'automazione in tutti gli aspetti di una soluzione cloud per migliorare l'affidabilità; test automatizzati, distribuzione e gestione. |
Progettazione per la riparazione automatica | La correzione automatica descrive la capacità di un sistema di gestire automaticamente gli errori tramite protocolli di correzione predefiniti connessi alle modalità di errore all'interno della soluzione. Si tratta di un concetto avanzato che richiede un livello elevato di maturità del sistema con monitoraggio e automazione, ma deve essere un'aspirazione dall'inizio per ottimizzare l'affidabilità. |
Prevenzione della complessità | Evitare complessità inutili quando si progetta la soluzione e tutti i processi operativi per guidare l'affidabilità e l'efficienza di gestione, riducendo al minimo la probabilità di errori. |
Prestazioni e scalabilità sostenibili: progettare per la scalabilità in tutta la soluzione end-to-end senza colli di bottiglia delle prestazioni.
Principio di progettazione | Considerazioni |
---|---|
Progettazione per l'aumento del numero di istanze | Scale-out è un concetto che si concentra sulla capacità di un sistema di rispondere alla domanda attraverso la crescita orizzontale. Ciò significa che, man mano che il traffico aumenta, vengono aggiunte più unità di risorse in parallelo anziché aumentare le dimensioni delle risorse esistenti. Un sistema che consente di gestire l'aumento del traffico previsto e imprevisto attraverso le unità di scalabilità è essenziale per ottenere prestazioni complessive e affidabilità riducendo ulteriormente l'impatto di un singolo errore di risorsa. |
Automazione per hyperscale | Le operazioni di scalabilità in tutta la soluzione devono essere completamente automatizzate per ridurre al minimo le prestazioni e l'impatto sulla disponibilità da aumenti imprevisti o previsti nel traffico, assicurando il tempo necessario per eseguire operazioni di scalabilità e allineate a un modello per l'integrità dell'applicazione. |
Convalida e test continui | I test automatizzati devono essere eseguiti all'interno dei processi CI/CD per eseguire la convalida continua per ogni modifica dell'applicazione. I test di carico rispetto a una baseline di prestazioni con la sperimentazione del caos sincronizzato devono essere inclusi per convalidare soglie, destinazioni e presupposti esistenti, oltre a contribuire a identificare rapidamente i rischi per la resilienza e la disponibilità. Tali test devono essere eseguiti all'interno di ambienti di staging e test, ma anche facoltativamente all'interno degli ambienti di sviluppo. Può anche essere utile eseguire un subset di test sull'ambiente di produzione, in particolare in combinazione con un modello di distribuzione blu/verde per convalidare i nuovi francobolli di distribuzione prima di ricevere il traffico di produzione. |
Ridurre il sovraccarico con i servizi di calcolo gestiti | L'uso di servizi di calcolo gestiti e architetture in contenitori riduce significativamente il sovraccarico amministrativo e operativo in corso della progettazione, del funzionamento e della scalabilità delle applicazioni spostando la distribuzione e la manutenzione dell'infrastruttura al provider di servizi gestiti. |
Prestazioni di base e identificazione dei colli di bottiglia | I test delle prestazioni con dati di telemetria dettagliati da ogni componente di sistema consentono l'identificazione di colli di bottiglia all'interno del sistema, inclusi i componenti che devono essere ridimensionati in relazione ad altri componenti e queste informazioni devono essere incorporate in un modello di capacità. |
Capacità del modello | Un modello di capacità consente la pianificazione dei livelli di scalabilità delle risorse per un determinato profilo di carico ed espone inoltre il modo in cui i componenti di sistema vengono eseguiti in relazione tra loro, consentendo quindi la pianificazione dell'allocazione della capacità a livello di sistema. |
Operazioni per progettazione : ingegneria per durare con una gestione operativa affidabile e assertiva.
Principio di progettazione | Considerazioni |
---|---|
Componenti con accoppiamento libero | L'accoppiamento libero consente test indipendenti e su richiesta, distribuzioni e aggiornamenti ai componenti dell'applicazione riducendo al minimo le dipendenze tra team per il supporto, i servizi, le risorse o le approvazioni. |
Automatizzare i processi di compilazione e rilascio | I processi di compilazione e rilascio completamente automatizzati riducono l'attrito e aumentano la velocità di distribuzione degli aggiornamenti, portando la ripetibilità e la coerenza tra ambienti. L'automazione riduce il ciclo di feedback degli sviluppatori che esegue il push delle modifiche per ottenere informazioni dettagliate sulla qualità del codice, la copertura dei test, la resilienza, la sicurezza e le prestazioni, che aumentano la produttività degli sviluppatori. |
Agilità per sviluppatori | L'automazione continua per l'integrazione e la distribuzione continua (CI/CD) consente l'uso di ambienti di sviluppo a breve durata associati a quello di un ramo di funzionalità associato, che promuove la convalida della flessibilità degli sviluppatori e determina la convalida il più presto possibile all'interno del ciclo di progettazione per ridurre al minimo il costo di progettazione dei bug. |
Quantificare l'integrità operativa | La strumentazione diagnostica completa di tutti i componenti e le risorse consente l'osservabilità continua dei log, delle metriche e delle tracce, ma facilita anche la modellazione dell'integrità per quantificare l'integrità delle applicazioni nel contesto a requisiti di disponibilità e prestazioni. |
Esercitare le procedure per scenari di ripristino ed errore | Le procedure e la pianificazione della continuità aziendale (BC) e ripristino di emergenza (RIPRISTINO di emergenza) sono essenziali e devono essere eseguite di frequente, poiché gli apprendimento possono migliorare in modo iterativo i piani e le procedure per ottimizzare la resilienza in caso di tempi di inattività non pianificati. |
Adottare il miglioramento operativo continuo | Assegnare priorità al miglioramento della routine dell'esperienza utente e del sistema, usando un modello di integrità per comprendere e misurare l'efficienza operativa con meccanismi di feedback per consentire ai team dell'applicazione di comprendere e risolvere le lacune in modo iterativo. |
Sempre sicuro : progettare la sicurezza end-to-end per mantenere la stabilità dell'applicazione e garantire la disponibilità.
Principio di progettazione | Considerazioni |
---|---|
Monitorare la sicurezza dell'intera soluzione e pianificare le risposte agli eventi imprevisti | Correlare gli eventi di sicurezza e controllo per modellare l'integrità dell'applicazione e identificare le minacce attive. Stabilire procedure automatizzate e manuali per rispondere agli eventi imprevisti usando gli strumenti SIEM (Security Information and Event Management) per il rilevamento. |
Modelli e test contro potenziali minacce | Assicurarsi che la protezione avanzata delle risorse e stabilire procedure appropriate per identificare e mitigare le minacce note, usando test di penetrazione per verificare la mitigazione delle minacce, nonché l'analisi del codice statico e l'analisi del codice. |
Identificare e proteggere gli endpoint | Monitorare e proteggere l'integrità di rete degli endpoint interni ed esterni tramite funzionalità e appliance di sicurezza, ad esempio firewall o firewall applicazioni Web. Usare approcci standard del settore per proteggere da vettori di attacco comuni, ad esempio attacchi DDoS (Distributed Denial-Of-Service), ad esempio SlowLoris. |
Proteggere dalle vulnerabilità a livello di codice | Identificare e attenuare le vulnerabilità a livello di codice, ad esempio script cross-site o SQL injection, e incorporare l'applicazione di patch di sicurezza nei cicli di vita operativi per tutte le parti della codebase, incluse le dipendenze. |
Automatizzare e usare privilegi minimi | Guidare l'automazione per ridurre al minimo la necessità di interazione umana e implementare privilegi minimi sia nell'applicazione che nel piano di controllo per proteggere dagli scenari di esfiltrazione dei dati e di attori dannosi. |
Classificare e crittografare i dati | Classificare i dati in base al rischio e applicare la crittografia standard del settore inattivi e in transito, assicurando che le chiavi e i certificati vengano archiviati in modo sicuro e gestito correttamente. |
Esistono evidenti compromessi sui costi associati all'introduzione di una maggiore affidabilità, che deve essere considerata attentamente nel contesto dei requisiti del carico di lavoro.
La massima affidabilità può influire sul costo finanziario complessivo della soluzione. Ad esempio, la duplicazione delle risorse e la distribuzione di risorse tra aree geografiche per ottenere una disponibilità elevata ha implicazioni chiare sui costi. Per evitare costi in eccesso, non sovra-ingegneria o over-provision oltre i requisiti aziendali pertinenti.
Inoltre, è stato aggiunto un costo associato all'investimento di ingegneria in concetti di affidabilità fondamentali, ad esempio l'adozione dell'infrastruttura come codice, automazione della distribuzione e progettazione del caos. Ciò comporta un costo in termini di tempo e sforzo, che potrebbe essere investito altrove per offrire nuove funzionalità e funzionalità dell'applicazione.
Servizi gestiti nativi di Azure: i servizi gestiti nativi di Azure vengono classificati in ordine di priorità a causa del loro sovraccarico amministrativo e operativo inferiore e della stretta integrazione con una configurazione coerente e la strumentazione nello stack di applicazioni.
Allineamento della roadmap : incorporare nuove e migliorate funzionalità del servizio di Azure man mano che diventano disponibilità generale (GA) per rimanere vicino al bordo principale di Azure.
Adottare le funzionalità di anteprima e attenuare le lacune note : anche se i servizi disponibili a livello generale sono prioritari per la supportabilità, le anteprime dei servizi di Azure vengono esaminate attivamente per l'incorporazione rapida, fornendo commenti e suggerimenti tecnici e gestibili ai gruppi di prodotti di Azure per risolvere le lacune.
Allineamento della zona di destinazione di Azure: distribuito all'interno di una zona di destinazione di Azure e allineato alla metodologia di progettazione della zona di destinazione di Azure , ma anche completamente funzionale e distribuito in un ambiente bare all'esterno di una zona di destinazione.
Esaminare i problemi di taglio incrociato associati ai carichi di lavoro cruciali.