Traduzione dell'articolo preparata appositamente per gli studenti del corso .
È interessante svilupparsi in questa direzione? Guarda la registrazione del masterclass professionale , tenuto da Egor Zuyev — TeamLead presso InBit e autore del programma educativo in OTUS.

Google Cloud Platform (GCP) offre una vasta gamma di servizi, in particolare uno stack di calcolo che include Google Compute Engine (GCE), Google Kubernetes Engine (precedentemente Container Engine) (GKE), Google App Engine (GAE) e Google Cloud Functions (GCF). Tutti questi servizi hanno nomi accattivanti, ma le loro funzionalità e ciò che li rende unici possono non essere immediatamente evidenti. Questo articolo è destinato a coloro che si avvicinano per la prima volta ai concetti di cloud, in particolare ai servizi cloud e al GCP.

1. Stack di calcolo
Lo stack di calcolo può essere visto come un'astrazione multilivello rispetto a ciò che può offrire un sistema informatico. Questo stack si innalza (moves up) dall'«hardware nudo» (bare metal), che si riferisce ai componenti hardware concreti di un computer, fino alle funzioni (functions), che rappresentano la più piccola unità di calcolo. È importante notare riguardo allo stack che i servizi si aggregano mentre si sale lungo lo stack, ad esempio, la sezione «applicazioni» (apps), mostrata nell'immagine 1 qui sotto, dovrebbe contenere tutti i componenti di base dei container (container), delle macchine virtuali (virtual machines) e dell'hardware. Allo stesso modo, il componente delle macchine virtuali deve includere l'hardware all'interno per funzionare.

Figura 1: Stack di calcolo | Immagine tratta da
Questo modello, mostrato nella figura 1, è la base per descrivere le offerte dai fornitori di cloud. Pertanto, alcuni fornitori possono fornire solo, ad esempio, container e servizi con qualità inferiore nello stack, mentre altri offrono tutto ciò che è mostrato nella figura 1.
— Se sei familiare con i servizi cloud, vai al capitolo 3, per conoscere l'equivalente di GCP
— Se hai bisogno solo di un riepilogo sui servizi cloud, vai al capitolo 2.4
2. Servizi cloud
Il mondo del cloud computing è molto vario. I fornitori di servizi cloud offrono una vasta gamma di servizi adattati a diverse esigenze dei clienti. Potresti aver sentito termini come IaaS, PaaS, SaaS, FaaS, KaaS, ecc., con tutte le lettere dell'alfabeto seguite da «aaS». Nonostante questa strana convenzione di denominazione, formano un insieme di servizi forniti dai provider cloud. Osservo che ci sono 3 principali offerte «come servizio» (as a Service) che i fornitori di cloud offrono quasi sempre.
Questi sono IaaS, PaaS e SaaS, che significano rispettivamente infrastruttura come servizio (Infrastructure as a Service), piattaforma come servizio (Platform as a Service) e software come servizio (Software as a Service). È importante visualizzare i servizi cloud come livelli di servizi offerti. Ciò significa che quando sali o scendi di livello, tu, come cliente, attraversi diverse opzioni di servizio che vengono aggiunte o rimosse dall'offerta principale. È meglio considerare questo come una piramide, come mostrato nella figura 2.

