Download odp - IaaS e PaaS

Transcript

Alberto Zuinhttp://[email protected]

Cosa aspettarsi da questo seminario:

Un cloud un insieme di risorse hardware (server, storage, networking) ridondata e scalabile, sul quale possibile realizzare servizi a loro volta ridondati e scalabili attraverso del software adatto allo scopo.

Alberto Zuinhttp://[email protected]

Cosa aspettarsi da questo seminario:

Conoscenza degli elementi che compongono un cloud

Un cloud un insieme di risorse hardware (server, storage, networking) ridondata e scalabile, sul quale possibile realizzare servizi a loro volta ridondati e scalabili attraverso del software adatto allo scopo.

Alberto Zuinhttp://[email protected]

Cosa aspettarsi da questo seminario:

Conoscenza degli elementi che compongono un cloud

Conoscenza deglistrumenti aggiuntivi del cloud

Un cloud un insieme di risorse hardware (server, storage, networking) ridondata e scalabile, sul quale possibile realizzare servizi a loro volta ridondati e scalabili attraverso del software adatto allo scopo.

Alberto Zuinhttp://[email protected]

Cosa aspettarsi da questo seminario:

Conoscenza degli elementi che compongono un cloud

Conoscenza deglistrumenti aggiuntivi del cloud

Linee guida da seguire per realizzare una web application scalabile

Un cloud un insieme di risorse hardware (server, storage, networking) ridondata e scalabile, sul quale possibile realizzare servizi a loro volta ridondati e scalabili attraverso del software adatto allo scopo.

Alberto Zuinhttp://[email protected]

Cos' un cloud?

Un cloud un insieme di risorse hardware (server, storage, networking) ridondata e scalabile, sul quale possibile realizzare servizi a loro volta ridondati e scalabili attraverso del software adatto allo scopo.Queste risorse hardware sono ospitate remotamente e quindi saranno sfruttabli attraverso InternetIn un cloud queste risorse sono allocabili e rilasciabili rapidamente e senza l'intervento del gestore del cloud

Cos' un cloud?

Alberto Zuinhttp://[email protected]

Quando usare il cloud?

Quando usare il cloud:Quando si vogliono abbattere i costi per l'infrastruttura interna

Quando si ha la necessit di scalare in base alle necessit

Ottimo per le start-up non infrastrutturate

Quando usare il cloud?

Alberto Zuinhttp://[email protected]

Quando non usare il cloud?

Quando non usare il cloud:Quando si sa gi che la quantit di risorse necessarie sar cos elevata che il cloud potrebbe risultare antieconomico

Quando si ha la necessit del controllo diretto delle risorse Hardware

Quando si ha la necessit di usare software non studiato espressamente per lavorare su pi server contemporaneamente

Quando si ha la necessit di controllare direttamente il networking (es. BGP, Anycast, ecc.)

Quando non usare il cloud?

Scalabilit nel cloud:

Alberto Zuinhttp://[email protected]

La scalabilit di un sistema pu essere verticale (aumentare le risorse del server es. Aumentare la RAM, aggiungere CPU, ecc.) oppure orizzontale (pi server che lavorano assieme).In questo seminario, quando parleremo di scalabilit, intendiamo esclusivamente l'orizzontale, sebbene anche la verticale sia applicabile al cloud.

Scalabilit nel cloud:

Scalabilit nel cloud:

Alberto Zuinhttp://[email protected]

Verticale

La scalabilit di un sistema pu essere verticale (aumentare le risorse del server es. Aumentare la RAM, aggiungere CPU, ecc.) oppure orizzontale (pi server che lavorano assieme).In questo seminario, quando parleremo di scalabilit, intendiamo esclusivamente l'orizzontale, sebbene anche la verticale sia applicabile al cloud.

Scalabilit nel cloud:

Scalabilit nel cloud:

Alberto Zuinhttp://[email protected]

Orizzontale

La scalabilit di un sistema pu essere verticale (aumentare le risorse del server es. Aumentare la RAM, aggiungere CPU, ecc.) oppure orizzontale (pi server che lavorano assieme).In questo seminario, quando parleremo di scalabilit, intendiamo esclusivamente l'orizzontale, sebbene anche la verticale sia applicabile al cloud.

Scalabilit nel cloud:

Alberto Zuinhttp://[email protected]

Multi-Tenancy

