TECHTARGET

Diagrammi di architettura per creare App in cloud

Che il cloud abbia cambiato l’application design non è per niente strano: ogni era IT rimodella l’approccio alle applicazioni e anche all’infrastruttura in funzione del nuovo ambiente. In questo articolo, alcuni esempi di diagrammi architetturali utili a guidare i progetti utilizzando i maggiori cloud provider

Pubblicato il 30 Set 2021

app in cloud

Il cloud ha innescato una trasformazione dei sistemi e dei software aziendali. Niente di strano, ogni era IT rimodella il modo in cui si elaborano i dati, si progettano applicazioni e si provvede all’infrastruttura. Le tecnologie più importanti e trasformative richiedono spesso architetture applicative e infrastrutturali diverse da quelle precedenti per sfruttare appieno i loro vantaggi. Dunque, niente di diverso rispetto a quanto già accaduto in passato; solo la necessità di capire bene i meccanismi del cambiamento per poterne ottenere il meglio.

Dall’era del mainframe all’era del cloud

I requisiti funzionali di molte applicazioni aziendali, come la ricerca, il recupero e la visualizzazione di informazioni, l’immissione di dati nei moduli e la registrazione delle transazioni, potrebbero anche non essere cambiati molto e non cambiare molto nel corso degli anni. Tuttavia, il modo in cui questi processi vengono completati e l’infrastruttura che li abilita si sono notevolmente trasformati dall’era del mainframe all’era del cloud.

I diagrammi dell’architettura cloud e i modelli di progettazione sono due tecniche consolidate e pratiche per concepire, visualizzare e pianificare la progettazione di applicazioni e infrastrutture. Questi diagrammi e modelli sono spesso combinati con un particolare modello di progettazione implicitamente incorporato in un diagramma architettonico.

Virtualizzando l’infrastruttura IT, oltre a tool di sviluppo pacchettizzati, servizi event-driven e API, il cloud computing ha innescato un ripensamento radicale dell’application design.

Evoluzione della App Architecture

Dallo sviluppo del mainframe e del minicomputer, le applicazioni aziendali sono rimaste monolitiche: sistemi grandi e tentacolari con più di centomila righe di codice. L’era del PC e l’elaborazione client-server hanno portato a un minimo di disaggregazione funzionale, dato che le interfacce utente delle applicazioni sono state costruite per il sistema operativo PC.

Inoltre, il software di back-end è stato suddiviso in middleware e sistemi di database separati. Dopo essersi adattato ai miglioramenti tecnologici, come la virtualizzazione dei server e gli storage pool SAN, tale partizionamento a più livelli persiste oggi nella maggior parte dei sistemi on-premise.

I cloud service modificano in modo significativo le architetture applicative attraverso diverse innovazioni, tra cui:

  • Istanze on demand, scalabili automaticamente e storage di più tipi
  • Servizi serverless event driven
  • Application container e managed container cluster
  • Servizi pacchettizzati per molte funzioni standard come database, data warehouse, memorizzazione nella cache dei dati, bilanciamento del carico, accodamento dei messaggi, routing della rete virtuale, notifiche e distribuzione di contenuti

In genere, le applicazioni progettate per il cloud funzionano meglio e in modo più efficiente se suddivise in sottosistemi, molti dei quali possono essere implementati tramite servizi cloud pacchettizzati. Inoltre, un numero crescente di prodotti cloud non richiede il provisioning delle VM e può essere ridimensionato automaticamente per gestire workload più elevati.

La facilità di impiego di risorse e servizi cloud, unita alla loro disponibilità indipendentemente dalle aree geografiche, semplificano l’implementazione di progetti di tipo highly available tramite server ridondanti, storage di oggetti e volumi, database e interfacce di rete.

Le funzionalità di management automation e automatic scalability sono integrate in molti servizi cloud. Ciò modifica le linee guida di infrastructure design rispetto agli standard on-premise, mettendo in risalto:

  • Sistemi scale-out intrinsecamente ridondanti e facilmente scalabili
  • Componenti indipendenti e liberamente accoppiati che possono riavviarsi dopo i guasti senza influire sugli altri livelli dell’applicazione
  • Componenti o livelli che si replicano in più zone di disponibilità e diverse cloud region
  • Punti di controllo di sicurezza tra i componenti per ridurre al minimo il raggio di esplosione dei sistemi compromessi e fornire le autorizzazioni con il principio del privilegio minimo per ciascun componente each

Website design serveless

Oggi, gli sviluppatori possono utilizzare cloud service event-driven per creare siti Web senza distribuire server dedicati per i front-end Web, la gestione delle funzioni del middleware e l’archiviazione del database.

