Appunti su Cloud Computing e Microsoft Azure: architettura e servizi

Documento di Appunti sul Cloud Computing e Microsoft Azure. Il Pdf, ideale per studenti universitari di Informatica, esplora i vantaggi del Cloud Computing, i modelli di servizio e l'architettura "Web Role – Worker Role", con un esempio "Hello World" e l'uso delle code di Azure.

Mostra di più

47 pagine

Il Cloud Computing rappresenta un modello informatico in cui le risorse hardware e
software sono virtualizzate e fornite tramite un'interfaccia orientata ai servizi (service-
oriented interface). Questo modello offre risorse scalabili e indipendenti dalla
posizione fisica degli utenti, consentendo di accedere a server condivisi in data center
distribuiti. Grazie alla sua elasticità, il cloud permette di adattare le risorse alle
necessità variabili, rappresentando un'evoluzione naturale di concetti come la
virtualizzazione, l'architettura orientata ai servizi (SOA) e il cosiddetto utility computing,
ossia l'esternalizzazione della gestione delle risorse informatiche.
Vantaggi del Cloud Computing
Alta scalabilità, elasticità e cost efficiency: le istanze cloud vengono create
automaticamente solo quando serve e distrutte quando non più necessarie, in
modo da pagare esclusivamente le risorse effettivamente utilizzate e ridurre al
minimo gli sprechi.
Broad network access: i servizi cloud sono accessibili via rete utilizzando
protocolli standard (HTTP/HTTPS/TCP), rendendo possibile l’accesso da
dispositivi eterogenei come smartphone, tablet, laptop o workstation.
Risparmio energetico: la virtualizzazione e il consolidamento dei workload
possono ridurre il consumo energetico fino al 90%.
Resilienza e disaster recovery: l’utilizzo di più siti ridondanti nei data center
assicura continuità operativa in caso di guasti o disastri.
Modelli di servizio cloud
Infrastructure as a Service (IaaS): fornisce risorse di base di calcolo e storage
on-demand. L'utente gestisce sistema operativo, middleware, runtime e
applicazioni.
Platform as a Service (PaaS): fornisce un ambiente di hosting per applicazioni,
gestendo la maggior parte dell’infrastruttura sottostante. L'utente si occupa solo
dello sviluppo del codice applicativo.
Software as a Service (SaaS): fornisce applicazioni accessibili direttamente via
browser o client dedicati. L'utente utilizza il software senza preoccuparsi
dell’infrastruttura.
Introduzione a Microsoft Azure
Microsoft Azure è una piattaforma PaaS (Platform as a Service) che si presenta come
un sistema operativo per il data center: tratta l'intero data center come una singola
macchina virtuale, gestendo in modo centralizzato risorse, provisioning, monitoraggio e
ciclo di vita delle applicazioni. Ciò consente agli sviluppatori di concentrarsi
esclusivamente sulla logica applicativa, senza doversi preoccupare della gestione
dell'infrastruttura fisica.
Le componenti principali di Microsoft Azure includono:
1. Compute: servizio per eseguire applicazioni. I workload devono essere
implementati in uno o più ruoli:
a. Web Role: istanze pre-configurate con server web per applicazioni web
(es. .NET, PHP, Java), ideali per gestire richieste HTTP/HTTPS.
b. Worker Role: istanze eseguite in background per attività di elaborazione
intensive (simulazioni, elaborazione batch, processi in coda).
L’interazione fra Web e Worker avviene spesso tramite code di messaggi.
c. VM Role (Virtual Machines): offre pieno controllo sull’OS. Si possono
utilizzare immagini predefinite o personalizzate e pagarle in base al
tempo di esecuzione. Utile per migrare applicazioni on-premise senza
modifiche significative.
Gli sviluppatori possono decidere, tramite il portale Azure o API REST, il numero di
istanze di ciascun ruolo: se il carico aumenta, si richiedono più istanze; se diminuisce,
ne si riduce il numero. Azure gestisce automaticamente bilanciamento del carico e alta
disponibilità.
2. Storage: offre diversi meccanismi per conservare dati, con replica interna tripla
per garantire tolleranza ai guasti e coerenza forte. I servizi di Storage principali
sono:
a. Blob Storage: archiviazione di dati non strutturati, come file, immagini,
video. I blob possono raggiungere 1 TB di dimensione e risiedono in
container che possono contenere un numero illimitato di blob.
b. Table Storage: datastore NoSQL per dati strutturati, ma non relazionali.
Ogni tabella converte le informazioni in entità dotate di chiavi di
partizione e riga, garantendo scalabilità orizzontale e query veloci su
chiavi. Non supporta join o relazioni complesse, ma è ideale per scenari
web-scale.
c. Queue Storage: archivio di messaggi per comunicazione asincrona tra
componenti, utile a distribuire operazioni intensive a istanze di Worker
Role senza bloccare il front-end.
3. Content Delivery Network (CDN): rete di distribuzione geografica che
memorizza in cache i blob in posizioni POP vicine agli utenti. Al primo accesso, il
blob viene salvato nel nodo CDN più vicino; agli accessi successivi, viene servito
dalla cache, riducendo latenza e migliorando le performance.