La Multi-Tenancy la capacit di un software di assumere differenti aspetti per diversi clienti.Quindi non pi un software e un sistema dedicato ad ogni cliente, ma un unico software in grado di gestire al suo interno pi clienti simili

Multi-Tenancy

Alberto Zuinhttp://[email protected]

Da quali elementi composto?

Da quali elementi composto?

Alberto Zuinhttp://[email protected]

Networking

Networking: connessione verso Internet ad elevate prestazioni di banda, ridondata (pi connessioni blianciate e ridondate attraverso il protocollo di routing BGP). In alcuni casi, possibile avere ridondanza multidatacenter attraverso Anycast (indirizzi IP annunciati in diversi datacenter)

Networking

Alberto Zuinhttp://[email protected]

Networking

Capacit computazionale

Capacit computazionale: pi server dotati di quantit importanti di CPU e RAM con un Hypervisor (VMWare, XEN o KVM) in grado di gestire istanze virtualizzate

Capacit computazionale

Alberto Zuinhttp://[email protected]

Networking

Capacit computazionale

Storage

Storage: un sistema di storage scalabile ove risiedono le immagini delle VM istanziate sull'Hypervisor e/o i dati gestiti dalle VM. E' possibile trovare storage di tre tipi:SAN: poco scalabili ma veloci costi elevati per l'utente

Cluster di commodity computer: molto scalabili ma pi lenti soprattutto in scrittura costi limitati per l'utente

Storage dedicati per specifiche applicazioni (es. Amazon RDS Relational Database Server)e

Storage

Alberto Zuinhttp://[email protected]

Networking

Capacit computazionale

Storage

Cloud controller

Sistema di controllo del cloud, con API per l'interfacciamento verso l'esterno

Cloud controller

Alberto Zuinhttp://[email protected]

Differenza tra IaaS, PaaS e SaaS

Differenza tra IaaS, PaaS e SaaS

Alberto Zuinhttp://[email protected]

Ottimizzazione

Flessibilit

SaaSPaaSIaaS

Differenza tra IaaS, PaaS e SaaS

Alberto Zuinhttp://[email protected]

IaaS:

Infrastructure as a Service

IaaS (Infrastructure as a Service): Servizio composto dalle mere risorse Hardware (CPU, RAM, spazio su disco, connettivit). Business model a consumo: si fissa una quota massima di utilizzo ma si paga solo ci che si consuma realmente.Ci sono delle API per connettersi al servizio e scalare in caso di necessit. Le API permettono di aprire/chiudere istanze; la logica di funzionamento dell'applicazione quando si usano pi istanze e il software in grado di comandare l'apertura/chiusura di istanze compito del PaaS e/o del SaaS.

IaaS:

Infrastructure as a Service

Alberto Zuinhttp://[email protected]

PaaS: Platform as a Service

PaaS: Platform as a Service. La piattaforma di pacchetti software che si integrano con l'hardware (IaaS) su cui realizzare un servizio SaaS. E' sostanzialmente il livello intermedio tra IaaS e SaaS e comprende il web server/load balancer, i linguaggi/framework per lo sviluppo del servizio SaaS, il datastore (database/filesystem), sistemi di cache, sistemi di gestione delle code.Il PaaS si integra con il IaaS sottostante per far scalare automaticamente il sistema in caso di necessit.

PaaS: Platform as a Service

Alberto Zuinhttp://[email protected]

SaaS: Software as a Service

SaaS (Software as a Service): il livello pi elevato della catena.Il SaaS il servizio (al 99% una web application) che utilizza l'utente finale e che si integra con il PaaS sottostante.Sono SaaS, ad esempio:- I social network (Twitter, Facebook, Linkedin...)- I servizi di prenotazione online (Expedia, Trivago...)- I servizi pagamento (Google Checkout, Paypal...)- ......

SaaS: Software as a Service

Alberto Zuinhttp://[email protected]

Differenza tra struttura virtualizzata e Cloud Computing

vs.

L'infrastruttura virtualizzata sostanzialmente un Hypervisor (VMWare, Xen, KVM...) su cui creare Virtual Machine.Il cloud una infrastruttura virtualizzata con molto altro: l'Hypervisor un componente a cui si associano uno o pi sistemi di storage e un controller che espone delle API per la gestione del cloud stesso.