L’ampio portafoglio di prodotti serverless rende AWS la scelta ideale per i siti Web dinamici senza il server Web. Vediamo, a titolo di esempio, come si possono utilizzare i servizi cloud AWS per gestire tutti i sottosistemi, includendo:

  • AWS amplifiy. Crea e ospita contenuto statico e lo distribuisce automaticamente a una rete di distribuzione dei contenuti globale.
  • Amazon Cognito. Ospita la user directory di un sito e gestisce l’autenticazione.
  • Amazon API Gateway. Analizza e indirizza le richieste REST in ingresso al gestore di funzioni appropriato.
  • AWS Lambda. Esegue il codice per ogni chiamata di funzione API.
  • Amazon DynamoDB e Amazon Redshift. Host dei dati persistenti utilizzati o creati dal sito.

Nel caso, in funzione delle situazioni, è possibile anche utilizzare altre offerte di managed database AWS al posto o in aggiunta ai prodotti che abbiamo citato.

Design tradizionale del sito web

Un design tradizionale di un sito Web multilivello utilizza istanze di calcolo per l’interfaccia utente e il codice back-end dell’applicazione. Questo tipo di progettazione utilizza anche un database cloud per archiviare ed elaborare dati persistenti e i sistemi di bilanciamento del carico distribuiscono il traffico su più istanze e zone di disponibilità tra ogni livello.

Nell’immagine seguente, l’esempio del design di un sito web tradizionale su Google Cloud che utilizza i seguenti servizi cloud:

  • Google Cloud Compute Engine. I primi due livelli utilizzano istanze di Compute Engine configurate per la scalabilità automatica, con ogni livello distribuito in due zone diverse.
  • Google Cloud SQL. Un’istanza Cloud SQL archivia e analizza i dati ed è configurata per la replica multizona per migliorare la disponibilità.
  • Load balancer. Un sistema di bilanciamento del carico esterno e interno distribuisce il traffico tra le istanze di calcolo.
  • Identy-Aware Proxy. Il traffico in entrata passa da un servizio Proxy Identity-Aware per l’autenticazione dell’utente.
  • Security Command Center. Un’istanza di Security Command Center filtra le minacce alla sicurezza.

Classificazione delle immagini per app mobili e web

I servizi cloud sono spesso utilizzati per applicazioni di machine learning e deep learning. Questo avviene perché il software e l’infrastruttura necessari per implementare algoritmi sofisticati sono costosi e richiedono competenze specializzate per lo sviluppo, la configurazione e la gestione.

Il diagramma riportato qui sotto illustra come sia possibile elaborare le immagini utilizzando una mobile app per identificare oggetti e volti e quindi abbinarli a persone conosciute in un database utilizzando Microsoft Azure. Il design include i seguenti componenti:

  • Azure API Management. Un’istanza di gestione API per archiviare le descrizioni API ed elaborare le chiamate in arrivo.
  • Azure Functions App. Diverse app di Azure Functions recuperano le immagini, le inviano allo storage permenente, recuperano nuove immagini da Azure Event Grid e quindi le inviano ad Azure Cognitive Services. Un’app aggiuntiva di Azure Functions recupera e restituisce le corrispondenze dal database alla mobile app.
  • Azure Blob Storage. Il Blob Storage viene usato nei caricamenti di immagini, e per il contenuto statico, per una Web application.
  • Azure Event Grid. Il sub/pub di Event Grid riceve notifiche di nuovi caricamenti e li inoltra a una funzione per l’elaborazione.
  • Azure Computer Vision. Questo servizio di intelligenza artificiale analizza le immagini ed estrae i metadati. L’app può anche usare il servizio Azure Cognitive Search per eseguire query sui metadati.
  • Azure Cosmos DB. Il database archivia e associa i metadati alle voci esistenti.

Un’applicazione con questa architettura potrebbe confrontare le immagini caricate con un database di clienti, dipendenti o utenti per restituire informazioni sul profilo delle persone identificate in una foto. Un servizio di trascrizione del testo potrebbe anche usare una variante di questo design, sostituendo Azure Computer Vision con Azure Natural Language Services, per tradurre l’audio e restituire una trascrizione di testo.

Progetto di migrazione cloud

I diagrammi dell’architettura sono utili per i progetti di migrazione cloud una tantum, come la migrazione lift-and-shift di VM, la migrazione di cluster di container a istanze cloud e la migrazione di un database legacy a un servizio distribuito cloud-native.

A titolo di esempio, il diagramma seguente illustra il processo di migrazione di un database Oracle on-premise a Google Cloud Spanner utilizzando i servizi Google, in particolare:

  • Google Cloud Storage. Questo servizio di archiviazione contiene file CSV.
  • Google Cloud Dataflow. Cloud Dataflow esegue l’estrazione, la trasformazione e l’elaborazione del caricamento. Include l’analisi dei file CSV, la loro conversione in mutazioni Spanner (inserimenti, aggiornamenti ed eliminazioni di dati) e la gestione degli errori di analisi ed elaborazione.
  • Google Cloud Spanner. Cloud Spanner riceve l’output da Cloud Dataflow.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati