Che cos'è l'architettura cloud?
Il cloud computing è cresciuto rapidamente negli ultimi due decenni e continua ad espandersi a ritmi incredibili. Ciò che era iniziato come un servizio SaaS (Software-as-a-Service) insieme ad una soluzioneIaaS(Infrastructure-as-a-Service) di base si è evoluto in un vasto ecosistema di soluzioni cloud native per tutto, dai server ai cluster Kubernetes.
In questo articolo, vi offriremo un corso intensivo sull'architettura cloud (nota anche come architettura di cloud computing), includendo i componenti che costituiscono l'architettura cloud, i diversi modelli di cloud computing, i vantaggi del cloud e come prendere decisioni informate sulla migrazione nel cloud di un'app installata on-premise.
Che cos'è l'architettura cloud?
Dunque, che cos'è l'architettura cloud? E che cos'è l'architettura di cloud computing? L'architettura cloud e l'architettura di cloud computing sono sinonimi. Entrambi i termini fanno riferimento al modello che definisce la progettazione dei componenti dell'infrastruttura di un ambiente di cloud computing.
Esistono diversi modi per concettualizzare un'architettura cloud. Ad esempio, dal punto di vista di un provider di servizi cloud, un'architettura cloud è costituita da:
- Un livello hardware, che include server bare metal, capacità di rete e dispositivi di archiviazione
- Un livello di virtualizzazione, che include hypervisor e componenti SDN (Software-Defined Networking) per la virtualizzazione delle risorse fisiche
- Un livello di servizi, che include le risorse cloud che il provider distribuisce agli utenti
Nella mente degli utenti, come gli sviluppatori e gli ingegneri DevOps, i componenti dell'architettura cloud comprendono:
- Un front-end,come una console web, un'API (Application Programming Interface), l'interfaccia della riga di comando (CLI), un'app mobile o altro client che consente l'accesso al servizio cloud
- Un back-end, che fornisce le risorse di elaborazione, archiviazione e software che consentono il servizio
- Una rete, che fornisce la connettività tra le risorse cloud e servizi quali la risoluzione DNS
Il ruolo dell'architettura di un ambiente cloud è specificare il modo con cui tutti i componenti si integrano e comunicano tra loro. Nella figura 1, possiamo vedere l'architettura per un sistema di gestione di documenti basato sul cloud.
Il modo in cui questi componenti vengono progettati, implementati e presentati agli (o estratti dagli) utenti varia a seconda del modello di delivery cloud e del tipo di cloud computing. Ad esempio, un'app web in esecuzione su una macchina virtuale in un cloud privato ha un'architettura diversa da quella di un'applicazione distribuita e basata su Kubernetes.
Ciò che resta sempre uguale in tutte le implementazioni cloud è il fatto che il cloud è una piattaforma in grado di eliminare i problemi per gli utenti. Ad esempio, le soluzioni IaaS, come le istanze di Amazon Web Services (AWS) EC2, eliminano le complessità relative all'hardware. Con le app SaaS, come Google Docs, l'astrazione è ancora maggiore e tutte le operazioni (inclusa la manutenzione di sistemi operativi, middleware e applicazioni) sono nascoste agli utenti.
I principali componenti fisici dell'infrastruttura cloud
Al di sotto dei livelli di astrazione, il cloud computing presenta gli stessi tre principali livelli di un'infrastruttura IT on-premise.
- CPU di elaborazione, RAM e risorse GPU
- Risorse di rete come le interfacce di rete
- Risorse di archiviazione, come SSD e HDD
Con modelli quali IaaS, la fatturazione si basa spesso sul consumo di risorse in queste categorie.
Nota: Non confondente l'architettura cloud con l'architettura di rete. L'architettura cloud include l'architettura di rete, laddove rilevante. Ad esempio, i servizi SD-WAN, SDN e DNS possono essere inclusi tutti nell'architettura cloud di un ambiente aziendale.
Modelli di implementazione cloud di base: cloud pubblico contro cloud privato
I due modelli base di servizi cloud utilizzabili sono il cloud pubblico e il cloud privato (Tabella 1). Le piattaforme di cloud pubblico sono disponibili al pubblico in generale e l'architettura è gestita da un provider di servizi cloud. Le piattaforme di cloud privato sono dedicate a una singola organizzazione.
Il compromesso tra cloud pubblico e cloud privato è semplicità (cloud pubblico) rispetto a controllo (cloud privato). Gli utenti del cloud pubblico utilizzano i servizi e il provider di servizi si occupa della manutenzione e del provisioning dell'infrastruttura. Tuttavia, gli utenti del cloud pubblico devono accontentarsi delle funzionalità offerte dal provider di servizi. Inoltre, i dati del cloud pubblico risiedono nei data center del provider di servizi, il che ha delle implicazioni quanto a conformità e sovranità dei dati.
Al contrario, gli utenti del cloud privato hanno pieno controllo della loro infrastruttura e delle relative funzionalità. Lo svantaggio è che l'utente (oppure una terza parte che agisce per conto suo) deve gestire le complessità derivate dalla manutenzione, la configurazione e l'applicazione di patch all'infrastruttura.
Il cloud privato è più sicuro del cloud pubblico?
In generale, i cloud privati offrono due vantaggi in termini di sicurezza rispetto ai cloud pubblici.
- I cloud privati sono dedicati a una singola organizzazione.
- In genere, non sono accessibili direttamente tramite Internet pubblico.
Ecco perché si sente dire spesso che i cloud privati sono più sicuri dei cloud pubblici. In teoria, e laddove le aziende che gestiscono il cloud privato applicano le best practice di sicurezza in termini di configurazione e manutenzione, si tratta di un'affermazione ragionevole. A parità di condizioni, l'isolamento di un cloud privato è un vantaggio in termini di sicurezza.
Tuttavia, molte organizzazioni non dispongono in-house delle competenze di sicurezza e delle risorse per rafforzare, applicare patch, scansionare e gestire l'infrastruttura con lo stesso rigore offerto dai provider cloud hyperscale. Un cloud privato senza patch e non propriamente configurato può essere meno sicuro di un cloud pubblico, e le aziende dovrebbero tenerne conto quando si parla di valutazione dei rischi.
Modelli di implementazione cloud avanzati: cloud ibrido e cloud privato
Oltre al cloud pubblico e al cloud privato, esistono altri modelli di implementazione del cloud. Ad esempio, il National Institute of Standards and Technology definisce la community cloud come un'infrastruttura cloud "fornita ad uso esclusivo di una specifica comunità di consumatori provenienti da organizzazioni che condividono le stesse preoccupazioni". Tuttavia, i due più comuni modelli di implementazione di infrastrutture cloud avanzati sono:
Cloud ibrido: la combinazione di più modelli di implementazione cloud all'interno di un'organizzazione. Ad esempio, un team che replica un database in un cloud pubblico in un cloud privato si avvale di un modello di cloud ibrido.
Multicloud: l'uso di diversi provider di cloud pubblico all'interno di un'organizzazione. Ad esempio, un'azienda che esegue cluster in Azure Kubernetes Service (AKS) e in Amazon Elastic Kubernetes Service (EKS) utilizza un modello multicloud.
XaaS: i tipi di cloud computing
Oltre ai diversi modelli di implementazione, esiste un'ampia varietà di diversi modelli di servizi di cloud computing. Nel complesso, questi modelli sono noti come Xaas o "Anything-as-a- Service". Con il modello XaaS, un provider offre agli utenti servizi di cloud computing spesso con prezzi basati su abbonamento.
I tre più comuni modelli di servizi XaaS sono SaaS, PaaS (Platform-as-a-Service) e IaaS (Figura 2).
La differenza tra questi tre modelli di servizi di cloud computing risiede nella responsabilità del provider di servizi e dell'utente. La Tabella 2 analizza chi controlla i diversi aspetti dell'infrastruttura cloud con i diversi modelli.
Le piattaforme IaaS offrono agli utenti un controllo maggiore, ma sono anche più complesse in termini di gestione e manutenzione. Gli utenti sono responsabili di tutto, dalla selezione del sistema operativo all'applicazione delle patch. D'altra parte, le piattaforme SaaS, quali Google Docs e Slack, astraggono tutto tranne il livello applicativo.
Le piattaforme PaaS rappresentano una via di mezzo e danno all'utente il controllo sull'applicazione e il livello dati. Ad esempio, con una piattaforma PaaS, potreste aver accesso diretto a un database MySQL, ma non essere responsabili dell'applicazione delle patch alla versione MySQL sottostante o al sistema operativo.
Oltre IaaS, PaaS, and SaaS
IaaS, PaaS, and SaaS sono solo l'inizio quanto a modelli di servizi cloud. L'ultimo decennio ha visto l'esplosione di nuove offerte di servizi cloud che coprono un'ampia varietà di casi d'uso.
Ecco una suddivisione di altri modelli di servizi cloud che dovreste conoscere.
- Le piattaforme AaaS (Authentication-as-a-Service), come Okta e Duo, offrono servizi quali MFA (Multi-Factor Authentication) e SSO (Single Sign-On).
- Le piattaforme DaaS (Desktop-as-a-Service), come Amazon Workspaces e Azure Virtual Desktop, offrono desktop virtuali gestiti nel cloud
- Le soluzioni Caas (Containers-as-a-Service), come Google Cloud Run e Microsoft Azure Container Instances (ACI), semplificano il processo di implementazione e gestione di app containerizzate su una piattaforma cloud
- Le piattaforme Kubernetes gestite, come AKS e EKS, offrono servizi Kubernetes ospitati per il coordinamento automatizzato dei cluster Kubernetes nel cloud
- Computing senza server: consente un approprio "on-demand" alle risorse di elaborazione che permette agli utenti di eseguire funzioni senza dover gestire l'infrastruttura sottostante.
I vantaggi del cloud computing
Il cloud computing è vantaggioso sia per i consumatori che per le aziende. I vantaggi chiave del cloud computing rispetto alla tradizionale elaborazione on-premise sono:
- Infrastruttura gestita: l'installazione, la configurazione e la manutenzione di server, switch, rack, alimentazione e apparecchiatura per il raffreddamento sono dispendiose in termini di costo e tempo. I servizi cloud offrono i vantaggi aziendali di una soluzione, senza la complessità della gestione dell'infrastruttura.
- Risorse elastiche: scalare l'uso del cloud verso l'alto o verso il basso è facile in un cloud pubblico. Questa elasticità consente alle aziende di evitare i colli di bottiglia, in modo da potersi espandere rapidamente senza il rischio di investire eccessivamente in hardware.
- Osservabilità completa: spesso, le piattaforme cloud dispongono di strumenti e dashboard di osservabilità inclusi.
- Best practice integrate: i provider di servizi sono incentivati a raggiungere il giusto equilibrio tra performance, sicurezza e usabilità. E possono offrire ai loro clienti i vantaggi delle economie di scala. Di conseguenza, gli utenti possono sfruttare le best practice dell'infrastruttura usando semplicemente la piattaforma cloud giusta.
Migrazione su un'architettura cloud
Lanciare nuovi progetti nel cloud è una cosa, ma migrare i carichi di lavoro esistenti nel cloud è un'altra. Non esiste un approccio unico che funzioni in tutti i casi d'uso, ma esiste un set generico di principi e best practice che potete usare per fare la scelta giusta.
- Assicuratevi che la migrazione nel cloud abbia un senso: non tutti i carichi di lavoro devono andare sul cloud. Create un caso aziendale che soppesi il costo della migrazione sul cloud e quello della dismissione completa del carico di lavoro o del lasciarlo on-premise.
- Scegliete saggiamente il provider cloud: le funzioni e il costo sono importanti, ma sono solo una parte dell'equazione. Considerate i requisiti non funzionali, il supporto, gli SLA e la reputazione del fornitore, prima di prendere la decisione.
- Selezionare un servizio e un modello di implementazione che faccia al caso vostro: cloud pubblico o privato, piattaforma IaaS, PaaS o SaaS, ognuna di queste soluzioni presenta una serie di compromessi tra controllo, funzionalità e dipendenza da un unico fornitore. Valutare i pro e i contro prima di decidere per un modello. Ad esempio, sebbene possa sembrare logico migrare il vostro server Exchange on-premise su una macchina virtuale equiparabile, su una piattaforma IaaS, il servizio e-mail di Office 365 (SaaS) potrebbe essere una soluzione migliore.
- Tenete sotto controllo il budget: i costi per il cloud possono aumentare rapidamente. La maggior parte dei provider cloud più importanti mettono a vostra disposizione dei calcolatori che potete usare per ottenere stime ragionevoli ed evitare sorprese. Inoltre, assicuratevi di impostare, laddove possibile, degli avvisi di budget e di tenere sotto controllo i vostri rendiconti. Implementate un approccio sistematico per il monitoraggio dei costi e assicuratevi di rispettare il budget.
- Abbiate sempre un piano di emergenza: backup, piani di rollback e test pre-produzione possono aiutarvi a mitigare il rischio di perdita di dati e downtime durante la migrazione nel cloud. Assicuratevi di pensare e soppesare tutto attentamente prima di eseguire la migrazione di carichi di lavoro critici.
- Prendete in considerazione il modello Strangler Fig per le app monolitiche complesse: il sistema Lift-and-Shift non funziona per tutto. Se il vostro team deve migrare complesse app monolitiche sul cloud, considerate la possibilità di utilizzare l'applicazione Strangler Fig per passare gradualmente ai microservizi cloud-native nel corso del tempo.
Conclusione
Quello dell'architettura cloud è un argomento complesso e c'è ancora molto da imparare. Grazie a ciò che abbiamo trattato qui, tuttavia, dovreste avere una solida comprensione deiconcetti chiavee basilari del cloud computing.