Differenza tra struttura virtualizzata e Cloud Computing

Alberto Zuinhttp://[email protected]

Differenza tra Cloud Computing e Grid Computing

vs.

La differenza molto sottile e difficilimente percettibile.Nel grid computing abbiamo X server (con X un numero di server prefissato) che lavorano parallelamente per eseguire un applicativo. I server sono per lo pi server fisici in quanto il processo deve poter sfruttare appieno le potenzialit dell'hardware.Il cloud computing un grid computing in cui si ha un numero X di server virtualizzati che lavorano parallelamente per eseguire un applicativo. Il numero X di server viene gestito per lo pi dinamicamente (dipende da come sono realizzati PaaS/SaaS) in base al carico di lavoro effettivo dell'applicativo, istanziando e disistanziando Virtual Machine attraverso le API del IaaS.

Differenza tra Cloud Computing e Grid Computing

Alberto Zuinhttp://[email protected]

Private Cloud vs Public Cloud

PrivatePubic

PosizioneInterna all'aziendaInternet

ConnessioneConnessa alla rete localeConnessa ad Internet

ScalabilitTendenzialmente verticaleTendenzialmente Orizzontale

Scalabilit massima100-1000 nodi+10.000 nodi

CondivisioneSingle-tenantMulti--tenat

PrezzoIn base alla capacitIn base all'utilizzo

Centro finanziarioCostoRicarico

(ma c' anche l'hybrid...)

Differenza tra private e public cloud.L'hybrid cloud: un private cloud che scala su un public cloud

Private Cloud vs Public Cloud

Alberto Zuinhttp://[email protected]

IaaS

Come gi detto:IaaS (Infrastructure as a Service): Servizio composto dalle mere risorse Hardware (CPU, RAM, spazio su disco, connettivit). Business model a consumo: si fissa una quota massima di utilizzo ma si paga solo ci che si consuma realmente.Ci sono delle API per connettersi al servizio e scalare in caso di necessit. Le API permettono di aprire/chiudere istanze; la logica di funzionamento dell'applicazione quando si usano pi istanze e l'apertura/chiusura di istanze demandata al PaaS e al SaaS.

IaaS

Alberto Zuinhttp://[email protected]

IaaS: ridondanza e scalabilit dello storage

IaaS: ridondanza e scalabilit dello storage

Alberto Zuinhttp://[email protected]

Storage Locale

Storage locale: storage contenuto all'interno dell'Hypervisor e quindi non replicabile. Ha elevata velocit ma nessuna possibilit di essere scalato/ridondato. Viene normalmente usato in combinazione con dischi ad elevata velocit (SSD) ad esempio per la memoria Swap (memoria virtuale) delle VM.

Storage Locale

Alberto Zuinhttp://[email protected]

SAN: Storage Area Network

Storage di rete SAN: sono dispositivi ad alta velocit che normalmente utilizzano protocolli di I/O standard (ATA/SCSI) incapsulati in una connessione Ethernet/Fibre Channel (iSCSI o AoE).La velocit elevata, la scalabilit ridotta (ogni SAN pu gestire un numero massimo di X dischi e pu essere impilata con un numero limitato di altre SAN) e il costo elevato. Vengono utilizzate nelle situazioni in cui si ha la necessit di avere persistenza dei dati ed elevate prestazioni (ad es. Server SQL) ma il costo elevato ne limita l'utilizzo.La scalabilit/tolleranza ai guasti gestita direttamente dalla SAN con protocolli Hardware (Raid 3/5/6/10...) ciascuno con maggiori caratteristiche di tolleranza/velocit/capienza

SAN: Storage Area Network

Alberto Zuinhttp://[email protected]

Cluster Storage

Storage di rete cluster: in questo caso ci sono X commodity computer (server semplici dal costo ridotto) collegati tra loro che sommano la loro capacit di storage.
Google utilizza delle lame con CPU celeron monoprocessore e 1 disco SATA per lo storage dell'intero motore di ricerca.Esistono numerosi filesystem cluster: GlusterFS, MooseFS, Ceph, Hadoop Distributed File System...

Cluster Storage

Alberto Zuinhttp://[email protected]

1

1

2

1

2

3

4

FILE

1234Cluster storage con replica 2

3

4

