Condividi tramite


Modelli di progettazione cloud

Gli architetti progettano carichi di lavoro combinando servizi della piattaforma, funzionalità e codice per soddisfare i requisiti funzionali e non funzionali nei carichi di lavoro. La progettazione dei carichi di lavoro richiede la comprensione dei requisiti del carico di lavoro e quindi la scelta di topologie e approcci alla soluzione delle sfide presentate dai vincoli del carico di lavoro. Modelli di progettazione cloud che affrontano molte sfide comuni.

La progettazione dei sistemi è fortemente immersa nei pattern di progettazione. L'infrastruttura, il codice e i sistemi distribuiti sono tutti progettati intorno a una combinazione di modelli di progettazione. Questi modelli di progettazione sono utili per creare applicazioni affidabili, sicure, ottimizzate per i costi, operative solide e ad alte prestazioni nel cloud.

Questi modelli di progettazione non sono specifici di alcuna tecnologia e sono rilevanti per qualsiasi sistema distribuito, sia ospitato in Azure, in altre piattaforme cloud e alcuni possono anche estendersi a carichi di lavoro locali o ibridi.

I modelli di progettazione cloud consentono il processo di progettazione

I carichi di lavoro cloud sono soggetti alle fallacies del calcolo distribuito. Ecco alcuni esempi di fallacies di progettazione cloud:

  • La rete è affidabile
  • La latenza è zero
  • La larghezza di banda è infinita
  • La rete è sicura
  • La topologia non cambia
  • C'è un amministratore
  • Il controllo delle versioni dei componenti è semplice
  • L'implementazione dell'osservabilità può essere ritardata

I modelli di progettazione non eliminano nozioni come queste, ma possono contribuire a rendere consapevoli, compensazioni e mitigazioni di essi. Ogni modello di cloud ha i propri compromessi. È necessario prestare maggiore attenzione al motivo per cui si sceglie un determinato modello rispetto a come implementarlo.

Un carico di lavoro ben progettato considera il modo in cui questi modelli di progettazione a livello di settore devono essere usati come blocchi predefiniti di base per la progettazione del carico di lavoro. Ogni pilastro di Azure Well-Architected è rappresentato in questi modelli di progettazione, che spesso introducono compromessi tra gli obiettivi degli altri pilastri.

Catalogo dei modelli

Ogni modello in questo catalogo descrive il problema che il modello risolve, le considerazioni per l'applicazione del modello e un esempio basato su Microsoft Azure. Alcuni modelli includono esempi di codice o frammenti di codice che illustrano come implementare il modello in Azure.

Modello Riepilogo Concetti fondamentali di Azure Well-Architected Framework
Ambasciata Creare servizi helper che inviano richieste di rete per conto di un servizio consumer o di un'applicazione.
  • Affidabilità
  • Sicurezza
Livello antidanneggiamento Implementare un'interfaccia o un livello adapter tra un'applicazione moderna e un sistema legacy.
  • Eccellenza operativa
Richiesta e risposta asincrone Separare l'elaborazione back-end da un host front-end, in cui l'elaborazione back-end deve essere asincrona, ma il front-end necessita ancora di una risposta chiara.
  • Efficienza delle prestazioni
Back-end per front-end Creare servizi back-end separati da usare da specifiche applicazioni front-end o interfacce.
  • Affidabilità
  • Sicurezza
  • Efficienza delle prestazioni
A scomparti Isolare gli elementi di un'applicazione in pool in modo che, in caso di errore, gli altri continuino a funzionare.
  • Affidabilità
  • Sicurezza
  • Efficienza delle prestazioni
Cache-aside Caricare i dati su richiesta in una cache da un archivio dati.
  • Affidabilità
  • Efficienza delle prestazioni
Coreografia Consentire a ogni servizio di decidere quando e come viene elaborata un'operazione aziendale, invece di dipendere da un agente di orchestrazione centrale.
  • Eccellenza operativa
  • Efficienza delle prestazioni
