Modelli di progettazione cloud

Questi schemi progettuali sono utili per la compilazione di applicazioni affidabili, scalabili e sicure nel cloud.

Ogni schema descrive il problema che risolve, le considerazioni per l'applicazione dello schema e un esempio basato su Microsoft Azure. La maggior parte dei modelli include esempi di codice o frammenti che mostrano come implementare il modello in Azure. Tuttavia, la maggior parte dei modelli è rilevante per qualsiasi sistema distribuito, sia ospitato in Azure che in altre piattaforme cloud.

Sfide per lo sviluppo nel cloud

Gestione dei dati

Gestione dei dati

La gestione dei dati è l'elemento chiave delle applicazioni cloud e influisce sulla maggior parte degli attributi di qualità. I dati sono in genere ospitati in posizioni diverse e in più server per prestazioni, scalabilità o disponibilità. Ciò può presentare varie sfide. Ad esempio, è necessario mantenere la coerenza dei dati e sincronizzare in genere i dati tra posizioni diverse.

Progettazione e implementazione

Progettazione e implementazione

Una buona progettazione include coerenza e coerenza nella progettazione e nella distribuzione dei componenti, la gestibilità per semplificare l'amministrazione e lo sviluppo e la riutilizzabilità per consentire l'uso di componenti e sottosistemi in altri scenari e applicazioni. Le decisioni prese durante la fase di progettazione e implementazione influiscono significativamente sulla qualità e sul costo totale della proprietà delle applicazioni e dei servizi ospitati dal cloud.

Icona Messaggistica

Messaggistica

La natura distribuita delle applicazioni cloud richiede un'infrastruttura di messaggistica che connette i componenti e i servizi, idealmente associato in modo libero per ottimizzare la scalabilità. La messaggistica asincrona è ampiamente usata e offre molti vantaggi, ma comporta anche sfide come l'ordinamento di messaggi, la gestione dei messaggi non elaborabili, la idempotenza e altro ancora.

Catalogo dei modelli

Modello Summary Category
Ambasciata Creare servizi helper che inviano richieste di rete per conto di un servizio consumer o di un'applicazione. Progettazione e implementazione
Eccellenza operativa
Livello antidanneggiamento Implementare un'interfaccia o un livello adapter tra un'applicazione moderna e un sistema legacy. Progettazione e implementazione
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. Messaggistica
Back-end per front-end Creare servizi back-end separati che vengono utilizzati da interfacce o applicazioni front-end specifiche. Progettazione e implementazione
A scomparti Isolare gli elementi di un'applicazione in pool in modo che un eventuale problema in uno dei componenti non blocchi il funzionamento degli altri componenti. Affidabilità
Cache-aside Caricare i dati su richiesta in una cache da un archivio dati Gestione dei dati
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. Messaggistica
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à
Scontrino Dividere un messaggio di grandi dimensioni in uno scontrino e un payload per evitare di sovraccaricare il bus dei messaggi. Messaggistica
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. Messaggistica
Consolidamento delle risorse di calcolo Consolidare più attività o operazioni in un'unica unità di calcolo Progettazione e implementazione
CQRS Consente di segregare le operazioni di lettura dei dati dalle operazioni di aggiornamento dei dati attraverso l'utilizzo di interfacce separate. Gestione dei dati
Progettazione e implementazione
Efficienza delle prestazioni
Stamp di distribuzione Distribuire più copie indipendenti dei componenti dell'applicazione, inclusi gli archivi dati. Affidabilità,
Efficienza delle prestazioni
Configurazione del carico di lavoro perimetrale La grande varietà di sistemi e dispositivi in un reparto produzione può rendere difficile la configurazione del carico di lavoro. Progettazione e implementazione
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. Gestione dei dati
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. Progettazione e implementazione
Eccellenza operativa
Identità federativa È possibile delegare l'autenticazione a un provider di identità esterno. Sicurezza
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
Aggregazione gateway Usare un gateway per aggregare più richieste singole in un'unica richiesta. Progettazione e implementazione
Eccellenza operativa
Offload del gateway Eseguire l'offload delle funzionalità dei servizi condivise o specializzate in un proxy gateway. Progettazione e implementazione
Eccellenza operativa
Routing del gateway Eseguire il routing delle richieste a più servizi, usando un singolo endpoint. Progettazione e implementazione
Eccellenza operativa
Geodes Distribuire i servizi back-end in un set di nodi geografici, ognuno dei quali può rispondere a qualsiasi richiesta client in qualsiasi area. Affidabilità,
Eccellenza operativa
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
Tabella degli indici Creare indici sui campi negli archivi dati spesso referenziati dalle query. Gestione dei dati
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. Progettazione e implementazione
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. Gestione dei dati
Eccellenza operativa,
Efficienza delle prestazioni
Pipe e filtri Scomporre un'attività che esegue un'elaborazione complessa in una serie di elementi distinti riutilizzabili. Progettazione e implementazione
Messaggistica
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. Messaggistica
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. Messaggistica
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à,
Messaggistica
Resilienza
Efficienza delle prestazioni
Modello limite di frequenza Limitare il modello per evitare o ridurre al minimo gli errori di limitazione correlati a questi limiti di limitazione e per facilitare la stima più accurata della velocità effettiva. Affidabilità
Nuovo tentativo È 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 transazione distribuiti. Una saga è una sequenza di transazioni che aggiorna ogni servizio e pubblica un messaggio o un evento per attivare il passaggio successivo della transazione. Messaggistica
Supervisione agente di pianificazione Coordinare un set di azioni in un set distribuito di servizi e di altre risorse remote. Messaggistica
Affidabilità
Serie di istruzioni sequenziali Elaborare un set di messaggi correlati in un ordine definito, senza bloccare l'elaborazione di altri gruppi di messaggi. Messaggistica
Partizionamento orizzontale Dividere un archivio dati in un set di partizioni orizzontali. Gestione dei dati
Efficienza delle prestazioni
Collaterale Distribuire i componenti di un'applicazione in un processo o in un contenitore separato per fornire isolamento e incapsulamento. Progettazione e implementazione
Eccellenza operativa
Hosting di contenuto statico Distribuire contenuto statico in un servizio di archiviazione basato sul cloud in grado di inviarlo direttamente al client. Progettazione e implementazione
Gestione dei dati
Efficienza delle prestazioni
Strangler Fig Migrare in maniera incrementale un sistema legacy, sostituendo gradualmente parti specifiche di funzionalità con nuove applicazioni e servizi. Progettazione e implementazione
Eccellenza operativa
Limitazione Controllare il consumo delle risorse usate da un'istanza di un'applicazione, un singolo tenant o un intero servizio. Affidabilità,
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. Gestione dei dati
Sicurezza