Sicuramente conosciamo tutti quanti Amazon come uno dei più grandi negozi di commercio elettronico del mondo. Iniziò la sua attività di vendita libri online nel lontano 1995 per finire ad oggi che vende praticamente di tutto. Amazon per raggiungere questo obiettivo a livello mondiale non ha dovuto affrontare solo piani di sviluppo che riguardano marketing, logistica e trasporti, ma ha dovuto investire pesantemente sul sistema informativo e la struttura hardware necessaria a gestire l’enorme volume di traffico che veniva generato ogni giorno a livello mondiale. Proprio per questo motivo in pochi anni si è ritrovata un’infrastruttura di networking invidiabile e una serie di servizi software chiamati “web services” concepiti e basati su affidabilità, scalabilità e velocità.
L’idea geniale arriva nel 2006, quando Amazon capisce che la sua infrastruttura e i suoi servizi web, che attualmente vengono utilizzati solo per se stessa, possono essere condivisi con le altre aziende che hanno bisogno di una infrastruttura affidabile per i loro affari. In poche parole incomincia a vendere una tecnologia di cloud computing con molti anni di anticipo rispetto agli altri. Anche la modalità di pagamento è particolare, infatti si paga solo ciò che si utilizza, non ci sono contratti forfettari o abbonamenti fissi come siamo abituati a vedere nelle offerte dei piani di hosting tradizionali, anche qui come avremmo modo di vedere, i vantaggi sono tantissimi e sui grandi numeri si possono risparmiare cifre notevoli rispetto ad una struttura proprietaria.
Se vogliamo capire bene i servizi messi a disposizione per l’ambiente IT, dobbiamo assimilare bene due concetti, uno quello legato agli Amazon Web Services detti AWS e l’altro quello della struttura di networking mondiale. A seguire vi riporto una piccola descrizione per chiarire alcuni concetti, mentre dopo verranno elencati tutti i servizi messi a disposizione, suddivisi per gruppo, con eventuale collegamento alla guida specifica. Se dopo la lettura avete qualche dubbio o volete scambiare qualche idea con noi iscrivetevi su google+ alla nostra Community AWS Italy+.
Amazon Web Services
I servizi messi a disposizione ad oggi sono veramente tanti, anche perchè la sezione AWS di Amazon ogni mese rilascia qualche novità o qualche servizio nuovo. In ogni caso per facilitarne la selezione gli AWS normalmente vengono suddivisi in cinque differenti gruppi:
Compute & Networking: In questo gruppo troviamo tutti i servizi per le risorse di computazione, quindi server virtuali in cloud (EC2), gestione di un DNS (Route53), Risorse private e server virtuali non pubblici (VPC Virtual Private), connessioni dedicate con AWS (Direct Connect), elaborazione di grandi dati tramite il modello google di MapReduce (Elastic MapReduce).
Storage e distribuzione contenuti: Qui troviamo tutti i servizi che riguardano la memorizzazione di dati online anche di grandi dimensioni. Servizio di storage online (S3), storage online studiato per i backup (Glacier), collegamento server aziendali con storage cloud (Storage Gateway), distribuzione per area geografica di contenuti statici e multimediali (CloudFront).
Database: Tramite questi servizi possiamo gestire dei database senza dover installare i software specifici sui nostri server virtuali e usufruire della scalabilità automatica di amazon. Possiamo scegliere un database NoSQL fortemente scalabile (DynamoDB), un database relazione come ad esempio MySQL e Microsoft SQL Server (RDS), sistema di caching RAM (ElastiCache).
Sviluppo e Management: In questo gruppo troviamo alcuni servizi che ci permettono di eseguire applicazioni, controllare alcuni aspetti dei servizi acquistati e gestire le autorizzazioni. Possiamo creare delle template di configurazione per la creazione di un’ambiente e le risorse necessarie da avviare automaticamente (CloudFormation), controllare gli indicatori di performance dei nostri servizi e attivare delle azioni automatiche (CloudWatch), eseguire delle applicazioni scritte in vari linguaggi senza doverci preoccupare della configurazione di un server (Elastic Beanstalk).
Application Services: Qui troviamo quei servizi che possiamo utilizzare chiamando direttamente delle applicazioni specifiche che girano nel cloud di amazon senza dover acquistare server virtuali o storage online. Servizio di spedizione posta elettronica anche per grandi volumi (SES), Servizio di notifiche tra diversi supporti e diversi servizi (SNS), motore di ricerca personalizzato per i propri dati (CloudSearch), distribuzione del carico di lavoro tramite code messaggi (SQS).
Struttura di networking mondiale
Amazon mette a disposizione un numero preciso di data center sparsi per il mondo, vengono usati i termini di zona geografica e zona di disponibilità. La prima identifica la zona fisica di dove si trovano i data center delle risorse che vogliamo acquistare, mentre la zona di disponibilità sono i data center ridondanti presenti nella stessa zona geografica. Ad esempio nella zona geografica Europea dell’Irlanda abbiamo 3 zone di disponibilità diverse, mentre nella zona USA Virginia abbiamo la possibilità di scegliere 4 zone di disponibilità. Per molti servizi basterà scegliere la zona geografica e le risorse saranno automaticamente replicate per le varie zone di disponibilità. Ad esempio i servizi di storage online come Amazon S3 e Amazon Glacier.
La scelta della zona geografica su Amazon AWS è molto importante, in quanto influenza la latenza e quindi i tempi di risposta, normalmente è bene scegliere la zona geografica più vicina, i costi per lo stesso servizio sono diversi tra Brasile, USA, Europa, etc. Ci sono alcuni servizi che inizialmente non sono disponibili per tutte le aree geografiche. Per quanto riguarda invece la distribuzione dei contenuti a livello mondiale, ad esempio le risorse statiche o alcuni file multimediali come video in streaming, vengono usate anche le Edge Locations, che sono delle infrastrutture che vengono usate per le funzione specifiche di delivery, in maniera tale da avvicinarsi alle richieste e migliorare i tempi di risposta. Se volete vedere la mappa andate su Amazon Global Infrastructure.
Compute & Networking
Amazon EC2 (Elastic Compute Cloud)
Un servizio web che fornisce capacità di elaborazione dati in the cloud. Amazon EC2 fornisce tramite la virtualizzazione la possibilità di scegliere tra moltissimi sistemi operativi, servizi e banche dati già pronte per la propria applicazione. Il servizio EC2 può essere gestito tramite una console web o tramite la gestione delle API messe a disposizione da Amazon per essere usate in ambienti di programmazione. Amazon EC2 mette a disposizione anche una serie di sotto servizi per la gestione avanzata della nostra istanza virtuale, come ad esempio il bilanciamento del traffico, il disaster recovery, le copie di backup, la funzione di Auto Scaling ed altro ancora.
Amazon Route 53
Un servizio DNS veloce ed affidabile per poter gestire la rete aziendale o le risorse presenti in Amazon Web Services come istanze EC2 o bucket S3. Con questo servizio potete gestire un numero illimitato di domini ed usare anche delle feature avanzate di load balancing, utilizzando la tecnica del Weighted Resource Record Sets. Ovviamente potete usare questo servizio anche per una vostra rete privata o per la gestione dei vostri domini che avete presso altri register.
Amazon VPC (Virtual Private Cloud)
Un collegamento sicuro tra l’infrastruttura interna IT esistente di un’impresa e la nube AWS. Amazon VPC permette alle aziende di connettere la propria infrastruttura esistente con una serie di risorse Amazon Web Services attraverso la VPN (virtual private network), così da poter espandere molte funzioni tramite la tecnologia cloud. Ad esempio potremmo demandare alcune funzioni di elaborazione molto pesanti a dei server virtuali avviati nel cloud di Amazon, che comunque saranno raggiungibili solo dalla nostra rete interna e accessibili solamente dagli account della azienda.
Amazon Direct Connect
Sappiamo benissimo che uno dei punti deboli per il cloud computing in azienda, specialmente in Italia, è il collegamento e la banda internet, infatti i servizi di Amazon vengono molto apprezzati quando si tratta di risorse che devo essere pubbliche e vengono visti problematici quando bisogna implementare un’infrastruttura privata con collegamenti VPN in cloud. Per le aziende che necessitano di un collegamento sicuro è possibile tramite questo servizio creare una linea diretta tra l’azienda e il data center di Amazon più vicino, senza passare per la linea internet.
Amazon MapReduce
MapReduce è un framework software introdotto da Google per la computazione distribuita su grandi quantità di dati in cluster di computer. Il nodo Map prende la richiesta del problema e l’algoritmo di risoluzione, lo suddivide in tanti sotto-problemi differenti e li distribuisce a nodi diversi. Il nodo Reduce prende le risposte di tutti i sotto-problemi e prepara la risposta definitiva. In Amazon è possibile sperimentare questa tecnica prendendo a disposizione tutti i nodi di cui abbiamo bisogno e testare l’efficacia e la velocità di un nostro algoritmo di risoluzione.
Storage e distribuzione contenuti
Amazon CloudFront
CloudFront è un servizio web per il “content distribution” cioè la distribuzione di contenuto statico o in streaming ad alta velocità e con bassa latenza. La configurazione è molto semplice dato che è collegato automaticamente al servizio S3 basta associare la risorsa che abbiamo memorizzato in un nostro buckets S3 al servizio CloudFront e automaticamente la risorsa sarà replicata nei edge point sparsi nel mondo, i quali verranno utilizzati per far fronte alle richieste che si troveranno geograficamente più vicine, quindi abbassando drasticamente la latenza generale.
Amazon S3 (Simple Storage Service)
Con questo servizio di “storage online” è possibile archiviare e recuperare grandi quantità di dati, in qualsiasi momento e da qualsiasi punto del web. Fornisce agli utilizzatori la possibilità di accedere alla stessa infrastruttura di storage dei dati, altamente scalabile, affidabile e veloce che Amazon utilizza per mantenere in funzione la propria rete internazionale di siti web. Questo servizio può essere utilizzato anche come forma sicura di backup, sia per gli altri servizi AWS come ad esempio EC2, ma anche come backup per server aziendali o postazioni personali.
Amazon Glacier (Backup a basso costo)
A differenza del servizio già esistente di Amazon S3 rappresenta una soluzione low-cost adatta alla memorizzazione di informazioni che riguardano le funzioni di backup. Sicuramente è un servizio ottimo per gli ambienti di rete aziendale, ma può essere usato anche per uso personale al posto di altri servizi come ad esempio Dropbox, l’importante è capirne bene le differenze e controllare la tabella dei costi. Questo servizio è stato studiato proprio per la memorizzazione di informazioni che normalmente non devono essere riscaricate, se non per problemi di recupero informazioni. Se usato in questa maniera, i prezzi sono molto vantaggiosi e il costo è molto più basso rispetto ad S3, il quale è ottimizzato anche per la pubblicazione dei contenuti e non solo per la loro memorizzazione.
Amazon Storage Gateway
Questo servizio è sicuramente dedicato alle grandi aziende, permette di installare nella propria rete locale un software che si occupa della copia fisica dei dischi collegati ai server locali nell’ambiente storage di S3. Se si dovesse rompere qualche disco locale, possiamo ripristinarlo velocemente da Amazon S3 ed riavviare il sistema al suo funzionamento normale. Se invece dovessimo avere un guasto generale, possiamo avviare delle istanze EC2 e ripristinare gli snapshot su volumi EBS.
Database
Amazon DynamoDB
Questo servizio permette la gestione completa di un database NoSQL in un’ambiente di cloud computing. Un binomio eccezionale per la scalabilità e l’eliminazione di alcuni limiti presenti nei database relazionali. Questo servizio nasce dopo 15 anni di esperienza con SimpleDB e Dynamo usati nel sito di Amazon.com, i quali avevano comunque dei limiti sulla dimensione del dataset. Il servizio di DynamoDB non avrà limiti di dimensione e replicherà automaticamente i dati su tre data center differenti. Il servizio ci svincola anche dalle problematiche di backup e recovery.
Amazon RDS (Relational Database Service)
Un servizio web che offre a costi accessibili la gestione di un database MySQL direttamente nel cloud da integrare con gli altri servizi AWS, oltre alla semplificazione delle attività di backup, ridimensionamento e patching. Con questa tecnica non saremo costretti ad installare un software di database server sulle nostre istanze virtuali, non dovremmo preoccuparci dell’allineamento automatico dei dati, e tanto meno della scalabilità in base al numero delle richieste effettuate. Tutti questi aspetti verranno gestiti automaticamente dal servizio di Amazon RDS.
Amazon ElastiCache
Con questo servizio possiamo gestire in maniera molto semplice una funzionalità complessa come un cluster di caching RAM. Questo servizio è completamente compatibile con il cluster memcached. Infatti su un cluster memcached bisogna affrontare dei passaggi sistemistici abbastanza complessi, oltre al fatto che viene richiesta molta manutenzione di controllo e verifica sul funzionamento generale. Con il servizio di Amazon tutta questa gestione diventa molto semplice e incredibilmente scalabile. Si possono generare con pochi click server di cache con oltre 200G di RAM disponibile.
Sviluppo e Management
Amazon CloudFormation
Con questo servizio è possibile creare delle template con un semplice linguaggio di scripting che permettono la creazione di configurazioni predefinite che possono essere usate per utilizzare delle istanze EC2 senza dover affrontare i vari passaggi di configurazione. Ad esempio potremmo preparare una template che configuri la partenza di una nuova istanza con uno specifico sistema operativo, elenco di software da installare e avvio dei servizi richiesti. Ad oggi sono presenti già diversi template pronti, tra i quali ad esempio anche WordPress e Drupal.
Amazon CloudWatch
Uno degli aspetti fondamentali da tenere sotto controllo dopo aver sviluppato un’applicazione o un servizio web è quella di controllare le performance tramite un monitoring, non solo per quello che riguarda l’utilizzo dei dischi o della CPU, ma per molti altri parametri. Amazon CloudWatch è la soluzione di monitoring e allarmistica di Amazon Web Services. L’utilizzo di Simple Notification Service (SNS) permette l’invio degli allarmi tramite diversi supporti che possono essere attivati al raggiungimento di una soglia prestabilita, quindi essere avvisati immediatamente.
Amazon Elastic Beanstalk
Il servizio di Amazon EC2 mette a disposizione solo potenza computazionale, la quale una volta configurata dal punto di vista sistemistico e con l’aggiunta di software specifico, può far girare qualsiasi applicazione. Per molte persone questo si traduce in un’inconveniente, perchè bisogna farsi carico di tutte le problematiche legate alla configurazione e all’avvio dell’istanza virtuale prima ancora di preoccuparsi dell’applicazione. Proprio per questo Amazon ha sviluppato Elastic Beanstalk, che permette di caricare su AWS direttamente l’applicazione senza preoccuparsi di altri aspetti. In questo momento i linguaggi di supportati sono .NET, JAVA e PHP.
Application Services
Amazon CloudSearch
Questo servizio permette agli utenti di ricercare contenuti all’interno di applicazioni o siti web in modo rapido ed efficace. La tecnologia CloudSearch è la stessa utilizzata da Amazon.com per le ricerche legate ai suoi prodotti, cerca di rendere gli sviluppatori, che desiderano integrare la ricerca nei loro siti, più liberi e svincolati dalle logiche dei motori di ricerca pubblici. Utilizzando questo servizio, gli sviluppatori potranno creare un dominio di ricerca e memorizzare tutte le informazioni in un database personale, per poi personalizzare tutte le fasi di ricerca.
Amazon SES (Simple Email Service)
Questo servizio permette l’invio di email direttamente tramite l’infrastruttura del cloud di Amazon AWS, senza la necessità di server o postazioni dedicate. Questo è sicuramente un servizio dedicato alle aziende che devono fare azioni di Marketing tramite posta elettronica o devono gestire grandi mailing list. Per chi utilizza il servizio EC2 può usufruire di 2000 email gratuite al giorno.
Amazon SNS (Simple Notification Service)
Questo servizio è un componente molto importante dei servizi AWS e permette la notifica dei messaggi tramite diversi supporti. E’ stato aggiunto il supporto SMS mentre sono attivi da tempo Email, code dati e messaggistica HTTP/HTTPS. Ad esempio, la notifica è molto utile quando si strutturano sistemi in cluster, infatti è possibile, tramite questo componente, ricevere informazioni sullo stato di servizio da parte degli altri componenti e reagire di conseguenza.
Amazon SQS (Simple Queue Service)
Amazon SQS è uno dei primissimi servizi rilasciati da Amazon che permette tramite delle code messaggi presenti su uno o più server la distribuzione delle operazioni e quindi del carico di lavoro. Ad esempio potremmo avere un server che analizza una pagina web ed inserisce in una coda dati i riferimenti a tutte le immagini presenti in questa pagina, la coda viene analizzate da una serie di altri server che possono dividersi il lavoro e marcare il messaggio come elaborato.
Amazon Elastic Transcoder
Amazon Elastic Transcoder è un servizio di Amazon Web Services che permette la conversione video direttamente nell’ambiente cloud, ovviamente non è un servizio adatto alla conversione dei filmati personali, che possiamo fare con un qualsiasi software installato direttamente sul nostro PC, qui parliamo di sviluppare un’applicazione web o aziendale capace di convertire in diversi formati un video immesso come file di input. Questa particolarità renderebbe più semplice la visualizzazione di un video memorizzato nel nostro cloud tra differenti device come ad esempio smartphones, tablets e PCs che molte volte anche a seconda dei browser necessitano di formati differenti.
Guide Amazon Web Service (AWS) su Youtube
Se volete avere alcune informazioni senza approfondire troppo con la lettura delle guide o dei documenti ufficiali presente sul sito di Amazon Web Services, vi consiglio di vedere alcuni video che trovate in questa playlist presente su Youtube – Start by Zero. Il materiale pubblicato è in continuo aggiornamento, il nostro obiettivo è quello di pubblicare almeno un video per ogni servizio offerto. Su questo aspetto ogni consiglio e/o critica è sicuramente gradita.
Servizi AWS di Compute & Networking
- Amazon AWS – EC2 (Elastic Compute Cloud)
- Amazon AWS – Route 53
- Amazon AWS – VPC (Virtual Private Cloud)
- Amazon AWS – Direct Connect
- Amazon AWS – Elastic MapReduce
Servizi AWS di Storage e distribuzione contenuti
- Amazon AWS – CloudFront
- Amazon AWS – S3 (Simple Storage Service)
- Amazon AWS – Glacier (Backup a basso costo)
- Amazon AWS – Storage Gateway
Servizi AWS di Database
- Amazon AWS – DynamoDB (NoSQL)
- Amazon AWS – RDS (Relational Database Service)
- Amazon AWS – ElastiCache
Servizi AWS di Sviluppo e Management
- Amazon AWS – CloudFormation
- Amazon AWS – CloudWatch
- Amazon AWS – Elastic Beanstalk
Servizi AWS di Application Services
- Amazon AWS – CloudSearch
- Amazon AWS – SES (Simple Email Service)
- Amazon AWS – SNS (Simple Notification Service)
- Amazon AWS – SQS (Simple Queue Service)
- Amazon AWS – Elastic Transcoder






