Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Uno stile di architettura è una famiglia di architetture che condividono caratteristiche specifiche. Ad esempio, il livello N è uno stile di architettura comune. Più di recente, le architetture di microservizi stanno iniziando a guadagnare favore. Gli stili di architettura non richiedono l'uso di tecnologie specifiche, ma alcune tecnologie sono più adatte per determinate architetture. Ad esempio, i contenitori sono particolarmente adatti per i microservizi.
È stato identificato un set di stili di architettura comunemente presenti nelle applicazioni cloud. L'articolo per ogni stile include i componenti seguenti:
- Descrizione e diagramma logico dello stile
- Consigli per quando scegliere questo stile
- Vantaggi, sfide e procedure consigliate
- Distribuzione consigliata che usa i servizi di Azure pertinenti
Un rapido tour degli stili
Questa sezione illustra rapidamente gli stili di architettura identificati, insieme ad alcune considerazioni di alto livello per l'uso. Questo elenco non è esaustivo. Per altre informazioni, vedere gli articoli collegati.
N livelli
Il livello N è un'architettura tradizionale per le applicazioni aziendali che divide un'applicazione in livelli logici e livelli fisici. Ogni livello ha una responsabilità specifica e i livelli gestiscono le dipendenze effettuando chiamate solo verso i livelli sottostanti. I livelli tipici includono presentazione, logica di business e accesso ai dati.
Le architetture a più livelli sono adatte per la migrazione di applicazioni esistenti che usano già un'architettura a più livelli. Questo approccio richiede modifiche minime quando si passa ad Azure e supporta ambienti misti con componenti locali e cloud. Tuttavia, la sovrapposizione orizzontale può rendere difficile introdurre modifiche senza influire su più parti dell'applicazione, che limita l'agilità per gli aggiornamenti frequenti.
Web-Queue-Worker
Web-Queue-Worker è un'architettura costituita da un front-end Web, una coda di messaggi e un ruolo di lavoro back-end. Il front-end Web gestisce le richieste HTTP e le interazioni dell'utente, mentre il worker esegue attività a uso intensivo di risorse, flussi di lavoro a lunga durata o operazioni batch. La comunicazione tra l'interfaccia e il worker avviene tramite una coda di messaggi asincrona.
Questa architettura è ideale per le applicazioni con domini relativamente semplici con requisiti di elaborazione a elevato utilizzo di risorse. È facile comprendere e distribuire con servizi di Azure gestiti, ad esempio Servizio app e Funzioni di Azure. È possibile ridimensionare in modo indipendente il front end e il worker per offrire flessibilità nell'allocazione delle risorse. Ma senza un'attenta progettazione, entrambi i componenti possono diventare grandi e monolitici.
Microservizi
L'architettura dei microservizi scompone le applicazioni in una raccolta di servizi autonomi di piccole dimensioni. Ogni servizio implementa una singola funzionalità aziendale all'interno di un contesto delimitato ed è indipendente con la propria archiviazione dei dati. I servizi comunicano tramite API ben definite e possono essere sviluppati, distribuiti e ridimensionati in modo indipendente.
I microservizi consentono ai team di lavorare in modo autonomo e supportare aggiornamenti frequenti con una maggiore velocità di rilascio. Questa architettura è particolarmente adatta per domini complessi che richiedono modifiche frequenti e innovazione. Ma introduce una notevole complessità in aree come l'individuazione dei servizi, la coerenza dei dati e la gestione del sistema distribuita. Il successo richiede procedure di sviluppo e DevOps mature, che lo rendono più adatto per le organizzazioni che dispongono di funzionalità tecniche avanzate.
Architettura basata su eventi
Le architetture guidate dagli eventi usano un modello di pubblicazione-sottoscrizione in cui i produttori di eventi generano flussi di eventi e i consumer di eventi rispondono a tali eventi quasi in tempo reale. I produttori e i consumer sono separati l'uno dall'altro, con la comunicazione che avviene tramite canali di eventi o broker. Questa architettura supporta sia l'elaborazione semplice degli eventi che l'analisi dei modelli di eventi complessi.
Le architetture guidate dagli eventi sono eccellenti negli scenari che richiedono l'elaborazione in tempo reale con una latenza minima. Alcuni esempi sono soluzioni IoT, sistemi di trading finanziario o applicazioni che devono elaborare volumi elevati di dati di streaming. Le architetture guidate dagli eventi offrono un'eccellente scalabilità e isolamento degli errori, ma introducono sfide relative al recapito garantito, all'ordinamento degli eventi e alla coerenza finale tra i componenti distribuiti.
Big Data
Le architetture di Big Data gestiscono l'inserimento, l'elaborazione e l'analisi dei dati troppo grandi o complessi per i sistemi di database tradizionali. Queste architetture includono in genere componenti per l'archiviazione dei dati (ad esempio data lake), l'elaborazione batch per l'analisi cronologica, l'elaborazione dei flussi per informazioni dettagliate in tempo reale e gli archivi dati analitici per la creazione di report e la visualizzazione.
Le architetture di Big Data sono essenziali per le organizzazioni che devono estrarre informazioni dettagliate da set di dati di grandi dimensioni, supportare l'analisi predittiva usando Machine Learning o elaborare dati di streaming in tempo reale dai dispositivi IoT. Le implementazioni moderne usano spesso servizi gestiti come Microsoft Fabric per semplificare la complessità della creazione e della gestione di soluzioni Per Big Data.
Computazione su larga scala
Le architetture di big computing supportano carichi di lavoro su larga scala che richiedono centinaia o migliaia di core per operazioni a elevato utilizzo di calcolo. Il lavoro può essere suddiviso in attività discrete eseguite contemporaneamente su molti core, con ogni attività che prende input, lo elabora e produce output. Le attività possono essere indipendenti (perfettamente parallele) o strettamente associate che richiedono comunicazioni ad alta velocità.
Il Big Compute è essenziale per simulazioni, modellazione dei rischi finanziari, calcolo scientifico, analisi dello stress tecnico e rendering 3D. Azure offre opzioni come Azure Batch per carichi di lavoro big compute gestiti o HPC Pack per la gestione dei cluster più tradizionale. Queste architetture possono espandere la capacità su richiesta e ridimensionarsi fino a migliaia di core all'occorrenza.
Stili di architettura come vincoli
Uno stile di architettura inserisce vincoli sulla progettazione, incluso il set di elementi che possono essere visualizzati e le relazioni consentite tra tali elementi. I vincoli guidano la "forma" di un'architettura limitando l'universo delle scelte. Quando un'architettura è conforme ai vincoli di uno stile specifico, emergono determinate proprietà desiderate.
Ad esempio, i vincoli nei microservizi includono:
- Un servizio rappresenta una singola responsabilità.
- Ogni servizio è indipendente dagli altri.
- I dati sono privati al servizio che li possiede. I servizi non condividono i dati.
Quando si rispetta questi vincoli, si ottiene un sistema che consente di eseguire le azioni seguenti:
- Distribuire i servizi in modo indipendente.
- Isolare gli errori.
- Distribuire aggiornamenti più frequenti.
- Introdurre nuove tecnologie nell'applicazione più facilmente.
Ogni stile di architettura ha i propri compromessi. Prima di scegliere uno stile architettonico, è essenziale comprendere i principi e i vincoli sottostanti. Senza tale comprensione, si rischia di creare un design che si conforma superficialmente allo stile senza rendersi conto dei suoi vantaggi completi. Concentrarsi maggiormente sul motivo per cui si seleziona uno stile specifico rispetto a come implementarlo. Siate pratici. A volte è meglio rilassare un vincolo che inseguire la purezza dell'architettura.
Idealmente, la scelta dello stile dell'architettura deve essere effettuata con l'input degli stakeholder del carico di lavoro informati. Il team del carico di lavoro deve iniziare identificando la natura del problema che sta risolvendo. Devono quindi definire i principali driver aziendali e le caratteristiche di architettura corrispondenti, noti anche come requisiti non funzionali e assegnarle priorità. Ad esempio, se il time-to-market è fondamentale, il team potrebbe classificare in ordine di priorità la gestibilità, la testabilità e l'affidabilità per abilitare la distribuzione rapida. Se il team ha vincoli di budget limitati, la fattibilità e la semplicità potrebbero avere la precedenza. La selezione e il mantenimento di uno stile architetturale non è un'attività monouso. Richiede misurazioni, convalida e perfezionamento in corso. Poiché il cambiamento della direzione dell'architettura in un secondo momento può essere costoso, spesso vale la pena investire più impegno iniziale per supportare l'efficienza a lungo termine e ridurre i rischi.
Nella tabella seguente viene riepilogato il modo in cui ogni stile gestisce le dipendenze e i tipi di dominio più adatti per ogni stile.
| Stile di architettura | Gestione delle dipendenze | Tipo di dominio |
|---|---|---|
| A più livelli | Livelli orizzontali divisi per sottorete | Dominio aziendale tradizionale. La frequenza degli aggiornamenti è bassa. |
| Web-Queue-Worker | Processi front-end e back-end, separati dalla messaggistica asincrona. | Dominio relativamente semplice con alcune attività a elevato utilizzo di risorse. |
| Microservizi | Servizi scomposti verticalmente (funzionalmente) che si chiamano tra loro tramite le API. | Dominio complicato. Aggiornamenti frequenti. |
| Architettura guidata dagli eventi | Produttore o consumatore. Visualizzazione indipendente per ogni sottosistema. | Internet delle cose (IoT) e sistemi in tempo reale. |
| Big Data | Dividere un set di dati enorme in piccoli blocchi. Elaborazione parallela nei set di dati locali. | Analisi dei dati in batch e in tempo reale. Analisi predittiva con Machine Learning. |
| Big Compute | Allocazione dei dati a migliaia di core. | Domini a elevato utilizzo di calcolo, ad esempio la simulazione. |
Prendere in considerazione sfide e vantaggi
I vincoli creano anche sfide, quindi è importante comprendere i compromessi quando si adotta uno di questi stili. Determinare se i vantaggi dello stile dell'architettura superano le sfide, per questo sottodominio e contesto delimitato.
Quando si seleziona uno stile di architettura, considerare i tipi di problemi seguenti:
Complessità: La complessità dell'architettura deve corrispondere al dominio. Se è troppo semplicistico, può comportare una grande palla di fango, in cui le dipendenze non sono ben gestite e la struttura si suddivide.
Messaggistica asincrona e coerenza finale: La messaggistica asincrona viene usata per separare i servizi e migliorare l'affidabilità perché è possibile ritentare i messaggi. Migliora anche la scalabilità. Tuttavia, la messaggistica asincrona crea anche problemi nella gestione della coerenza finale e della possibilità di messaggi duplicati.
Comunicazione tra servizi: La scomposizione di un'applicazione in servizi separati potrebbe aumentare il sovraccarico di comunicazione. Nelle architetture di microservizi questo sovraccarico comporta spesso problemi di latenza o congestione della rete.
Maneggiabilità: La gestione dell'applicazione include attività come il monitoraggio, la distribuzione degli aggiornamenti e la gestione dell'integrità operativa.
" output is necessary.)
- Dieci principi di progettazione per le applicazioni Azure
Passaggi successivi
- Creare applicazioni in Microsoft Cloud
- Procedure consigliate nelle applicazioni cloud
- modelli di progettazione cloud
- Test delle prestazioni e antipattern per le applicazioni cloud
- Progettare soluzioni multi-tenant in Azure
- Architettura del carico di lavoro cruciale in Azure
- Architettura per le startup