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