Blog

AWS for dummies

Lettura 10 minuti

Qualche settimana fa ho partecipato all’AWSome Day a Padova, evento gratuito organizzato da Amazon Web Service; si è trattato di una giornata di formazione e consulenza dagli esperti AWS, rivolta a IT Manager e sviluppatori che hanno iniziato a utilizzare le soluzioni di  Cloud Computing di Amazon o che, come me, sono (anzi – erano) totalmente ignoranti sull’argomento.

Il taglio dell’evento era sicuramente entry-level, quindi perfetto per me che conoscevo questa tecnologia solo per sentito dire e che sono curiosa di approfondire, anche perché AWS è la nostra infrastruttura di riferimento per i servizi di hosting evoluti.

Ho preso un sacco di appunti con l’intenzione di condividere i contenuti di questa giornata con alcuni colleghi che, come me, sentono parlare di AWS ma non sono mai entrati nel merito della soluzione. Alla fine ho pensato che il nostro primo strumento di diffusione della conoscenza, internamente ed esternamente all’azienda, è il blog quindi perchè non trasformare dei sommari appunti in un vero e proprio articolo?

Cloud Computing: partiamo dalla base

Il Cloud Computing è una tecnologia che mette a disposizione, tramite la rete Internet, servizi basati sull’erogazione di risorse hardware e software con formula on demand.

Le risorse erogate comprendono, ad esempio: potenza di calcolo, spazio di archiviazione, strumenti di trasmissione dati e veri e propri servizi applicativi.

Un’azienda che necessita questo tipo di risorse per erogare i propri servizi online può appoggiarsi ad un provider di servizi cloud per acquistare e configurare un set di risorse, con la garanzia di poter ampliare questo set nel tempo in base alle esigenze di business e di capacità del sistema.

