Amazon EC2 introduzione sugli ambienti virtuali in cloud
da Massimo Della Rovere · pubblicato il 19 ottobre, 2014 · modificato il 13 luglio, 2016

Il servizio di Amazon EC2 mette a disposizione delle risorse di computazione eseguite in ambiente virtuale e gestite tutte in cloud computing. Il termine EC2 del nome deriva dal concetto di Elastic Compute Cloud. Infatti sarà possibile usufruire non solo di una potenza fissa stabilita a priori ma di una potenza elastica, che come si può intuire dal nome è un tipo di potenza computazionale che si adatta alle esigenze in realtime, quindi cresce quando ne abbiamo bisogno e decresce quando non la usiamo.

Amazon EC2 appartiene al livello IAAS (Infrastructure as a service) che fornisce delle risorse virtuali di base, esattamente come se fossero dei componenti hardware, quindi avremo il pieno controllo su tutte le operazioni che possiamo eseguire, possiamo installare sistemi operativi e tutto il software di cui abbiamo necessità. Il rovescio della medaglia è che tutte le operazioni di manutenzione, aggiornamento, sicurezza e controllo saranno a nostro carico e quindi avranno bisogno di una figura sistemistica.

Introduzione

La caratteristica elastica del servizio e l’integrazione diretta con tutti gli altri AWS rende questo ambiente uno dei più utilizzati in ambito cloud computing oltre al fatto che può far risparmiare molto denaro rispetto ad un’infrastruttura classica. Non a caso molte grandi aziende anche con nomi importanti hanno ridimensionato i datacenter aziendali eliminando molte risorse hardware a favore dei servizi di cloud computing.

Il servizio di Amazon EC2 è molto potente ma anche molto complesso. Quindi faremo in modo che venga presentato su diversi articoli, per fare alla fine dei tutorial più specifici e scoprire i dettagli più nascosti. Inizieremo con la spiegazione del concetto elastico, con i costi del servizio, spiegheremo le opzioni di acquisto, i tipi di istanze, la dashboard, le AMI, le autorizzazioni, EBS, il bilanciamento, l’auto scaling, etc, etc.

Insomma se volete conoscere bene questo servizio dovrete avere pazienza perché non vi basterà leggere solo questo articolo :) Per quanto riguarda le informazioni di tutti gli altri servizi che si possono integrare con Amazon EC2 è possibile trovarle nella nostra guida generale, se preferite il formato video, sul nostro canale youtube. Qualsiasi cosa che non trovate nelle nostre risorse potete sempre discuterla in community.

Elasticità

Ogni volta che mi trovo a spiegare questo concetto, cerco sempre di risolvere portando un’esempio pratico. Quindi prendiamo il caso di un’azienda che vende dei prodotti in internet e riceve ogni giorno un quantitativo di ordini. È certo che il numero di ordini che si riceveranno non saranno sempre gli stessi ogni giorno, ma ci saranno dei periodi dove le vendite posso calare e altri dove si possono triplicare, ad esempio pensiamo ai periodi natalizi o ai giorni che sono nel pieno di una campagna commerciale.

Amazon EC2 elasticità

Come potete vedere da questo grafico, per risolvere il problema in modo tradizionale, l’azienda dovrà comprare un server che gli consenta di superare le richieste generate nel periodo più alto dell’anno e quindi tenere delle risorse inutilizzate per tutto il resto del periodo, che ovviamente significa anche spreco economico. Purtroppo anche se questo dettaglio può essere accettato, in realtà non si risolve un’altro aspetto importante.

Amazon EC2 disservizio

Cosa succede se le vendite superano le previsioni e mi serve potenza aggiuntiva ? In una struttura classica si genererebbe un disservizio, infatti il tempo necessario per scalare le risorse attuali non sarebbe sufficientemente rapido per evitare di perdere le vendite. Vi posso assicurare che il numero di realtà che hanno raggiunto questo punto sono molte di più di quelle che possiamo immaginare, ci sono state aziende che in momenti di grande successo inaspettato si sono ritrovate con i server web e le relative applicazioni in errore di stato 500 per aver raggiunto il limite massimo di connessioni consentite.

Scalabilità

Partendo da una potenza computazionale stabilita è possibile diminuire o aumentare le risorse necessarie in due maniere: una chiamata scalabilità verticale e l’altra scalabilità orizzontale. Nel primo caso non facciamo altro che sostituire al volo un server virtuale di una certa potenza con uno ancora più potente, mentre nel secondo caso aggiungiamo un nuovo server o anche di più di uno e creiamo un’ambiente a traffico bilanciato.

Amazon EC2 scalabilita