Figura 2: Piramide «aaS» | Immagine ottenuta da
2.1 Infrastruttura come servizio (IaaS)
Questo è il livello più basso che un fornitore di servizi cloud può offrire, e include un fornitore di cloud computing che fornisce infrastruttura «nuda», comprensiva di software intermedio, cavi di rete, processori, schede grafiche, memoria RAM, storage esterno, server e immagini di sistemi operativi di base come Debian Linux, CentOS, Windows, ecc.
Se ordini un'offerta IaaS da un fornitore di servizi cloud, ecco cosa devi aspettarti di ricevere. A te, come cliente, spetta assemblare questi componenti per gestire la tua attività. Il grado di ciò con cui dovrai lavorare può variare da fornitore a fornitore, ma in generale si ottiene semplicemente l'hardware e il sistema operativo, mentre il resto è a tuo carico. Esempi di IaaS includono AWS Elastic Compute, Microsoft Azure e GCE.
Alcune persone potrebbero non gradire il fatto che devono installare le immagini del sistema operativo e occuparsi della rete, del bilanciamento del carico o scegliere il tipo di processore adatto per il loro carico di lavoro. È qui che ci spostiamo verso l'alto nella piramide verso il PaaS.
2.2 Piattaforma come servizio (PaaS)
Il PaaS include solo il fornitore di servizi cloud che offre una piattaforma specifica su cui gli utenti possono creare applicazioni. È un'astrazione sopra l'IaaS, il che significa che il fornitore cloud si occupa di tutti i dettagli riguardanti i tipi di CPU, memoria, RAM, archiviazione, reti, ecc. Come mostrato nella figura 2, tu, come cliente, hai un controllo limitato sulla piattaforma reale, poiché il fornitore cloud gestisce tutti i dettagli infrastrutturali per te. Richiedi la piattaforma scelta e costruisci il tuo progetto su di essa. Esempi di PaaS sono Heroku.
Per alcuni, questo potrebbe essere un livello troppo alto, poiché non necessariamente desiderano costruire un progetto sulla piattaforma specificata, ma piuttosto necessitano di un insieme di servizi direttamente dal fornitore di servizi cloud. Qui entra in gioco il SaaS.
2.3 Software come servizio (SaaS)
Il SaaS rappresenta i servizi più comuni forniti dai fornitori di servizi cloud. Sono destinati agli utenti finali e sono principalmente disponibili tramite siti web, come Gmail, Google Docs, Dropbox, ecc. Per quanto riguarda Google Cloud, ci sono diverse offerte al di fuori del loro stack computazionale che sono SaaS. Queste includono Data Studio, BigQuery, ecc.
2.4 Riepilogo sui servizi cloud
Componenti
IaaS
PaaS
SaaS
Cosa ottieni
Ottieni l'infrastruttura e paghi di conseguenza. La libertà di utilizzare o installare qualsiasi software, sistema operativo o la loro composizione.
Qui ottieni ciò che hai richiesto. Software, hardware, sistema operativo, ambiente web. Ricevi una piattaforma pronta all'uso e paghi di conseguenza.
Qui non devi preoccuparti di nulla. Ti viene fornito un pacchetto preconfigurato secondo le tue esigenze, e tu devi solo pagare di conseguenza.
Valore
Livello base di calcolo
La cima dell'IaaS
È essenzialmente un pacchetto completo di servizi
Complessi tecnici
Sono necessarie conoscenze tecniche
Ti viene data una configurazione di base, ma sono ancora necessarie conoscenze specifiche.
Non è necessario preoccuparsi dei dettagli tecnici. Il fornitore SaaS fornisce tutto.
Con cosa lavora
Macchine virtuali, archiviazione, server, rete, bilanciatori di carico, ecc.
Ambient di esecuzione (come il runtime java), database (come mySQL, Oracle), server web (come tomcat ecc.)
Applicazioni come servizi di posta elettronica (Gmail, Yahoo mail, ecc.), siti di interazione sociale (Facebook, ecc.)
Grafico di popolarità
Popolare tra sviluppatori altamente qualificati e ricercatori che necessitano di personalizzazione in base alle loro esigenze o aree di ricerca
Maggiormente apprezzato dagli sviluppatori, poiché possono concentrarsi sullo sviluppo delle loro applicazioni o script. Non devono preoccuparsi del carico di traffico o della gestione del server, ecc.
Particolarmente popolare tra i consumatori ordinari o le aziende che utilizzano software come e-mail, file sharing, social network, poiché non devono preoccuparsi dei dettagli tecnici
Figura 3: Riepilogo delle principali offerte cloud | Immagine fornita
3. Pacchetto di calcolo Google Cloud Platform
Esaminando le tipiche offerte dei fornitori di cloud nella sezione 2, possiamo confrontarle con le offerte di Google Cloud.
3.1 Google Compute Engine (GCE) — IaaS

Figura 4: Icona di Google Compute Engine (GCE)
GCE è un'offerta IaaS di Google. Con GCE puoi facilmente creare macchine virtuali, distribuire risorse di CPU e memoria, scegliere il tipo di archiviazione, ad esempio SSD o HDD, e la quantità di memoria. È quasi come costruire il proprio computer/stazione di lavoro e gestire tutti i dettagli del suo funzionamento.
In GCE puoi scegliere da istanze micro con processori da 0,3 core e 1 GB di RAM fino a mostri da 96 core con oltre 300 GB di RAM. Puoi anche creare macchine virtuali di dimensioni personalizzate per i tuoi carichi di lavoro. Per chi fosse interessato, queste sono macchine virtuali che puoi assemblare.
3.2. Google Kubernetes Engine (GKE) — (CaaS / KaaS)

Figura 5: Icona di Google Kubernetes Engine (GKE)
GKE è un'offerta di elaborazione unica da GCP, che rappresenta un'astrazione su Compute Engine. In termini più generali, GKE può essere classificato come "Container as a Service" (CaaS), talvolta denominato "Kubernetes as a Service" (KaaS), che consente ai clienti di avviare facilmente i propri container Docker in un ambiente Kubernetes completamente gestito. Per chi non familiarizza con i container, questi aiutano a formare in modo modulare servizi/applicazioni, quindi diversi container possono contenere servizi diversi, ad esempio, un container può ospitare l'interfaccia della tua web app, mentre un altro può contenere la sua parte server. Kubernetes si occupa dell'automazione, coordinazione, gestione e distribuzione dei tuoi container. Maggiori informazioni qui.
3.3 Google App Engine (GAE) — (PaaS)