La teoria di funzionamento: ogni file viene diviso in chunk, cio piccoli file di dimensione prestabilita; ciascun chunk replicato in pi server (il numero di copie settabile); pi repliche ho, maggiore sar la velocit di lettura (questi filesystem permettono di parallelizzare le letture), minore sar lo storage a disposizione.La scalabilit infinita (collaudati per gestire numerosi petabytes di dati), la tolleranza ai guasti settabile dal numero di repliche, la velocit di lettura elevata, quella di scrittura no; utilizzano quasi tutti il protocollo FUSE (filesystem in userspace). Vengono utilizzati per dati che cambiano con poca frequenza (ad es. i file statici dei siti web e i file immagine delle VM)Su storage cluster si basano semplici SaaS come iCloud e Dropbox.

Cluster Storage

Alberto Zuinhttp://[email protected]

1

1

2

1

2

3

3

4

4

FILE

1234Cluster storage con replica 3

2

1

3

4

La teoria di funzionamento: ogni file viene diviso in chunk, cio piccoli file di dimensione prestabilita; ciascun chunk replicato in pi server (il numero di copie settabile); pi repliche ho, maggiore sar la velocit di lettura (questi filesystem permettono di parallelizzare le letture), minore sar lo storage a disposizione.La scalabilit infinita (collaudati per gestire numerosi petabytes di dati), la tolleranza ai guasti settabile dal numero di repliche, la velocit di lettura elevata, quella di scrittura no; utilizzano quasi tutti il protocollo FUSE (filesystem in userspace). Vengono utilizzati per dati che cambiano con poca frequenza (ad es. i file statici dei siti web e i file immagine delle VM)Su storage cluster si basano semplici SaaS come iCloud e Dropbox.

Cluster Storage

Alberto Zuinhttp://[email protected]

IaaS: ridondanza e scalabilit degli Hypervisor

La scalabilit e ridondanza degli HV non data dall'HV ma dal Cloud Controller che si occupa di gestire le risorse messe a disposizione dagli HV e gestire eventuali guasti di HyperVisor non funzionanti migrando le VM su altri server (oltre a gestire lo storage). La scalabilit degli HV intrinseca perch basta aggiungere nuovi server in caso di necessit.

IaaS: ridondanza e scalabilit degli Hypervisor

12

34

56Cloud Controller

Alberto Zuinhttp://[email protected]

La scalabilit e ridondanza degli HV non data dall'HV ma dal Cloud Controller che si occupa di gestire le risorse messe a disposizione dagli HV e gestire eventuali guasti di HyperVisor non funzionanti migrando le VM su altri server (oltre a gestire lo storage). La scalabilit degli HV intrinseca perch basta aggiungere nuovi server in caso di necessit.

IaaS: ridondanza e scalabilit degli Hypervisor

12

34

56Cloud Controller

34

Alberto Zuinhttp://[email protected]

La scalabilit e ridondanza degli HV non data dall'HV ma dal Cloud Controller che si occupa di gestire le risorse messe a disposizione dagli HV e gestire eventuali guasti di HyperVisor non funzionanti migrando le VM su altri server (oltre a gestire lo storage). La scalabilit degli HV intrinseca perch basta aggiungere nuovi server in caso di necessit.

IaaS: ridondanza e scalabilit degli Hypervisor

12

34

56Cloud Controller

Alberto Zuinhttp://[email protected]

La scalabilit e ridondanza degli HV non data dall'HV ma dal Cloud Controller che si occupa di gestire le risorse messe a disposizione dagli HV e gestire eventuali guasti di HyperVisor non funzionanti migrando le VM su altri server (oltre a gestire lo storage). La scalabilit degli HV intrinseca perch basta aggiungere nuovi server in caso di necessit.

IaaS: ridondanza e scalabilit degli Hypervisor

Alberto Zuinhttp://[email protected]

Quale Cloud Controller?

Closed Source vs. Open Source

Pro: assistenza efficace in caso di guasto, semplicit d'uso
Con: costo elevato, API non compatibili con Amazon EC2.

Pro: tutti compatibili con le API Amazon EC2, aperti anche per il controllo del cloud stesso (ad es. billing) tramite API
Con: nessuna assistenza diretta, nessuna garanzia