Visualizza gratis il Pdf completo

Registrati per accedere all’intero documento e trasformarlo con l’AI.

Anteprima

Il Cloud Computing

Il Cloud Computing rappresenta un modello informatico in cui le risorse hardware e software sono virtualizzate e fornite tramite un'interfaccia orientata ai servizi (service- oriented interface). Questo modello offre risorse scalabili e indipendenti dalla posizione fisica degli utenti, consentendo di accedere a server condivisi in data center distribuiti. Grazie alla sua elasticità, il cloud permette di adattare le risorse alle necessità variabili, rappresentando un'evoluzione naturale di concetti come la virtualizzazione, l'architettura orientata ai servizi (SOA) e il cosiddetto utility computing, ossia l'esternalizzazione della gestione delle risorse informatiche.

Vantaggi del Cloud Computing

  • Alta scalabilità, elasticità e cost efficiency: le istanze cloud vengono create automaticamente solo quando serve e distrutte quando non più necessarie, in modo da pagare esclusivamente le risorse effettivamente utilizzate e ridurre al minimo gli sprechi.
  • Broad network access: i servizi cloud sono accessibili via rete utilizzando protocolli standard (HTTP/HTTPS/TCP), rendendo possibile l'accesso da dispositivi eterogenei come smartphone, tablet, laptop o workstation.
  • Risparmio energetico: la virtualizzazione e il consolidamento dei workload possono ridurre il consumo energetico fino al 90%.
  • Resilienza e disaster recovery: l'utilizzo di più siti ridondanti nei data center assicura continuità operativa in caso di guasti o disastri.

Modelli di servizio cloud

  • Infrastructure as a Service (laaS): fornisce risorse di base di calcolo e storage on-demand. L'utente gestisce sistema operativo, middleware, runtime e applicazioni.
  • Platform as a Service (PaaS): fornisce un ambiente di hosting per applicazioni, gestendo la maggior parte dell'infrastruttura sottostante. L'utente si occupa solo dello sviluppo del codice applicativo.
  • Software as a Service (Saas): fornisce applicazioni accessibili direttamente via browser o client dedicati. L'utente utilizza il software senza preoccuparsi dell'infrastruttura.

Introduzione a Microsoft Azure

Microsoft Azure è una piattaforma PaaS (Platform as a Service) che si presenta come un sistema operativo per il data center: tratta l'intero data center come una singolamacchina virtuale, gestendo in modo centralizzato risorse, provisioning, monitoraggio e ciclo di vita delle applicazioni. Ciò consente agli sviluppatori di concentrarsi esclusivamente sulla logica applicativa, senza doversi preoccupare della gestione dell'infrastruttura fisica.