Le caratteristiche che hanno reso il Cloud Computing una tecnologia di successo sono:

  • contenimento dei costi
  • scalabilità del sistema
  • garanzia della sicurezza
  • Contenimento dei costi: principalmente si elimina l’esigenza di gestire un’infrastruttura IT personale, dall’acquisto dell’hardware e del software alla manutenzione del sistema passando dall’esigenza di avere in azienda figure specializzate. Inoltre il concetto di Cloud Computing si accompagna al concetto di flessibilità del costo in base alle reali risorse utilizzate (costo a consumo).

    Scalabilità del sistema: possibilità di ampliare o diminuire le risorse a disposizione in base alla capacità richiesta per sopportare il carico garantendo stabilità al sistema; ad esempio incrementare le risorse a disposizione all’aumento della mole di dati da gestire, oppure all’aumento del traffico verso un servizio online.

    Garanzia della sicurezza: un buon service provider si occupa di mettere in atto tutte le pratiche necessarie per garantire il rispetto delle policy di sicurezza, la protezione dei dati memorizzati nel cloud e la conformità con una serie di certificazioni necessarie per la messa in opera di servizi che richiedono adeguati livelli di sicurezza (crittografia dei dati, autenticazione, antivirus, cifratura dei dischi ecc…)

    Tipologie di Cloud Computing

    Le principali tipologie di tecnologia Cloud sono così classificate:

  • DaaS (Data as a service): il provider eroga e gestisce unicamente lo storage dati
  • SaaS (Software as a service): il provider eroga e gestisce un servizio software
  • IaaS (Infrastructure as a service): il provider eroga e gestisce l’infrastruttura di sole risorse hardware
  • PaaS (Platform as a service): il provider eroga e gestisce l’infrastruttura hardware corredata dalle risorse software che permettono di avere una soluzione integrata per l’erogazione di applicazioni
  • Amazon Web Services

    Il cloud AWS è un sistema PaaS distribuito e disponibile in 190 paesi, suddivisi in aree geografiche (regions). Attualmente sono attive 14 regioni ma nel prossimo anno è prevista la nascita di altre 4.

    Ogni regione comprende diverse zone di disponibilità (AZ – Availability Zone): le zone di disponibilità sono a tutti gli effetti dei data center distribuiti che permettono di replicare le applicazioni in modo da garantire scalabilità e disponibilità in caso di guasti su una particolare zona.

    La scelta della regione da cui erogare i propri servizi e applicazioni dovrebbe essere dipendente dalla provenienza della maggior parte dei visitatori.

    Componenti AWS, traduciamo un po’ di sigle

    Nel sistema AWS quasi ogni componente o servizio è identificato, o meglio riconosciuto, da una sigla. Vediamo di far luce sulle principali.

    S3 – Simple Storage Service

    E’ il primo componente nato in Amazon: si tratta di un servizio di archiviazione di risorse accessibili e condivisibili. E’ particolarmente adatto all’archiviazione di risorse statiche (storage, backup, media, componenti software da scaricare al boot per il delivery di macchine EC2).

    Ecco le caratteristiche principali:

  • le risorse vengono archiviate all’interno di buckets, ovvero contenitori logici su cui è possibile impostare i permessi di accesso
  • ad ogni risorsa salvata è associata una chiave all’interno del bucket
  • le risorse archiviate sono disponibili via http e puntando alla url del servizio e alla chiave dell’oggetto e sono anche accessibili via rest/soap API tramite protocollo https
  • non ha limiti di storage
  • servizio scalabile, durevole e affidabile
  • gestisce versioning e lifetime delle risorse
  • le chiamate a S3 sono tutte crittografate con una chiave tramite un servizio
  • si può attivare il logging di accesso alle risorse
  • si possono configurare eventi (al get/put delle risorse)
  • si paga lo spazio occupato
  • Per approfondimenti: https://aws.amazon.com/it/s3

    EC2 – Amazon Elastic Compute Cloud

    Si tratta dell’infrastruttura che consente di disporre on demand di istanze di macchine virtuali configurabili in base alle proprie necessità.

    E’ possibile ridimensionare, accendere e spegnere le istanze in base all’esigenza di potenza di calcolo necessaria per far fronte al carico: la prima caratteristica è quindi la scalabilità in termini di capacità di carico.

    Per attivare una macchina si può partire da un’immagine (AMI – Amazon Machine Image) o da un template precedentemente salvato, che è a tutti gli effetti un “modello di macchina”.

    Si scelgono quindi il sistema operativo (Linux / Windows), l’availability zone in cui accendere la macchina, la dimensione della macchina selezionando famiglia (famiglie: T2, M3, M4, C3, C4, R3, G2, I2, D2), l’architettura della macchina configurando RAM, CPU, dischi di storage e rete.

    Successivamente si procede alla configurazione dell’istanza specificando le regole di shutdown, il monitoraggio, i permessi di accesso e altre specifiche.

    Il self-configuration della macchina mette a disposizione due importanti strumenti:

  • Metadata: tutte le informazioni associate alla macchina. in qualsiasi momento si può verificare lo status dell’istanza interrogando i Metadata.
  • User Data: informazioni da mandare all’istanza in modo che vengano eseguiti degli script al boot della macchina.
  • Caratteristiche principali:

  • alta scalabilità
  • possibilità di sfruttare il servizio di Auto-Scaling: vengono accese in automatico delle istanze in base a logiche da noi definite; possiamo impostare metriche sulle risorse (ad es cpu) o su fasce orarie in base al traffico previsto
  • accesso di root alla macchina
  • possibilità di definizione di una chiave di accesso alla macchina via ssh
  • massimo controllo della risorsa (sotto il profilo hardware e software)
  • possibilità di gestire dei tag sulle risorse in modo da identificarle all’interno del cloud
  • possibilità di configurare security groups
  • possibilità di sfruttare il bilanciamento di traffico mediante Elastic Load Balancing
  • usa hardware intel xeon sempre aggiornato
  • si pagano solo le risorse utilizzate (dal momento in cui accendo la macchina)
  • Per approfondimenti: https://aws.amazon.com/it/ec2/

    EBS – Elastic Block Storage

    Sono volumi di storage (dischi) montati sulle istanze EC2.

    Risiedono nella medesima availability zone dell’istanza EC2 su cui vengono montati e sono particolarmente adatti come storage per dati che richiedono alta persistenza (indipendentemente dallo stato della macchina a cui sono collegati). Sono quindi adatti per l’utilizzo come file system primario o per lo storage di database o per memorizzare e gestire dati ad alta frequenza di lettura/scrittura.

    Su una singola istanza EC2 possono essere montati diversi volumi EBS, un singolo volume EBS può però servire una singola istanza EC2 alla volta.

    Per alti carichi di input/output su un disco si può scegliere la tipologia Provisioned IOPS SSD per garantire maggiori performance di I/O sul disco.

    Tramite il servizio Amazon EBS Snapshot si possono gestire i backup dei dischi e bisogna fare attenzione alla tipologia di IP collegati, per garantire la persistenza degli indirizzi IP di riferimento in caso di azioni stop/start sull’istanza EC2 su cui è montato il volume.

    Per approfondimenti: https://aws.amazon.com/it/ebs/

    VPC – Amazon Virtual Private Cloud

    Si tratta di un ambiente privato virtuale, logicamente isolato all’interno di AWS, in cui far risiedere le istanze EC2.

    Di default Amazon crea una rete privata VPC per l’account utente, assegnando i servizi AWS attivi; è sempre possibile configurare le caratteristiche della rete VPC o crearne di nuove.

    Altamente personalizzabile: è possibile selezionare gli intervalli degli indirizzi IP, configurare una VPN hardware con la propria rete aziendale e definire i permessi di accesso alla VPC.

    E’ anche possibile creare delle subnet, o sottoreti: una subnet è sempre legata ad una availability zone.

    La VPC prevede diversi livelli di sicurezza con possibilità di configurare:

  • Security-groups: legati alle istanze EC2 lanciate all’interno della VPC. Funzionano come se fossero dei firewall che regolamentano il traffico outbound/inbound all’interno della VPC. Agiscono a livello di singola istanza EC2 e sono stateful.
  • ACL per filtrare il traffico a livello di subnet, controllano il traffico in base al tipo di accesso (inbound/outbound) e sono stateless.
  • Per approfondimenti: https://aws.amazon.com/it/vpc/

    Database e cache

    Amazon mette a disposizione alcuni servizi per la gestione di database: motori di database relazionali / nosql, sistemi di caching, servizi di migrazione dei databases nel cloud.

    Di seguito un elenco:

  • Amazon Dynamo DB: database no sql fully managed; è possibile tarare il provision (size read/write) in base alla previsione di utilizzi
  • Amazon RDS: gestore di database relazionale (db engine supportati: mysql, mariadb, microsoft sql server, postgres, oracle). Le istanze di database girano sotto la VPC, servizio scalabile e deployabile su diverze availability zones. E’ possibile configurare backup automatici configurando schedulazione e retention.
  • Amazon Aurora: database relazionale compatibile con MySql ma (a detta di Amazon) estremamente performante
  • Amazon ElastiCache: servizio di caching che implementa i motori Redis e Memcached; servizio scalabile e distribuibile.
  • Per approfondimenti: https://aws.amazon.com/it/products/databases/

    Amazon Cloud Watch

    E’ il sistema di monitoraggio di Amazon; ha una serie di metriche (ad es utilizzo cpu di una particolare istanza o gruppo di istanze) per monitorare le risorse AWS istanziate all’interno della propria VPC.

    E’ possibile agganciare allarmi alle metriche per effettuare un’azione come ad esempio inviare una notifica email o agganciare una nuova macchina all’autoscaling group.

    Si possono creare metriche custom aggiuntive a quelle Amazon (custom metrics).

    Il servizio fornisce report grafici e statistiche sullo stato operativo delle risorse monitorate.

    Per approfondimenti: https://aws.amazon.com/it/cloudwatch/

    Amazon AWS console

    Amazon fornisce un servizio web e un’applicazione per accedere alla console di gestione delle risorse AWS.

    Per iniziare ad utilizzare AWS è necessario registrare un account gratuito e collegare una carta di credito; ricordiamoci che, al netto dei servizi gratuiti per il primo anno, il resto delle risorse istanziate e utilizzate saranno addebitate in base alla politica di pricing scelta.

    Dalla console AWS è possibile configurare il proprio account, è possibile accendere / spegnere / configurare risorse e accedere alle statistiche del sistema di monitoraggio.

    E’ anche possibile configurare il networking (VPC, ACL, Security groups) e tutte le regole relative a sicurezza, identità e gestione degli accessi alle risorse (utenti, gruppi e ruoli IAM, utenti federati)

    Per approfondimenti: https://aws.amazon.com/it/console/

    Politiche di pricing

    Esiste AWS Free Tier che è il piano gratuito sfruttabile per avvicinarsi al mondo AWS senza dover sostenere dei costi.

    In base al tipo di servizio esistono diverse politiche di pricing, approfondibili a questo link: https://aws.amazon.com/it/pricing/services/

    Conclusioni

    Sarebbe impossibile in un articolo esplorare l’intera gamma di prodotti AWS, per questo rimando al sito web ufficale che spiega in modo dettagliato le caratteristiche di ogni servizio e offre dei tutorial per iniziare ad utilizzare questa tecnologia.

    Registrandosi al servizio si può accedere al piano gratuito di AWS della durata di 1 anno che permette l’utilizzo free (con alcune limitazioni) della maggior parte dei servizi.

    Nadia Sala