Nella scalabilità verticale abbiamo come vantaggio una semplicità di azione, ma di contro abbiamo un piccolo fermo macchina per cambiare server e cosa più importante esiste un limite rappresentato dal server più potente che possiamo acquistare. Infatti se raggiungiamo questo livello non avremmo più un’ulteriore soluzione di scalabilità.

Nella scalabilità orizzontale abbiamo un limite di scalabilità teoricamente infinito, nel senso che possiamo aggiungere sempre un nuovo server quanto questo è necessario, è anche ovvio che la configurazione di questo ambiente è molto più complessa rispetto alla scalabilità verticale, ma è sicuramente quella più utilizzata in ambiente internet.

Io personalmente utilizzo tutte e due le maniere, dipende dall’ambiente che mi ritrovo a configurare. La scalabilità verticale va bene quando bisogna mettere a disposizione delle risorse computazionali ad un’azienda per processi ben definiti o quando si trovano delle applicazioni che non possono essere modificate per un’ambiente orizzontale. Per quanto riguarda le applicazioni internet cerco di usare sempre la scalabilità orizzontale, escluso le condizioni in cui il software ERP non sia idoneo a questa tipologia di attività.

Costi

I costi del servizio di Amazon EC2 sono basati sull’utilizzo orario delle istanze, le quali hanno caratteristiche diverse di potenza, memoria e banda. Sulla pagina ufficiale trovate sempre i valori aggiornati, infatti cambiano con molta frequenza e per fortuna sempre al ribasso. Il metodo chiamato “pay-to-use” è basato sul fatto di pagare solo le risorse che si utilizzano ed ottimizzare il più possibile i costi in base alle esigenze reali.

Istanza CPU RAM Ora Giorno Anno
t2.micro 1 1,0 GB 0,013 $ 0,312 $ 113,88 $
t2.medium 2 4,0 GB 0,052 $ 1,248 $ 455,52 $
m3.large 2 7.5 GB 0,140 $ 3,360 $ 1.226,40 $
m3.xlarge 4 15,0 GB 0,280 $ 6,720 $ 2.452,80 $

In questa tabella vi ho riportato solo alcune istanze, in realtà ne esistono molte altre che analizzeremo con calma nei prossimi capitoli. I prezzi possono cambiare di poco in base alla regione geografica di appartenenza, ad esempio un’istanza EC2 in Europa costa qualcosina di più rispetto ad una lanciata sulla regione USA.

Inoltre non fate molto caso alla colonna del costo annuale, in quanto stiamo parlando di istanze on-demand, quindi che si prendono a richiesta in base alle necessità. Se avete bisogno di server che funzionino tutto il giorno senza sosta bisogna analizzare le istanze riservate sui cui si risparmia anche il 40/50% rispetto alla tabella on-demand. In questo caso bisogna pagare una quota di anticipo e ottenere un costo orario più basso.

Istanza CPU RAM Anticipo Ora Anno Totale
t2.micro 1 1,0 GB 51 $ 0,003 $ 26,28 $ 77,88 $
t2.medium 2 4,0 GB 204 $ 0,012 $ 105,12 $ 309,12 $
m3.large 2 7.5 GB 443 $ 0,037 $ 324,12 $ 767,12 $
m3.xlarge 4 15,0 GB 886 $ 0,047 $ 411,72 $ 1.297,72 $

Come potete vedere con le riservate si risparmia anche il 50%, in realtà esistono diversi tipi di riservate, in base all’utilizzo costante delle risorse. Io ho usato in questa tabella la riservata chiamata Heavy, ma esistono anche la Light e la Medium.

Per informazioni più dettagliate sul rapporto che esiste tra il costo e la natura elastica del servizio vi consiglio di leggere un’articolo che avevo dedicato ai costi di Amazon EC2 e intitolato “Amazon EC2 come calcolare i costi su Elastic Compute Cloud”.

Opzioni di acquisto

Nel capitolo precedente abbiamo visto che i costi orari possono cambiare in base al tipo di acquisto selezionato. Le opzioni disponibili sono on-demand, reserved e spot. Se non viene specificato nulla verrà usata un’istanza on-demand che prevede solo il costo orario e nessun limite particolare sull’utilizzo. Voglio anche ricordare che il tipo di acquisto non incide sul tipo di istanza, queste rimangono tecnicamente sempre le stesse, cambia solo il metodo di fatturazione applicato.

Amazon EC2 acquisto

On-Demand: istanze che consentono di pagare per la capacità di elaborazione di ora in ora, senza impegni a lungo termine. Questo vi evita la complessità della pianificazione, l’acquisto e la manutenzione hardware e trasforma ciò che sono comunemente dei costi elevati in costi variabili molto più piccoli. (usare nel breve periodo).

