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 datiLa 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 implementazioneUna 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. |
|
MessaggisticaLa 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 |