Alcuni Cloud Controller OpenSource- Eucalyptus: progetto di NASA (ora abbandonato) diventato OpenSource e utilizzato nelle prime versioni di Ubuntu Cloud. E' limitato a 256 HyperVisor- OpenStack: progetto nato dalla Joint Venture di NASA (dopo aver abbandonato Eucalyptus) con RackSpace (il secondo fornitore di IaaS dopo Amazon) che ha deciso di rendere OpenSource il suo sistema. E' utilizzato nell'ultima versione di Ubuntu Cloud- OpenNebula: progetto alternativo del CERN di Ginevra, concettualmente molto semplice ed efficace, ma allo stesso tempo molto potente grazie alle numerose API che permettono di comandarlo in ogni sua parte.

Quale Cloud Controller?

Alberto Zuinhttp://[email protected]

Le API di Amazon

Solo Amazon? No: tutti i maggiori cloud provider sono interfacciabili attraverso queste API, lo standard de facto. I Cloud Controller OpenSource citati sono compatibili con queste API.

Realizzando un sistema PaaS/SaaS che sfrutta queste API possibile partire con una Web Application su un Public Cloud e migrarla progressivamente verso Hybrid/Private cloud quando risulter conveniente.

Funzianamento delle API:- Direttamente tramite chiamate GET al web server- Direttamente tramite chiamate SOAP al web serverIn entrambi i casi si ottengono risposte in XML dal web serverUtilizzo di librerie specifiche per i linguaggi:Java

Python

Ruby

PHP

.net

Le API di Amazon

Alberto Zuinhttp://[email protected]

Amazon DevPay ConfirmProductInstance

AMIs CreateImage DeregisterImage DescribeImageAttribute DescribeImages ModifyImageAttribute RegisterImage ResetImageAttribute

Availability Zones and Regions DescribeAvailabilityZones DescribeRegions

Customer Gateways (Amazon VPC) CreateCustomerGateway DeleteCustomerGateway DescribeCustomerGateways

DHCP Options (Amazon VPC) AssociateDhcpOptions CreateDhcpOptions DeleteDhcpOptions DescribeDhcpOptions Elastic Block Store AttachVolume CreateSnapshot CreateVolume DeleteSnapshot DeleteVolume DescribeSnapshotAttribute DescribeSnapshots DescribeVolumes DescribeVolumeAttribute DescribeVolumeStatus DetachVolume EnableVolumeIO ImportVolume ModifySnapshotAttribute ModifyVolumeAttribute ResetSnapshotAttribute

Elastic IP Addresses AllocateAddress AssociateAddress DescribeAddresses DisassociateAddress ReleaseAddress

Elastic Network Interfaces AttachNetworkInterface DetachNetworkInterface CreateNetworkInterface DeleteNetworkInterface DescribeNetworkInterfaces DescribeNetworkInterfaceAttribute ModifyNetworkInterfaceAttribute ResetNetworkInterfaceAttribute

General GetConsoleOutput

Instances DescribeInstanceAttribute DescribeInstances DescribeInstanceStatus ImportInstance ModifyInstanceAttribute RebootInstances ReportInstanceStatus ResetInstanceAttribute RunInstances StartInstances StopInstances TerminateInstances Internet Gateways (Amazon VPC) AttachInternetGateway CreateInternetGateway DeleteInternetGateway DescribeInternetGateways DetachInternetGateway

Key Pairs CreateKeyPair DeleteKeyPair DescribeKeyPairs ImportKeyPair

Monitoring MonitorInstances UnmonitorInstances

Network ACLs (Amazon VPC) CreateNetworkAcl CreateNetworkAclEntry DeleteNetworkAcl DeleteNetworkAclEntry DescribeNetworkAcls ReplaceNetworkAclAssociation ReplaceNetworkAclEntry

Placement Groups CreatePlacementGroup DeletePlacementGroup DescribePlacementGroups

E' evidente che il servizio IaaS di Amazon sconfina in alcuni casi con un servizio PaaS (ad esempio le API per il MapReduce)

Qualsiasi aspetto del cloud di Amazon comandabile tramite API

I cloud compatibili non incorporano tutte le funzionalit del cloud di Amazon, ergo non tutte le API sono utilizzabili ovunque

E' evidente che le possibilit offerte da un cloud sono superiori rispetto ad un semplice sistema di virtualizzazione

Le API di Amazon

Alberto Zuinhttp://[email protected]

Reserved Instances DescribeReservedInstances DescribeReservedInstancesOfferings PurchaseReservedInstancesOffering