Interruttore Gestire gli errori la cui correzione potrebbe richiedere una quantità variabile di tempo in fase di connessione a una risorsa o a un servizio remoto.
  • Affidabilità
  • Efficienza delle prestazioni
Scontrino Dividere un messaggio di grandi dimensioni in uno scontrino e un payload per evitare di sovraccaricare il bus dei messaggi.
  • Affidabilità
  • Sicurezza
  • Ottimizzazione costi
  • Efficienza delle prestazioni
Transazione di compensazione Annullare il lavoro eseguito da una serie di passaggi che insieme definiscono un'operazione coerente.
  • Affidabilità
Consumer concorrenti Consentire a più consumer concorrenti di elaborare i messaggi ricevuti sullo stesso canale di messaggistica.
  • Affidabilità
  • Ottimizzazione costi
  • Efficienza delle prestazioni
Consolidamento delle risorse di calcolo Consolidare più attività o operazioni in una singola unità di calcolo.
  • Ottimizzazione costi
  • Eccellenza operativa
  • Efficienza delle prestazioni
CQRS Consente di segregare le operazioni di lettura dei dati dalle operazioni di aggiornamento dei dati attraverso l'utilizzo di interfacce separate.
  • Efficienza delle prestazioni
Stamp di distribuzione Distribuire più copie indipendenti dei componenti dell'applicazione, inclusi gli archivi dati.
  • Eccellenza operativa
  • Efficienza delle prestazioni
Configurazione del carico di lavoro Edge Centralizzare la configurazione per affrontare la sfida di configurare più sistemi e dispositivi nel negozio.
Origine eventi Usare un archivio di solo accodamento per registrare la serie completa di eventi che descrivono le azioni eseguite sui dati di un dominio.
  • Affidabilità
  • Efficienza delle prestazioni
Archivio di configurazione esterno È possibile estrarre le informazioni di configurazione dal pacchetto di distribuzione dell'applicazione e spostarle in una posizione centralizzata.
  • Eccellenza operativa
Identità federativa È possibile delegare l'autenticazione a un provider di identità esterno.
  • Affidabilità
  • Sicurezza
  • Efficienza delle prestazioni
Gatekeeper Proteggere le applicazioni e i servizi usando un'istanza host dedicata che funga da broker tra i client e l'applicazione o il servizio, convalidi e purifichi le richieste e passi le richieste e i dati tra di essi.
  • Sicurezza
  • Efficienza delle prestazioni
Aggregazione gateway Usare un gateway per aggregare più richieste singole in un'unica richiesta.
  • Affidabilità
  • Sicurezza
  • Eccellenza operativa
  • Efficienza delle prestazioni
Offload del gateway Eseguire l'offload delle funzionalità dei servizi condivise o specializzate in un proxy gateway.
  • Affidabilità
  • Sicurezza
  • Ottimizzazione costi
  • Eccellenza operativa
  • Efficienza delle prestazioni
Routing del gateway Eseguire il routing delle richieste a più servizi, usando un singolo endpoint.
  • Affidabilità
  • Eccellenza operativa
  • Efficienza delle prestazioni
Geode Distribuire i servizi back-end in un set di nodi geografici, ognuno dei quali può rispondere a qualsiasi richiesta client in qualsiasi area.
  • Affidabilità
  • Efficienza delle prestazioni
Monitoraggio endpoint di integrità Implementare controlli funzionali all'interno di un'applicazione a cui gli strumenti esterni possono accedere tramite endpoint esposti a intervalli regolari.
  • Affidabilità
  • Eccellenza operativa
  • Efficienza delle prestazioni
Tabella degli indici Creare indici sui campi negli archivi dati spesso referenziati dalle query.
  • Affidabilità
  • Efficienza delle prestazioni
Designazione leader Coordinare le azioni eseguite da una raccolta di istanze di attività di collaborazione in un'applicazione distribuita designando un'istanza come leader, con la responsabilità di gestire le altre istanze.
  • Affidabilità
