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 di codice che illustrano come implementare il modello in Azure. Tuttavia, la maggior parte dei modelli è rilevante per qualsiasi sistema distribuito, ospitato in Azure o in altre piattaforme cloud.

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.

Sfide per lo sviluppo nel cloud

Gestione dei dati

Gestione dati

La gestione dei dati è l'elemento chiave delle applicazioni cloud e influenza la maggior parte degli attributi di qualità. I dati sono in genere ospitati in posizioni diverse e in più server per prestazioni, scalabilità o disponibilità. Questo 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 comprende coerenza e coerenza nella progettazione e nella distribuzione dei componenti, la manutenibilità per semplificare l'amministrazione e lo sviluppo e la riutilizzabilità per consentire l'uso di componenti e sottosistemi in altre applicazioni e scenari. Le decisioni prese durante la fase di progettazione e implementazione influisce significativamente sulla qualità e sul costo totale di proprietà di applicazioni e servizi ospitati nel cloud.

Icona di messaggistica

Messaggistica

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

Catalogo dei modelli

Modello Riepilogo Categoria
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 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 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 Edge 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 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 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 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 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. 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 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 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 dati,
Sicurezza