Figura 6: Icona di Google App Engine (GAE)
Come menzionato nella Sezione 2.2, PaaS è al di sopra di IaaS, e nel caso di GCP può anche essere visto come un'offerta sopra GKE. GAE è un PaaS specializzato di Google, e come loro stessi si descrivono meglio — "porta il tuo codice e noi ci occupiamo del resto".
Questo garantisce che i clienti che utilizzano GAE non debbano occuparsi dell'hardware sottostante o dell'interfaccia software, e possano già avere una piattaforma preconfigurata pronta all'uso; tutto ciò che devono fare è fornire il codice necessario per farlo funzionare.
GAE gestisce automaticamente la scalabilità per soddisfare il carico e la domanda da parte degli utenti, il che significa che se il tuo sito di vendita di fiori raggiunge all'improvviso un picco, perché si avvicina il giorno di San Valentino, GAE si occuperà della scalabilità dell'infrastruttura sottostante per soddisfare la domanda e garantire che il tuo sito web non vada in crash a causa dell'aumento della richiesta. Questo significa che paghi esattamente per le risorse richieste dalla tua applicazione in quel momento.
GAE utilizza Kubernetes o la sua versione integrata per gestire tutto questo, così non dovrai preoccupartene. GAE è ideale per le aziende che non sono interessate all'infrastruttura sottostante e si concentrano solo sul garantire la migliore accessibilità per la loro applicazione.
A mio parere, GAE è il miglior punto di partenza se sei uno sviluppatore con un'ottima idea, ma non vuoi occuparti della routine di configurazione dei server, del bilanciamento del carico e di tutto il pesante lavoro di devops/SRE. Col tempo potresti provare GKE e GCE, ma questa è solo la mia opinione.
Disclaimer: AppEngine è utilizzato per applicazioni web, non per applicazioni mobili.
Per conoscenza:
3.4 Google Cloud Functions - (FaaS)

Figura 7: Icona di Google Cloud Functions (GCF)
Spero che tu abbia notato la tendenza analizzando le proposte precedenti. Più sali nella scala delle soluzioni di calcolo GCP, meno devi preoccuparti delle tecnologie sottostanti. Questa piramide si conclude con l'unità di calcolo più piccola possibile, la funzione, come mostrato nella sezione 1.
GCF è un'offerta relativamente nuova di GCP che è ancora in fase beta (al momento della scrittura di questo articolo). Le funzioni cloud consentono che determinate funzioni scritte dallo sviluppatore vengano eseguite in base a un evento.
Sono gestite da eventi e sono alla base della parola di moda "serverless", cioè non conoscono i server. Le funzioni cloud sono molto semplici e hanno molte applicazioni diverse che richiedono un pensiero basato sugli eventi. Ad esempio, ogni volta che un nuovo utente si registra, può essere eseguita una funzione cloud per avvisare gli sviluppatori.
In una fabbrica, quando un certo sensore raggiunge un determinato valore, può avviare una funzione cloud che esegue un'elaborazione delle informazioni o avvisa un certo personale di servizio, e così via.
Conclusione
In questo articolo abbiamo parlato delle varie offerte cloud, come IaaS, PaaS e così via, e di come lo stack di calcolo Google realizzi questi vari livelli. Abbiamo visto che i livelli di astrazione passano da una categoria di servizi all'altra, come da IaaS a PaaS, richiedendo meno conoscenze sulle tecnologie sottostanti.
Per le aziende, questo offre una flessibilità critica che non solo risponde ai suoi obiettivi operativi, ma soddisfa anche altre aree chiave, come la sicurezza e il costo. In sintesi:
Compute Engine — ti consente di creare la tua macchina virtuale dedicando risorse hardware specifiche, come RAM, CPU e memoria. È anche molto pratico e low-level.
Kubernetes Engine — è un passo avanti rispetto a Compute Engine, che ti consente di utilizzare Kubernetes e i container per gestire la tua applicazione, permettendo di scalare se necessario.
App Engine — è un passo avanti rispetto a Kubernetes Engine, consentendoti di concentrarti solo sul tuo codice, mentre Google si occupa di tutti i requisiti della piattaforma sottostante.
Cloud Functions — è la cima della piramide computazionale, permettendoti di scrivere una semplice funzione che, quando eseguita, utilizza tutta l'infrastruttura sottostante per il calcolo e restituisce il risultato.
Grazie per l'attenzione!
Twitter:
Fonte: habr.com