Vista materializzata Generare viste prepopolate sui dati in uno o più archivi dati quando i dati non sono formattati in modo ideale per le operazioni di query necessarie.
  • Efficienza delle prestazioni
Bridge di Messaggistica Creare un intermediario per abilitare la comunicazione tra sistemi di messaggistica altrimenti incompatibili a causa del protocollo o del formato.
  • Ottimizzazione costi
  • Eccellenza operativa
Pipe e filtri Scomporre un'attività che esegue un'elaborazione complessa in una serie di elementi distinti riutilizzabili.
  • Affidabilità
Coda di priorità Assegnare una priorità alle richieste inviate ai servizi in modo che le richieste con una priorità più alta vengano ricevute ed elaborate più rapidamente rispetto a quelle con priorità più bassa.
  • Affidabilità
  • Efficienza delle prestazioni
Autore/Sottoscrittore Abilitare un'applicazione all'annuncio di eventi a più consumer interessati in modalità asincrona, senza accoppiamento di mittenti e destinatari.
  • Affidabilità
  • Sicurezza
  • Ottimizzazione costi
  • Eccellenza operativa
  • Efficienza delle prestazioni
Quarantena Assicurarsi che gli asset esterni soddisfino un livello di qualità concordato dal team prima di essere autorizzati a utilizzarli nel carico di lavoro.
  • Sicurezza
  • Eccellenza operativa
Livellamento del carico basato sulle code Usare una coda che funge da buffer tra un'attività e un servizio richiamato per alleggerire i carichi di lavoro elevati intermittenti.
  • Affidabilità
  • Ottimizzazione costi
  • Efficienza delle prestazioni
Modello di limite di frequenza Il modello di limitazione consente di evitare o ridurre al minimo gli errori di limitazione correlati a questi limiti di limitazione e di prevedere in modo più accurato la velocità effettiva.
  • Affidabilità
Riprova È possibile abilitare un'applicazione per gestire gli errori temporanei previsti durante il tentativo di connessione a un servizio o a una risorsa di rete ritentando in modo trasparente un'operazione non riuscita in precedenza.
  • Affidabilità
Saga Gestire la coerenza dei dati tra microservizi in scenari di transazioni distribuite. Una saga è una sequenza di transazioni che aggiorna ogni servizio e pubblica un messaggio o un evento per attivare il passaggio successivo della transazione.
  • Affidabilità
Supervisione agente di pianificazione Coordinare un set di azioni in un set distribuito di servizi e di altre risorse remote.
  • Affidabilità
  • Efficienza delle prestazioni
Serie di istruzioni sequenziali Elaborare un set di messaggi correlati in un ordine definito, senza bloccare l'elaborazione di altri gruppi di messaggi.
  • Affidabilità
Partizionamento orizzontale Dividere un archivio dati in un set di partizioni orizzontali.
  • Affidabilità
  • Ottimizzazione costi
Collaterale Distribuire i componenti di un'applicazione in un processo o in un contenitore separato per fornire isolamento e incapsulamento.
  • Sicurezza
  • Eccellenza operativa
Hosting di contenuto statico Distribuire contenuto statico in un servizio di archiviazione basato sul cloud in grado di inviarlo direttamente al client.
  • Ottimizzazione costi
Strangler Fig Migrare in maniera incrementale un sistema legacy, sostituendo gradualmente parti specifiche di funzionalità con nuove applicazioni e servizi.
  • Affidabilità
  • Ottimizzazione costi
  • Eccellenza operativa
Limitazione Controllare il consumo delle risorse usate da un'istanza di un'applicazione, un singolo tenant o un intero servizio.
  • Affidabilità
  • Sicurezza
  • Ottimizzazione costi
  • Efficienza delle prestazioni
Passepartout Usare un token o una chiave che fornisca ai client l'accesso diretto limitato a una specifica risorsa o a un servizio.
  • Sicurezza
  • Ottimizzazione costi
  • Efficienza delle prestazioni

Passaggio successivo

Esaminare i modelli di progettazione dal punto di vista del Pilastro Azure Well-Architected che il modello intende ottimizzare.