wpc2012 windows azure - architetture e costi nell'era del cloud
DESCRIPTION
Presentation delivered at WPC 2012 in Milan, where I explained challenges and considerations when moving a simple scenario to the Cloud, in order to get benefits from the migrationTRANSCRIPT
#wpcit12 @vflorusso
Windows Azure: Architetture e
Ottimizzazione dei Costi nell'era
del Cloud
Vito Flavio
Lorusso
@vflorusso
#wpcit12 @vflorusso
Agenda
Princìpi delle architetture nel Cloud
Da on premise … al cloud
10’
50’
Domande e risposte 15’
#wpcit12 @vflorusso
Obiettivi e Takeaways
+ Familiarità con gli oggetti di WA
- Paura di «prevedere» i costi
+ Familiarità con modelli di Business SaaS
- Fiducia «cieca» nell’infallibilità del Cloud
#wpcit12 @vflorusso
Princìpi delle Architetture nel Cloud
• Non affidarsi allo stato di una risorsa
• Disegnare un’architettura pensando ai costi
• Definire il proprio «SLA»
– Individuare i punti «deboli»
– Stabilire processi «automatici» per rimediare al
«cedimento dei punti deboli»
– Uno «SLA» maggiore richiede «costi» maggiori
#wpcit12 @vflorusso
Pensate in «GRANDE»
vs
#wpcit12 @vflorusso
Migrazione: Web (on premise)
Logica Fisica
View auten
ticazion
e
auto
rizzazion
e
WebAPI
Controller
entità
log
DataBase StorageDB
Directory
file
load balancer
web server
DB Server
Directory
#wpcit12 @vflorusso
Web: HA (on premise)
• Sessione:– RAM e LB in affinity
– Cache (AppFabric o DB)
• Storage– Distributed File System
– File Share
• DB– Cluster
– Mirror
• Network
#wpcit12 @vflorusso
Web: DR (on premise)
• Dischi
– SAN / RAID / Mirror
• Dati
– Backup
• DB
– Manteinance Plan
#wpcit12 @vflorusso
Web: Gestione e ALM (on premise)
• Sistema operativo
– Patching
• Applicativi
– Build management
– Integrated tests
– Logging
• DB
– Patching & recovery
#wpcit12 @vflorusso
Web: gestione carichi (on premise)
• Front-End
– Scale Out
• DB
– Scale up
– …. se non è abbastanza..
– Data partitioning
#wpcit12 @vflorusso
Come cambia tutto questo in
Windows Azure?
#wpcit12 @vflorusso
La via «nota»: IaaS
• Da Macchine Virtuali a Macchine Virtuali su
Windows Azure
– Cosa cambia
• No cluster
• No LB affinity
• DR hardware gestito
– Cosa non cambia
• Gestione
#wpcit12 @vflorusso
IaaS: incremento dei carichi
• Front-End
– Scale Out
• DB
– Scale up (fino a istanza XL)
– Partition
#wpcit12 @vflorusso
Hosting con un nome diverso?
• Le macchine sono comunque allocate ma
non «usate» sempre al massimo
• Il processo di «scale Up» «scale out» e
«patching» è ancora «ampiamente manuale»
• …e i costi?
#wpcit12 @vflorusso
Costi del «porting IaaS»
• On premise
– 2 VM Single Core – Web
– 2 VM Single Core – Directory
– 2 VM Quad Core – DB
– Storage «preallocato»: 400 GB
• Win Azure
– 2 Small – Web – 115.2 $ / mese
– 2 Small – Directory – 115.2 $ / mese
– 2 Large – DB – 460.8 $ / mese
– Storage (LR): 37.21 $ /mese
#wpcit12 @vflorusso
I costi del cloud «incalcolabili»
• Banda e Transazioni? Cosa?
– La banda in upload non si paga
• Ragioniamo in «page views»…
– 100.000 page views al mese
– ad ogni pagina «escono» circa 200k
– 100.000 page views «scatenano» 100x «transazioni sullo storage» (log, db, immagini, etc.)• 20 GB banda out: 1.80$
• 10M transazioni sullo storage: 2$
#wpcit12 @vflorusso
Lezioni
• La banda e le transazioni dello storage sono «prevedibili»
• Una stima per «eccesso» vi mette al sicuro dal rischio
• La banda è un costo «significativo» se usate file di grandi dimensioni
• Le transazioni sullo storage hanno un costo «significativo» in caso di:– Parecchio IO su DB
– Logging «estremo»
#wpcit12 @vflorusso
Stiamo sprecando spazio, risorse…
soldi!
Lezione di ricordare!
#wpcit12 @vflorusso
Domande da farsi…
• C’è un «servizio» che la mia applicazione
può «usare» invece di usare una VM?
• Posso «spegnere» le risorse che non uso
quando non mi servono?
• Ho dei ruoli applicativi che possono
diventare stateless?
#wpcit12 @vflorusso
Usare i servizi: autenticazione
Windows Azure Active Directory
• Autenticazione claim based
• Federazione con il «mio» directory (via ADFS)
• Federazione con altri «authentication
provider»
– 2 Server in meno
– 1M «autenticazioni» al mese: 19.90 $
#wpcit12 @vflorusso
Usare i servizi: cache
Windows Azure Cache
• Può usare parte della RAM delle mie istanze
• Provider per la sessione di Asp.net
• Posso usare un «cluster» di cache usato da più ruoli
– - risorse «sprecate»
– + scalabilità per il carico
– - dipendenza dall’affinità delle richieste
– -1 single point of failure
#wpcit12 @vflorusso
Usare i servizi: storage
Windows Azure Storage
• File system replicato con un NLB davanti
• VHD di un Web/Worker Role
• Sync framework per allineare storage e istanze
• Posso servire le immagini e i video
– - risorse «sprecate»
– - carico di richieste su IIS
– - istanze stateless
#wpcit12 @vflorusso
Usare i servizi: SQL Database
SQL Database
• Database in ambiente condiviso
• Un primary e due secondary per DR
• Backup gestito da MS per DR (5 min / 14 gg)
• Scale out «estremo» per gestire i carichi
– - 2 server da configurare e gestire
– + logiche di retry
– + ottimizzazione delle query
#wpcit12 @vflorusso
Architettura in PaaS
Web Role
WA Cache
Local Storage
(stateless)
Windows Server Image
Service Package
WA Blob Storage
Immagini
Log
WA Diagnostics
Sync
WA SQL Database
Database
Backup
WAActive
Directory
#wpcit12 @vflorusso
Cosa cambia?
• Ciclo di vita del software
• Gestione del failure sui Web Role
• Backup «applicativi» del DB
StagingProduzione
Web Role (v1) Web Role (v2)
WA SQLDatabase
Storage
*.bacpac
*.cspkg
Team Foundation
Service
build
deploy
#wpcit12 @vflorusso
… e separare i workload
• Il webrole non dovrebbe gestire operazioni
long running!
• Long running?
Web role Worker RoleQueue
#wpcit12 @vflorusso
Costi «IaaS» vs «PaaS»
• Win Azure (IaaS)– 2 Small – Web – 115.2 $ / mese
– 2 Small – Directory – 115.2 $ / mese
– 2 Large – DB – 460.8 $ / mese
– Storage (LR): 37.21 $ /mese
• Win Azure (PaaS)– 2 Small – Web Role – 180$ /mese
– AD 1M transazioni – 19.90$
– DB 50 GB 125.88$
– Storage (LR): al max 37.21 $ /mese
Comune
• 20 GB banda out: 1.8 $
• 10 M Transazioni storage: 2 $
La soluzione in PaaS costa circa la META’ di quella in IaaS
#wpcit12 @vflorusso
Domande da farsi…
• Quali sono gli SLA del mio servizio?
• Ho usato l’automazione?
• Ho pensato a come gestire l’applicazione in
caso di failure di una risorsa?
• So attivare il supporto?
#wpcit12 @vflorusso
Modello di business
• Ho un modello di business SaaS?
• Al crescere dell’utilizzo delle risorse, crescono
gli introiti?
• Ho segmentato i miei clienti?
• Ho differenziato l’offerta?
#wpcit12 @vflorusso
Altre lezioni
• Il vostro tempo è prezioso, sia quando
dovete realizzare sia quando dovete gestire
• Se un servizio vi «toglie» una gestione,
avrete più tempo per migliorare i processi
• Automatizzate, automatizzate,
automatizzate…
#wpcit12 @vflorusso
Q&A