Route Tables (Amazon VPC) AssociateRouteTable CreateRoute CreateRouteTable DeleteRoute DeleteRouteTable DescribeRouteTables DisassociateRouteTable ReplaceRoute ReplaceRouteTableAssociation

Security Groups AuthorizeSecurityGroupEgress (Amazon VPC security groups only) AuthorizeSecurityGroupIngress CreateSecurityGroup DeleteSecurityGroup DescribeSecurityGroups RevokeSecurityGroupEgress (Amazon VPC security groups only) RevokeSecurityGroupIngress Spot Instances CancelSpotInstanceRequests CreateSpotDatafeedSubscription DeleteSpotDatafeedSubscription DescribeSpotDatafeedSubscription DescribeSpotInstanceRequests DescribeSpotPriceHistory RequestSpotInstances

Subnets (Amazon VPC) CreateSubnet DeleteSubnet DescribeSubnets

Tags CreateTags DeleteTags DescribeTagsVM Import CancelConversionTask DescribeConversionTasks ImportInstance ImportVolume

VPCs (Amazon VPC) CreateVpc DeleteVpc DescribeVpcs

VPN Connections (Amazon VPC) CreateVpnConnection DeleteVpnConnection DescribeVpnConnections

Virtual Private Gateways (Amazon VPC) AttachVpnGateway CreateVpnGateway DeleteVpnGateway DescribeVpnGateways DetachVpnGateway

Windows BundleInstance CancelBundleTask DescribeBundleTasks GetPasswordData

E' evidente che il servizio IaaS di Amazon sconfina in alcuni casi con un servizio PaaS (ad esempio le API per il MapReduce)

Qualsiasi aspetto del cloud di Amazon comandabile tramite API

I cloud compatibili non incorporano tutte le funzionalit del cloud di Amazon, ergo non tutte le API sono utilizzabili ovunque

E' evidente che le possibilit offerte da un cloud sono superiori rispetto ad un semplice sistema di virtualizzazione

Le API di Amazon

Alberto Zuinhttp://[email protected]

PaaS: Platform as a Service

Come gi detto:PaaS: Platform as a Service. La piattaforma di pacchetti software che si integrano con l'hardware (IaaS) su cui realizzare un servizio SaaS. E' sostanzialmnente il livello intermedio tra IaaS e PaaS e comprende il web server/load balancer, i linguaggi/framework per lo sviluppo del servizio SaaS, il datastore (database/filesystem), i sistemi di cache, i sistemi di gestione delle code.Il PaaS si integra con il IaaS sottostante per far scalare automaticamente il sistema in caso di necessit.

PaaS: Platform as a Service

Alberto Zuinhttp://[email protected]

Il web server/load balancer

Il web server/load balancerI servizi PaaS nella maggior parte dei casi servono per ospitare delle Web Application. Poco importa se l'accesso alla web application avviene tramite un comune Browser (Firefox, Internet Explorer, Chrome, Opera...) o tramite un software proprietario che si interfaccia all'applicazione tramite API.Il componente essenziale per una qualsiasi Web Application la presenza nel PaaS di un web server.Il load balancer normalmente si occupa solo di girare le chiamate verso gli application server che contengono il web server. In alcuni casi il load balancer pu essere esso stesso un web server ed essere configurato per servire contenuti statici

Il web server/load balancer

Alberto Zuinhttp://[email protected]

L'application server

L'application serverPer application server si intende il server che esegue il lavoro computazionale. Ad esempio il server che esegue il codice PHP/Ruby/Python... della nostra web application.L'application server il componente pi soggetto a stress, pertanto quello che scaler pi frequentemente.Le chiamate all'application server, normalmente vengono proxate dal web server/load balancer soprastante.

L'application server

Alberto Zuinhttp://[email protected]

Il data storage

Il data storageE' il posto dove risiedono tutti i dati della web application che deve essere accessibile da tutti i server.
E' possibile avere una o pi istanze di VM all'interno del proprio cloud che fungono da datastore, oppure usare un servizio del Cloud Provider (ad es. Amazon EBS), oppure usare server fisici in cluster.
Nei casi pi semplici un filesystem di rete condiviso (ad es. un server NFS).
Nei casi pi complessi o dove si hanno necessit di gestire grandi quantit di dati (ad es. Google) si tratta di cluster di storage server dedicati.
Le ultime tendenze portano ad usare i database documentali, i cosidetti NoSQL per trattare tutti i dati della web application.