Reserved: sono istanze che prevedono un’utilizzo costante delle risorse nel tempo, ci sono tre tipi di riservate: Heavy, Light e Medium. Ognuna di queste è basata su quanto tempo nell’anno utilizzate le risorse, se ad esempio avete un server web accesso 24 ore al giorno ovviamente dovete selezionare la Heavy che vi darà il massimo del risparmio.

Spot: in questa tipologie di istanze si paga un prezzo stabilito da un meccanismo simile alla borsa, basato sulla richiesta e l’offerta. Noi dobbiamo specificare il prezzo massimo che siamo disposti a pagare, la regione geografica e la zona di disponibilità. Se il prezzo del momento è più basso o uguale alla nostra richiesta avremo un’istanza in esecuzione.

Tipo di istanze

Il servizio offre una vasta gamma di istanze ottimizzate per diversi casi d’uso. Le istanze comprendono varie combinazioni di CPU, memoria, storage e capacità di collegamento in rete e offrono la flessibilità di scegliere il mix appropriato di risorse per meglio adattarsi alle nostre applicazioni. Ogni tipo di istanza include differenti dimensioni, consentendo di scalare le risorse in base alle esigenze del nostro carico di lavoro.

Amazon EC2 permette di scegliere tra istanze a prestazione fissa come le istanze (R3, M3 e C3) e istanze a prestazione burstable come ad esempio le (T2). Quest’ultime sono costruite intorno ad un modello di allocazione che riguarda le prestazioni della CPU, con la possibilità, in caso di necessità, di andare oltre a questo valore.

Amazon EC2 istanze

Istanze (T2): sono state progettate per carichi di lavoro che non utilizzano l’intera CPU o che comunque non ne fanno un uso continuativo, ma, di tanto in tanto hanno bisogno di utilizzarla. Il valore di riferimento per le prestazioni di CPU e la capacità di andare oltre a questo valore (burst) sono regolati dai crediti di CPU (CPU Credits).

Istanze (M3): questa famiglia è studiata per un’ottimizzazione che riguarda la memoria e le risorse di rete. Queste istanze sono consigliate per molte applicazioni, ad esempio per piccoli database o software come SAP e Sharepoint. Per le M3 vengono usati processori Intel Xeon E5-2670 e dischi interni SSD per ottenere ottime performance.

Istanze (C3): sono state progettate per ottenere performance che riguardano l’utilizzo di CPU, ideali per applicazioni che fanno largo uso di calcolo. Queste istanze sono adatte a processare programmi di ingegneria, analisi distribuite, video encoding, etc.  Sono usati processori Intel Xeon E5-2670 e dischi interni SSD ad alte performance.

Istanze (R3): sono ottimizzate per le applicazione che necessitano di parecchia memoria RAM e abbassano il costo standard per GB di memoria. Sono indicate per database ad alte performance, sistemi di cache e per sviluppatori in ambienti Enterprise. Vengono usati dei processori Intel Xeon E5-2670 e dischi interni SSD ad alte performance.

Istanze (G2): questa famiglia è studiata per ambienti grafici e per particolari software di streaming e video encoding. High-performance NVIDIA GPU con 1,536 CUDA cores e 4GB di memoria video. Supporto per low-latency frame capture e encoding. Sono usati processori Intel Xeon E5-2670 e dischi interni SSD ad alte performance.

Istanze (I2): questa famiglia è stata studiata per ottenere grandi quantità di storage, è possibile utilizzare queste istanze per database NoSQL come Cassandra o MongoDB, data warehousing, Hadoop e cluster file systems. Ovviamente le istanze sono equipaggiate da dischi SSD molto veloci che rendono la macchina performante.

Indice generale degli articoli correlati

Guida completa su AWS

Questo articolo appartiene ad una serie di pubblicazioni che costituiscono una guida completa dedicata agli Amazon Web Services. Molti servizi che trattiamo in questo blog vengono anche spiegati con dei video che trovate nel nostro canale youtube. Se volete seguire questo percorso didattico iscrivetevi alla community Cloud AWS.

1 Commento

  1. Questo è stato il primo appuntamento che abbiamo organizzato su Amazon EC2, in questo momento abbiamo anche pubblicato la seconda e la terza parte, sia come video che come articolo di sola lettura. Per i video andate sul nostro canale youtube, mentre per gli altri articoli vi lascio qui di seguito i link alle pagine:

    => Amazon EC2 un tutorial per imparare ad utilizzare il servizio
    => Amazon EC2 funzioni avanzate con Load Balancing e Auto Scaling

condividi