Il cloud computing è la tecnologia che ci permette di acquistare risorse hardware a consumo, esattamente allo stesso modo in cui acquistiamo acqua ed elettricità. In questo articolo parleremo di uno dei servizi cloud più diffusi ed apprezzati in ambito business per lo sviluppo e la distribuzione di applicazioni e siti web resilienti: Amazon EC2.
Amazon EC2 è un servizio di cloud computing che permette di eseguire server virtuali per far girare applicazioni e servizi web come in un tradizionale data center.
A differenza di quest’ultimo però, offre il vantaggio di poter effettuare il provisioning di server e risorse immediatamente in base alle proprie esigenze. Ed è proprio a quest’ultimo vantaggio che fa riferimento il nome EC2, acronimo imperfetto di Elastic Compute Cloud.
Scopriamo in quali occasioni si rende utile prima di concentrarci sul funzionamento della sua tecnologia.
Poniamo il caso che tua abbia un e-commerce di abbigliamento per la neve e che il tuo sito sia tradizionalmente installato su un data center locale. Arriva il periodo invernale e, dato che hai investito molto in pubblicità, moltissimi utenti fanno tanti ordini contemporaneamente.
Questa non è una situazione favorevole, nonostante possa sembrare il contrario.
Il tuo data center locale non è predisposto per sostenere picchi improvvisi di crescita, ed il risultato è che molti utenti del tuo e-commerce avranno una pessima esperienza sul sito. Alcuni di loro non riusciranno a completare neanche un acquisto ed alla fine avrai perso tanti soldi e reputazione rallentando la tua crescita.
Adesso invece poniamo il caso che il tuo e-commerce sia installato su AWS e che sfrutti la tecnologia di Amazon EC2. Arriva il periodo invernale, hai investito molto in pubblicità, e moltissimi utenti fanno tanti ordini contemporaneamente.
Questa è una situazione favorevole!
Con Amazon EC2 puoi gestire senza problemi i picchi improvvisi di crescita: la struttura informatica su cui poggia il tuo sito si adegua automaticamente al numero di utenti che lo visitano e che fanno acquisti. Tutti gli utenti avranno un’esperienza senza rallentamenti e riusciranno a completare normalmente gli acquisti. Alla fine, avrai guadagnato soldi e reputazione e sperimenterai una crescita continua.
Adesso continuiamo approfondendo la tecnologia che sta dietro ad Amazon EC2.
Nonostante la breve spiegazione e l’esempio diano una panoramica sul servizio, entrambe non sono sufficienti a descrivere in modo adeguato Amazon EC2. Questo servizio infatti introduce una serie di concetti che vanno approfonditi per comprenderne il funzionamento complessivo, in primo luogo istanze ed AMI.
Cosa sono le AMI?
Scopriamolo.
AMI sta per Amazon Machine Image, e si tratta di template che contengono il software necessario per dare vita ad un server virtuale. Nello specifico, ogni template contiene:
In altre parole, è un pacchetto software pronto a far girare applicazioni e siti web nell’ambiente cloud di AWS ed averne tutti i vantaggi in termini di scalabilità e resilienza. Ma le AMI non sono tutte uguali.
Trattandosi di configurazioni software pronte all’uso, ovvero di template preconfigurati, esistono diversi tipi di AMI e possiamo distinguerle utilizzando diversi criteri. Ad esempio, una AMI può essere:
Le AMI pubbliche vengono messe a disposizione da Amazon, sono le uniche ad essere taggate con l’alias amazon e prevedono il solo costo dell’infrastruttura AWS, calcolato sul tipo di istanza selezionata (parleremo delle istanze a breve).
Un esempio di AMI fornita da Amazon è la Red Hat Enterprise Linux.
Per quanto riguarda gli altri due tipi di AMI, si tratta di template messi a disposizione dalla community di AWS Partner. L’unica differenza tra le due sta nel fatto che, come puoi ben immaginare, le AMI a pagamento prevedono un costo stabilito dallo sviluppatore oltre al costo del servizio AWS, ed alcune prevedono contratti di servizio.
Ad ogni modo, è possibile modificare una AMI a seconda delle proprie specifiche necessità. In questo modo possiamo avere la nostra AMI personalizzata con la nostra configurazione software, salvarla e lanciarla in qualsiasi momento.
Ma il concetto di AMI va necessariamente collegato a quello di istanza per essere compreso appieno.
Cos’è un’istanza?
Definiamo il concetto di istanza su AWS.
Le istanze EC2 sono copie di una AMI eseguite su una determinata configurazione hardware. In altre parole, l’istanza è il vero e proprio ambiente virtuale fatto di CPU, memoria, storage e banda internet che esegue il nostro pacchetto software, ovvero la nostra AMI.
Non è strano pensare alle istanze ed alle AMI come entità complementari, perché si tratta molto banalmente dell’unione di hardware e software.
Al momento esistono ben 275 tipi di istanze diversi.
Ogni tipo di istanza ha delle specifiche hardware differenti (cpu, gpu, memoria, storage, scheda di rete) adatte a diversi casi d’uso. AWS organizza le istanze all’interno di cinque grandi macro categorie descrittive del tipo di uso a cui sono destinate, ovvero:
Ognuna di queste macro categorie contiene all’interno diverse famiglie di istanze. Ad esempio, nella categoria “uso generico” troviamo, tra le altre, la famiglia di istanze A1, che al suo interno contiene diversi tipi di istanza con diverse caratteristiche hardware. Per fare chiarezza, vediamo nel dettaglio le istanze della famiglia A1:
Per conoscere tutti i dettagli hardware di ogni singola istanza puoi leggere la documentazione ufficiale cliccando qui. Per il resto, bisogna ora approfondire un’importante distinzione che ci permette di scontornare meglio il concetto stesso di istanza da un punto di vista diverso, ovvero le opzioni di pagamento.
Amazon EC2 offre diversi modelli di pagamento per le istanze, e tra queste dobbiamo necessariamente menzionarne almeno due per continuare il nostro viaggio nella comprensione di questo servizio:
La distinzione tra queste due opzioni di pagamento ci rende le idee più chiare sul funzionamento di un sistema di cloud pubblico in generale. Vediamo perché.
Le istanze on-demand sono istanze che paghi ad un prezzo fisso al secondo e che puoi:
in qualsiasi momento, pagando solo per l’effettivo tempo di utilizzo.
Se te lo stessi chiedendo, sì: in questo caso arrestare è diverso da terminare, perché su Amazon EC2 non puoi riavviare un’istanza terminata.
Durante la fase di arresto puoi apportare delle modifiche all’istanza e l’istanza rimane sempre a tua disposizione, a differenza delle istanze spot.
Le istanze spot sono istanze che possono essere avviate solo quando c’è disponibilità di istanze inutilizzate e quando il prezzo massimo che sei disposto a pagare è superiore al “prezzo Spot”. Possono essere terminate automaticamente da AWS quando questa disponibilità viene a mancare o quando il prezzo Spot supera il prezzo massimo che hai stabilito (di default, il limite coincide con il prezzo delle istanze on-demand).
Rispetto alle istanze on-demand hanno un costo inferiore e sono indicate per operazioni che possono essere interrotte senza gravi perdite, ad esempio analisi di dati o elaborazioni in background.
Sebbene si tratti di istanze che potremmo definire temporanee, anche le istanze spot possono essere ibernate o arrestate, ma solo a patto che utilizzino EBS come volume di root. E qui possiamo infine introdurre la questione dello storage delle istanze.
Dal punto di vista dello storage, esistono due tipi diversi di istanze:
La differenza principale tra questi due tipi di istanze sta nel fatto che non è possibile arrestare o ibernare le istanze con instance store volume, queste istanze possono esclusivamente essere avviate e terminate. Ma non solo, perché la questione dello storage incide anche sulla persistenza dei dati: per impostazione predefinita, Amazon EC2 cancella il volume root delle istanze nel momento in cui vengono arrestate o terminate, ma questa impostazione può essere modificata nelle istanze che utilizzano EBS come volume root.
Quest’ultima distinzione ci permette anche di avere una visione più ampia della filosofia modulare del cloud computing. È proprio questa sua caratteristica infatti, quella di integrare componenti indipendenti nella forma di servizi diversi, che rende il cloud scalabile, performante e resiliente.
L’integrazione tra EC2 ed EBS che abbiamo appena visto è esemplare in questo senso: utilizzare EBS come storage di un’istanza EC2 vuol dire avere un volume root indipendente dalla memoria “fisica” dell’istanza stessa.
Con il cloud possiamo dunque gestire tutti i componenti della nostra infrastruttura senza temere l’effetto castello di carte, perché a differenza di un data center on-premise, nel cloud ogni componente è un pezzo del puzzle che disegna la nostra infrastruttura.
Costruiamo insieme il tuo successo
Ascolta l'articolo |