Il data storage

Alberto Zuinhttp://[email protected]

Altri componenti

Altri componenti importanti:Un gestore di cache condivisa (ad ed. Memcached)

Un gestore di code su protocollo XMPP (si, lo stesso della chat)

Un gestore dei processi con MapReduce per far scalare la nostra applicazione all'occorrenza (es. Apache Hadoop MapReduce)

Altri componenti

Alberto Zuinhttp://[email protected]

E il database relazionale...

?(ma serve?)

E il database relazionale dov'?1) si creano delle istanze di VM con il database (ad es. Pi server MySQL in replica): sistema non scalabile automaticamente, attenzione alla velocit dello storage del servizio IaaS2) si acquistano servizi di database relazionale dal fornitore (ad es. Amazon RDBS)Ma serve realmente?I database documentali offrono la possibilit di eseguire query non relazionali (no Union e Join) a velocit superiore rispetto ad un comune database relazionale in quanto normalmente il database viene mantenuto integralmente in copia sulla RAM. Si dovranno delegare le istruzioni di relazione al codice dell'applicazione e quindi il carico di lavoro si sposta sugli Application Server che scalano pi facilmente.

E il database relazionale...

Alberto Zuinhttp://[email protected]

Servizi PaaS acquistabili e OpenSource

La scelta del PaaS corretto dipende dalle nostre esigenze nello sviluppo del SaaS.

Alberto Zuinhttp://[email protected]

Linuguaggi: .net (leader), PHP, Java, node.js
Database Relazionale Azure SQL
Storage a BLOB
API per gestire la comunicazione tra i processi

Microsoft Azure:Linuguaggi supportati: .net (leader), PHP, Java, node.js
Database Relazionale Azure SQL
Storage a BLOB
API per gestire la comunicazione tra i processi

Alberto Zuinhttp://[email protected]

Engine Yard

Linguaggi: PHP (leader), Ruby, node.js
Database Relazionali: MySQL, PostgreSQL
Database Documentali: MongoDB, Redis
Controllo della cache via memcached e Redis
Controllo dei processi via delayed_job e resque

Engine Yard (ospitato su Amazon EC2)Linuguaggi supportati: PHP (leader), Ruby, node.js
Database Relazionali: MySQL, PostgreSQL
Database Documentali: MongoDB, Redis
Controllo della cache via memcached e Redis
Controllo dei processi via delayed_job e resque

Alberto Zuinhttp://[email protected]

Linguaggi: Ruby (leader), Node.js, Clojure, Java, Python, e Scala (leader)
Database Relazionali: PostgreSQL
Gemma Ruby per il controllo totale della piattaforma

Heroku (ospitato su Amazon EC2)Linuguaggi supportati: Ruby (leader), Node.js, Clojure, Java, Python, e Scala (leader)
Database Relazionali: PostgreSQL
Gemma Ruby per il controllo totale della piattaforma

Alberto Zuinhttp://[email protected]

Linguaggi: Java, Python (leader) e Go!
Database Relazionali: MySQL
Database Documentali: Google Datastore
API dedicate per la gestione dei processi

Google App EngineLinuguaggi supportati: Java, Python (leader) e Go!
Database Relazionali: MySQL
Database Documentali: Google Datastore
API dedicate per la gestione dei processi

Alberto Zuinhttp://[email protected]

Progetto OpenSource per trasformare un IaaS in un PaaS compatibile con Goole App Engine

Appscale Clone Opensource di Google App EngineLinuguaggi supportati: Java, Python (leader) e Go!
Database Relazionali: MySQL Cluster
Database Documentali: Cassandra, Hbase, Hypertable, MongoDB, MemcachedDB (come memcached ma con persistenza dati), Voldemort, Redis
API dedicate per la gestione dei processiAPI mirror per l'interfacciamento alle API di AmazonE' installabile direttamente su Amazon EC2 o su qualsiasi Private Cloud compatibile (immagine per Eucalyptus scaricabile direttamente)

RidondanzaScalabilitVelocit

Storage Locale501100

RidondanzaScalabilitVelocit

Storage Locale501100

SAN803070

RidondanzaScalabilitVelocit

Storage Locale501100

SAN803070

Cluster10010030


Recommended