Le componenti principali di Microsoft Azure includono:

  1. Compute: servizio per eseguire applicazioni. I workload devono essere implementati in uno o più ruoli:
    1. Web Role: istanze pre-configurate con server web per applicazioni web (es. . NET, PHP, Java), ideali per gestire richieste HTTP/HTTPS.
    2. Worker Role: istanze eseguite in background per attività di elaborazione intensive (simulazioni, elaborazione batch, processi in coda). L'interazione fra Web e Worker avviene spesso tramite code di messaggi.
    3. VM Role (Virtual Machines): offre pieno controllo sull'OS. Si possono utilizzare immagini predefinite o personalizzate e pagarle in base al tempo di esecuzione. Utile per migrare applicazioni on-premise senza modifiche significative.
    Gli sviluppatori possono decidere, tramite il portale Azure o API REST, il numero di istanze di ciascun ruolo: se il carico aumenta, si richiedono più istanze; se diminuisce, ne si riduce il numero. Azure gestisce automaticamente bilanciamento del carico e alta disponibilità.
  2. Storage: offre diversi meccanismi per conservare dati, con replica interna tripla per garantire tolleranza ai guasti e coerenza forte. I servizi di Storage principali sono:
    1. Blob Storage: archiviazione di dati non strutturati, come file, immagini, video. I blob possono raggiungere 1 TB di dimensione e risiedono in container che possono contenere un numero illimitato di blob.
    2. Table Storage: datastore NoSQL per dati strutturati, ma non relazionali. Ogni tabella converte le informazioni in entità dotate di chiavi di partizione e riga, garantendo scalabilità orizzontale e query veloci su chiavi. Non supporta join o relazioni complesse, ma è ideale per scenari web-scale.
    3. Queue Storage: archivio di messaggi per comunicazione asincrona tra componenti, utile a distribuire operazioni intensive a istanze di Worker Role senza bloccare il front-end.
  3. Content Delivery Network (CDN): rete di distribuzione geografica che memorizza in cache i blob in posizioni POP vicine agli utenti. Al primo accesso, il blob viene salvato nel nodo CDN più vicino; agli accessi successivi, viene servito dalla cache, riducendo latenza e migliorando le performance.
  4. Fabric Controller: cuore logico di Azure, che coordina l'allocazione delle risorse hardware ai servizi, monitora la salute dei nodi e provvede al failover automatico. È il componente chiave che abilita aggiornamenti gestiti, bilanciamento del carico e ridondanza.
  5. Connect: servizi di networking come VPN Gateway, Virtual Network e ExpressRoute, che consentono di collegare reti on-premise ad Azure o di creare reti isolate nel cloud.

Azure offre inoltre un ampio catalogo di servizi aggiuntivi quali Azure SQL Database, Cosmos DB, Azure Functions, Service Bus, Notification Hubs, Machine Learning, Mobile Apps, Azure AD, Traffic Manager, Application Insights, e molti altri, soddisfacendo le esigenze di utenti enterprise, sviluppatori e startup.

Development Services su Windows Azure

Gli Development Services includono strumenti, librerie e API che semplificano lo sviluppo di applicazioni su Azure. In particolare, vediamo i servizi di archiviazione per Table e Blob, nonché l'utilizzo di API REST per sviluppare servizi web.

Store Data in Tables (Table Service)

Il Table Service di Azure permette di memorizzare grandi volumi di dati strutturati in un datastore NoSQL. Le tabelle non prevedono uno schema rigido: ogni entità può avere proprietà diverse.

  • Storage Account: prerequisito per usare qualsiasi servizio di Storage su Azure.
  • Table: contenitore di entità. Può contenere miliardi di entità fino a terabyte di dati.
  • Entity: insieme di proprietà (fino a 252) e 3 proprietà di sistema (PartitionKey, RowKey, Timestamp), simile a una riga di tabella ma senza schema fisso.
    • PartitionKey: determina il posizionamento fisico sul cluster. Favorisce query veloci e operazioni atomiche su entità con la stessa chiave.
    • RowKey: identificatore univoco all'interno di una partizione.

