Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
CQRS ed Event Sourcing  su Windows Azure   Applicazioni Distribuite, Scalabilità e Security
…oh my god… <cit.>Alessandro Melchiori                      Mauro ServientiCodicePlastico                            Manag...
Introduzione a Windows         Azure       …due parole…due..
Che cosa è
PaaS vs. IaaSThe big challenge
BootIaaS                                                   PaaS• Build app                                            • Bu...
UpdateIaaS                                    PaaS• Repeat items as above, per instance   • “Update Instances”• Get instan...
ScaleIaaS                                                  PaaS• Do as install for new instances                     • Add...
Scalabilità, Scalabilità…        …e ancora scalabilità
«orizzontale»…is the word…
Tightly CoupledStore Front End   Shipping Service
Tightly CoupledStore Front End   Shipping Service
Loosely CoupledStore Front End   Order Queue   Shipping Service
Loosely CoupledStore Front End   Order Queue   Shipping Service
Loosely CoupledStore Front End   Order Queue   Shipping Service
Loosely CoupledStore Front End   Order Queue   Shipping Service
ma...questa cosa non mi è nuova...• In «domain driven design» abbiamo dei concetti paralleli   • Bounded context   • Domai...
Le funzionalità erogate
Quello di cui parleremo oggi…• Service bus:   • Notifcation Hubs;• Worker Role;• Web Role;• Windows Azure ACS;È importante...
Service Bus• È un «message broker»;• Altamente scalabile e performante;• Può essere sfruttato anche da applicazioni on pre...
Lock-in…è un problema?
Lock-in• È vero che se scegliamo come piattaforma Azure poi non possiamo, o  è molto difficile, cambiare?• Quale è il «liv...
Visual Studio: Windows AzureSDKBreve corso di sopravvivenza all’emulatore…
DemoWorker Role, Web Role, l’emulatore e i tool
I dialetti del ServiceBus        scalare comunicando
Service Bus queue
Service Bus topic                    Subs
Perché la comunicazione è unproblema…Topologia di un data-center
I «data center» di Azure• Siamo ospitati in una macchina virtuale, sempre;• Non abbiamo controllo sulla topologia di rete ...
Perché la comunicazione è unproblema…Disponibilità dei servizi
Messaggi, messaggi emessaggiIl postino alla fine è sempre li a rompere…
Ale/mauro• Introduzione al concetto di messaggistica;• Che cosa è un broker
Tutto è asincronoUn cambio radicale a partire dalla UX
Un cambio di paradigma radicale• Siamo abituati troppo, sfruttiamo il «not responding» a nostro  vantaggio, o comunque ci ...
Che cosa viene impattato di più?• User Experience   • L’utente è abituato all’immediate feedback;   • I comandi devono dar...
Gestione delle sicurezzain un sistema distribuito        Windows Azure ACS
Why?Pecccchè…?
Autenticazione• Il 100% delle “app” LOB deve «autenticare»;   •   Gestire le credenziali in modo sicuro;   •   Garantire l...
Ci serve veramente tutto ciò?• Il 100% delle “app” LOB deve «autenticare» sapere chi è l’utente  connesso;   •   Gestire l...
la federazioneIt’s a long way to the top if you wanna rock ‘n’ roll…
L’abitudine…      App      Backend/FBA   User                             Store                                     Profiles
La possibilità…federata                           App               Backend/FBA   Profiles                                ...
Sembra più complesso…ma…• L’STS (security token service) non è un problema nostro;   • Noi ci limitiamo alla fiducia;
Il cattivo :-)• …se avessimo questi requisiti?   • «Dipendenti» con account AD;   • «Interni» con account FBA (e.g. agenti...
La realtà…federata                                              App                    Backend           Profiles         ...
Azure ACSPower to you…
Per che cosa• Autenticazione degli utenti;   • Anche con account diversi dal Microsoft Account;• Integrazione di servizi d...
Lo scenario               Unpacked info         App                   Backend                             Profiles        ...
Come• Configurare il namespace sull’ACS di Azure;• Predisporre un “return url” ad hoc per l’app in grado di spacchettare i...
Architettura di un’applicazioneTutto bello ma «facce vedè»…
Demo
CQRS ed Event Sourcing su Windows Azure: Applicazioni Distribuite, Scalabilità e Security
Upcoming SlideShare
Loading in …5
×

CQRS ed Event Sourcing su Windows Azure: Applicazioni Distribuite, Scalabilità e Security

810 views

Published on

Video del workshop: https://vimeo.com/album/2334363

  • Be the first to comment

  • Be the first to like this

CQRS ed Event Sourcing su Windows Azure: Applicazioni Distribuite, Scalabilità e Security

  1. 1. CQRS ed Event Sourcing su Windows Azure Applicazioni Distribuite, Scalabilità e Security
  2. 2. …oh my god… <cit.>Alessandro Melchiori Mauro ServientiCodicePlastico Managed DesignsArchitect & Partner Technical Advisor & Partneralessandro.melchiori@codiceplastico.com mauro.servienti@manageddesigns.it//blog.codiceplastico.com/melkio //milestone.topics.it //blogs.ugidotnet.org/topics@amelchiori @mauroservienti
  3. 3. Introduzione a Windows Azure …due parole…due..
  4. 4. Che cosa è
  5. 5. PaaS vs. IaaSThe big challenge
  6. 6. BootIaaS PaaS• Build app • Build app• Set up account • Set up PaaS account• For each desired instance: • Click several configuration choices • Install/configure OS • Click “Boot” • Install desired Ruby version, runtime • Install Rails and other libraries/gems • Install/configure app server • Install/configure HTTP server • Install/configure load balancer • Install/configure other components (DB, cache) • Debug integration of stack • Install/configure application on stack• Get instances working together
  7. 7. UpdateIaaS PaaS• Repeat items as above, per instance • “Update Instances”• Get instances working together
  8. 8. ScaleIaaS PaaS• Do as install for new instances • Add instance(s)• Reconfigure app servers, load balancers, DB, etc.• Ensure consistent stacks• Get instances working together
  9. 9. Scalabilità, Scalabilità… …e ancora scalabilità
  10. 10. «orizzontale»…is the word…
  11. 11. Tightly CoupledStore Front End Shipping Service
  12. 12. Tightly CoupledStore Front End Shipping Service
  13. 13. Loosely CoupledStore Front End Order Queue Shipping Service
  14. 14. Loosely CoupledStore Front End Order Queue Shipping Service
  15. 15. Loosely CoupledStore Front End Order Queue Shipping Service
  16. 16. Loosely CoupledStore Front End Order Queue Shipping Service
  17. 17. ma...questa cosa non mi è nuova...• In «domain driven design» abbiamo dei concetti paralleli • Bounded context • Domain events
  18. 18. Le funzionalità erogate
  19. 19. Quello di cui parleremo oggi…• Service bus: • Notifcation Hubs;• Worker Role;• Web Role;• Windows Azure ACS;È importante capire anche cosa sono:• Availability Set• Virtual Network
  20. 20. Service Bus• È un «message broker»;• Altamente scalabile e performante;• Può essere sfruttato anche da applicazioni on premise: • con connettività verso Azure;• Permette il disaccoppiamento totale tra i partecipanti: • A patto che tutti conoscano il postino; • A patto che tutti conoscano, o siano in grado di interpretare, la lingua parlata;
  21. 21. Lock-in…è un problema?
  22. 22. Lock-in• È vero che se scegliamo come piattaforma Azure poi non possiamo, o è molto difficile, cambiare?• Quale è il «livello» di lock-in dei vari servizi? • Web Role -> è un’applicazione MVC, punto; • Worker Role -> l’entry point è strettamente legate ad Azure; • Service Bus -> è un servizio di Azure, ma usando un toolkit, come NServiceBus, è del tutto trasparente; • Tutti: i settings, che però sono facilmente nascondibili dietro qualcosa di rimpiazzabile a caldo; • ACS: non c’è alternativa, ma nulla ci vieta, visto il costo irrisorio, di lasciare quello su Azure;
  23. 23. Visual Studio: Windows AzureSDKBreve corso di sopravvivenza all’emulatore…
  24. 24. DemoWorker Role, Web Role, l’emulatore e i tool
  25. 25. I dialetti del ServiceBus scalare comunicando
  26. 26. Service Bus queue
  27. 27. Service Bus topic Subs
  28. 28. Perché la comunicazione è unproblema…Topologia di un data-center
  29. 29. I «data center» di Azure• Siamo ospitati in una macchina virtuale, sempre;• Non abbiamo controllo sulla topologia di rete in cui siamo deployati, se non in minima parte con: • AvailabilitySet: vogliamo che tutti i nostri servizi siano nello stesso Set; • ha lo scopo di contenere costi e latenza; • Virtual Network: reti virtuali che ci permettono di collegare qualsiasi cosa con qualsiasi cosa a prescindere da dove stia;• Davanti ad ogni servizio ci sono i Load Balancer di Azure, non è quindi detto che i round trip siano concessi;• Risulta quindi estremamente poco probabile che due o più servizi possano comunicare tra loro come lo farebbero on premise dove abbiamo pieno controllo della topologia di rete;
  30. 30. Perché la comunicazione è unproblema…Disponibilità dei servizi
  31. 31. Messaggi, messaggi emessaggiIl postino alla fine è sempre li a rompere…
  32. 32. Ale/mauro• Introduzione al concetto di messaggistica;• Che cosa è un broker
  33. 33. Tutto è asincronoUn cambio radicale a partire dalla UX
  34. 34. Un cambio di paradigma radicale• Siamo abituati troppo, sfruttiamo il «not responding» a nostro vantaggio, o comunque ci aspettiamo che le operazioni siano sempre sincrone;• Introducendo un sistema basato su messaggi tutto diventa inevitabilmente asincrono: • Non sappiamo quando il messaggio arriva; • Non sappiamo neanche se il messaggio arriverà mai;
  35. 35. Che cosa viene impattato di più?• User Experience • L’utente è abituato all’immediate feedback; • I comandi devono dare un ack il più velocemente possibile; • In certi scenari ha molto senso, nonostante la complessità, introdurre della logica client side in stile «Facebook»: • Ti faccio credere che l’ho fatto; • Nella peggiore delle ipotesi fallisco tra un po’;• Workflow (se ci pensiamo ogni cosa è un workflow, mal che vada con solo due stati) • I dati, intese come le «tabelle», non sono più la bibbia; • Ogni step di uno workflow deve basarsi sull’output dello step precedente e la bibbia diventano gli eventi;
  36. 36. Gestione delle sicurezzain un sistema distribuito Windows Azure ACS
  37. 37. Why?Pecccchè…?
  38. 38. Autenticazione• Il 100% delle “app” LOB deve «autenticare»; • Gestire le credenziali in modo sicuro; • Garantire la privacy; • Offrire un sistema per cambiare le credenziali; • Offrire un sistema per recuperare le credenziali; • Offrire un sistema per creare/si un nuovo utente; • Gestire il profilo dell’utente;
  39. 39. Ci serve veramente tutto ciò?• Il 100% delle “app” LOB deve «autenticare» sapere chi è l’utente connesso; • Gestire le credenziali in modo sicuro; • Garantire la privacy; • Offrire un sistema per cambiare le credenziali; • Offrire un sistema per recuperare le credenziali; • Offrire un sistema per creare/si un nuovo utente; • Gestire il profilo dell’utente;
  40. 40. la federazioneIt’s a long way to the top if you wanna rock ‘n’ roll…
  41. 41. L’abitudine… App Backend/FBA User Store Profiles
  42. 42. La possibilità…federata App Backend/FBA Profiles nameidentifierNon è un problema nostro Trusted 3rd party STS User Store
  43. 43. Sembra più complesso…ma…• L’STS (security token service) non è un problema nostro; • Noi ci limitiamo alla fiducia;
  44. 44. Il cattivo :-)• …se avessimo questi requisiti? • «Dipendenti» con account AD; • «Interni» con account FBA (e.g. agenti/consulenti); • «Esterni» con account Google/Facebook/LiveID;
  45. 45. La realtà…federata App Backend Profiles nameidentifierNon è un problema nostro Trusted ACS Custom FBA LiveID Active Directory Google Account Facebook
  46. 46. Azure ACSPower to you…
  47. 47. Per che cosa• Autenticazione degli utenti; • Anche con account diversi dal Microsoft Account;• Integrazione di servizi di terze parti che “comprendono” la lingua dell’ACS;
  48. 48. Lo scenario Unpacked info App Backend Profiles nameidentifier STS Security Info/Token Trusted ACS Some STS
  49. 49. Come• Configurare il namespace sull’ACS di Azure;• Predisporre un “return url” ad hoc per l’app in grado di spacchettare il token;• Recuperare la lista degli Identity Provider;• Far scegliere all’utente il provider da usare;• ….
  50. 50. Architettura di un’applicazioneTutto bello ma «facce vedè»…
  51. 51. Demo

×