Vantaggi:

  • Scalabilità automatica e trasparente al crescere dei dati.
  • Query efficienti basate sulle chiavi di partizione e riga.
  • Supporto per protocolli REST e OData, con possibilità di utilizzare LINQ tramite librerie .NET.
  • Adatto a dati denormalizzati, senza relazioni complesse.

Le operazioni principali comprendono:

  • Creazione di un account di storage e di una tabella.
  • Inserimento di entità singole o in batch (stesso PartitionKey).
  • Query per recuperare entità in base a filtri su PartitionKey e/o RowKey.
  • Recupero di una singola entità tramite chiavi.
  • Aggiornamento (replace) di entità esistenti.
  • Operazione InsertOrReplace per inserire o sovrascrivere.
  • Eliminazione di entità o intere tabelle.

Per ispezionare visivamente i dati si possono utilizzare strumenti quali Azure Storage Explorer o Azure Management Studio.

Store Data in Blobs (Blob Service)

Il Blob Service di Azure consente di archiviare grandi quantità di dati non strutturati, come file, immagini, video o backup, accessibili via HTTP/HTTPS.

  • Storage Account: punto di accesso a tutti i servizi di Storage.
  • Container: raggruppa un insieme di blob. Ogni container può contenere un numero illimitato di blob.
  • Blob: file binari di qualsiasi dimensione e tipo. Tipologie di blob:
    • Block Blob: ideale per file di grandi dimensioni (documenti, media, backup), con streaming ottimizzato.
    • Page Blob: utilizzato per dischi virtuali di VM; supporta modifiche frequenti di pagine di dati.
    • Directory Blob: emulazione di strutture gerarchiche usando convenzioni di naming.

Vantaggi:

  • Archiviazione scalabile per dati non strutturati fino a 1 TB per blob.
  • Replica interna tripla per garantire tolleranza ai guasti.
  • Accesso tramite REST API su HTTP/HTTPS.
  • Integrazione con CDN per migliorare le prestazioni di distribuzione.

Le operazioni di base comprendono:

  • Creazione di un container e caricamento di blob.
  • Elenco dei blob in modalità gerarchica o piatto.
  • Download di blob su file locali o come stream di memoria.
  • Eliminazione di blob.

Anche in questo caso, strumenti come Azure Storage Explorer consentono di esplorare e gestire i blob sia in locale (Storage Emulator) che in remoto.

REST Web Services API (Web API su Azure Cloud Services)

Su Azure Cloud Services è possibile ospitare API REST basate su ASP.NET Web API, che sfruttano l'infrastruttura di Azure per garantire scalabilità e affidabilità.

Principali fasi per creare un'API REST:

  1. Creazione del progetto: si utilizza Visual Studio per generare un servizio Azure Cloud con un Web Role in modalità Web API/MVC.
  2. Definizione di entità e struttura dati: si possono utilizzare database tradizionali o soluzioni leggere come JSONFile Database, in cui i dati risiedono in file JSON sul disk.
  3. Implementazione di un controller: si crea una classe ContactController o analoga, estendendo ApiController. Il controller espone metodi HTTP (GET, POST, PUT, DELETE) per operazioni CRUD.
  4. Configurazione delle rotte: si definisce un prefisso di route (es. api/Contact) e si possono aggiungere percorsi personalizzati per operazioni specifiche (es. GetByPhone).
  5. Serializzazione: di default, le risposte sono in formato JSON. È possibile supportare anche XML, specificando l'header Accept nella richiesta.
  6. Test delle API: tramite client REST (Postman, Advanced REST Client) o semplici chiamate HTTP via browser.
  7. Documentazione automatica: grazie a strumenti come Swagger o le funzionalità integrate di Web API, viene generata una pagina con descrizione dei metodi e parametri.

Questa architettura consente di creare applicazioni e servizi web scalabili e gestibili, sfruttando pienamente l'ecosistema Azure.

Non hai trovato quello che cercavi?

Esplora altri argomenti nella Algor library o crea direttamente i tuoi materiali con l’AI.