SlideShare uma empresa Scribd logo
1 de 52
Baixar para ler offline
CQRS ed Event Sourcing
  su Windows Azure
   Applicazioni Distribuite, Scalabilità e Security
…oh my god… <cit.>

Alessandro Melchiori                      Mauro Servienti
CodicePlastico                            Managed Designs
Architect & Partner                       Technical Advisor & Partner


alessandro.melchiori@codiceplastico.com   mauro.servienti@manageddesigns.it
//blog.codiceplastico.com/melkio          //milestone.topics.it
                                          //blogs.ugidotnet.org/topics


@amelchiori                               @mauroservienti
Introduzione a Windows
         Azure
       …due parole…due..
Che cosa è
PaaS vs. IaaS
The big challenge
Boot

IaaS                                                   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
Update

IaaS                                    PaaS
• Repeat items as above, per instance   • “Update Instances”
• Get instances working together
Scale

IaaS                                                  PaaS
• Do as install for new instances                     • Add instance(s)
• Reconfigure app servers, load balancers, DB, etc.
• Ensure consistent stacks
• Get instances working together
Scalabilità, Scalabilità…
        …e ancora scalabilità
«orizzontale»
…is the word…
Tightly Coupled




Store Front End   Shipping Service
Tightly Coupled




Store Front End   Shipping Service
Loosely Coupled




Store Front End   Order Queue   Shipping Service
Loosely Coupled




Store Front End   Order Queue   Shipping Service
Loosely Coupled




Store Front End   Order Queue   Shipping Service
Loosely Coupled




Store Front End   Order Queue   Shipping Service
ma...questa cosa non mi è nuova...
• In «domain driven design» abbiamo dei concetti paralleli
   • Bounded context
   • Domain events
Le funzionalità erogate
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
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;
Lock-in…è un problema?
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;
Visual Studio: Windows Azure
SDK
Breve corso di sopravvivenza all’emulatore…
Demo
Worker Role, Web Role, l’emulatore e i tool
I dialetti del ServiceBus
        scalare comunicando
Service Bus queue
Service Bus topic

                    Subs
Perché la comunicazione è un
problema…
Topologia di un data-center
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;
Perché la comunicazione è un
problema…
Disponibilità dei servizi
Messaggi, messaggi e
messaggi
Il postino alla fine è sempre li a rompere…
Ale/mauro
• Introduzione al concetto di messaggistica;
• Che cosa è un broker
Tutto è asincrono
Un cambio radicale a partire dalla UX
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;
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;
Gestione delle sicurezza
in un sistema distribuito
        Windows Azure ACS
Why?
Pecccchè…?
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;
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;
la federazione
It’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
                                                               nameidentifier
Non è un problema nostro




                                 Trusted
                                 3rd party
                                    STS
                                              User
                                              Store
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/consulenti);
   • «Esterni» con account Google/Facebook/LiveID;
La realtà…federata
                                              App                    Backend           Profiles
                                                                                            nameidentifier
Non è un problema nostro




                                                       Trusted
                                                         ACS




                                          Custom FBA             LiveID

                           Active Directory                               Google Account      Facebook
Azure ACS
Power to you…
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;
Lo scenario
               Unpacked info




         App                   Backend                             Profiles
                                                                        nameidentifier




                                         STS Security Info/Token
               Trusted
                 ACS



               Some STS
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;
• ….
Architettura di un’applicazione
Tutto bello ma «facce vedè»…
Demo

Mais conteúdo relacionado

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

Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010Mauro Servienti
 
Microsoft Azure per l'IT Pro
Microsoft Azure per l'IT ProMicrosoft Azure per l'IT Pro
Microsoft Azure per l'IT ProMarco Parenzan
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Whymca
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDLuca Masini
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoAndrea Dottor
 
Brokering over WCF @ dotNetMarche
Brokering over WCF @ dotNetMarcheBrokering over WCF @ dotNetMarche
Brokering over WCF @ dotNetMarcheMauro Servienti
 
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...Daniele Mondello
 
Be simple presentazione istituzionale
Be simple   presentazione istituzionaleBe simple   presentazione istituzionale
Be simple presentazione istituzionalegabrielesannicandro
 
Win05 accesso ai dati in win 8
Win05   accesso ai dati in win 8Win05   accesso ai dati in win 8
Win05 accesso ai dati in win 8DotNetCampus
 
I Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaI Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaSoluzioni Futura
 
I Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaI Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaValerio Versace
 
Tesi - L'autenticazione nel cloud computing
Tesi - L'autenticazione nel cloud computingTesi - L'autenticazione nel cloud computing
Tesi - L'autenticazione nel cloud computingfrancesco pesare
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)DotNetMarche
 
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...azuredayit
 
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...Codemotion
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSopencityplatform
 
PHP Serverless in ambiente AWS
PHP Serverless in ambiente AWSPHP Serverless in ambiente AWS
PHP Serverless in ambiente AWSGianfranco Castro
 
Sys03 microsoft azure for it pro
Sys03   microsoft azure for it proSys03   microsoft azure for it pro
Sys03 microsoft azure for it proDotNetCampus
 

Semelhante a CQRS ed Event Sourcing su Windows Azure: Applicazioni Distribuite, Scalabilità e Security (20)

Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010
 
Microsoft Azure per l'IT Pro
Microsoft Azure per l'IT ProMicrosoft Azure per l'IT Pro
Microsoft Azure per l'IT Pro
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppo
 
Brokering over WCF @ dotNetMarche
Brokering over WCF @ dotNetMarcheBrokering over WCF @ dotNetMarche
Brokering over WCF @ dotNetMarche
 
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
 
Be simple presentazione istituzionale
Be simple   presentazione istituzionaleBe simple   presentazione istituzionale
Be simple presentazione istituzionale
 
Win05 accesso ai dati in win 8
Win05   accesso ai dati in win 8Win05   accesso ai dati in win 8
Win05 accesso ai dati in win 8
 
I Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaI Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni Futura
 
I Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaI Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni Futura
 
Tesi - L'autenticazione nel cloud computing
Tesi - L'autenticazione nel cloud computingTesi - L'autenticazione nel cloud computing
Tesi - L'autenticazione nel cloud computing
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)
 
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
 
Power bi
Power biPower bi
Power bi
 
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaS
 
PHP Serverless in ambiente AWS
PHP Serverless in ambiente AWSPHP Serverless in ambiente AWS
PHP Serverless in ambiente AWS
 
AAI
AAI AAI
AAI
 
Sys03 microsoft azure for it pro
Sys03   microsoft azure for it proSys03   microsoft azure for it pro
Sys03 microsoft azure for it pro
 

Mais de DotNetMarche

Creare una community dal basso ed arrivare ad un'azienda milionaria - Emanue...
Creare una community dal basso ed arrivare ad un'azienda milionaria  - Emanue...Creare una community dal basso ed arrivare ad un'azienda milionaria  - Emanue...
Creare una community dal basso ed arrivare ad un'azienda milionaria - Emanue...DotNetMarche
 
Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...
Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...
Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...DotNetMarche
 
UI Composition - Prism
UI Composition - PrismUI Composition - Prism
UI Composition - PrismDotNetMarche
 
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModelDotNetMarche
 
Refactoring ASP.NET and beyond
Refactoring ASP.NET and beyondRefactoring ASP.NET and beyond
Refactoring ASP.NET and beyondDotNetMarche
 
Refactoring 2TheMax (con ReSharper)
Refactoring 2TheMax (con ReSharper)Refactoring 2TheMax (con ReSharper)
Refactoring 2TheMax (con ReSharper)DotNetMarche
 
Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in ActionDotNetMarche
 
Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in ActionDotNetMarche
 
Soluzioni Microsoft per l'e-Learning
Soluzioni Microsoft per l'e-LearningSoluzioni Microsoft per l'e-Learning
Soluzioni Microsoft per l'e-LearningDotNetMarche
 
Installing and Administering MOSS
Installing and Administering MOSSInstalling and Administering MOSS
Installing and Administering MOSSDotNetMarche
 
Microsoft SharePoint Server 2007 Technical Overview
Microsoft SharePoint Server 2007 Technical OverviewMicrosoft SharePoint Server 2007 Technical Overview
Microsoft SharePoint Server 2007 Technical OverviewDotNetMarche
 
[Hands on] testing asp.net mvc
[Hands on] testing asp.net mvc[Hands on] testing asp.net mvc
[Hands on] testing asp.net mvcDotNetMarche
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC FrameworkDotNetMarche
 
Introduzione al Testing
Introduzione al TestingIntroduzione al Testing
Introduzione al TestingDotNetMarche
 
Introduzione a CardSpace
Introduzione a CardSpaceIntroduzione a CardSpace
Introduzione a CardSpaceDotNetMarche
 

Mais de DotNetMarche (20)

Creare una community dal basso ed arrivare ad un'azienda milionaria - Emanue...
Creare una community dal basso ed arrivare ad un'azienda milionaria  - Emanue...Creare una community dal basso ed arrivare ad un'azienda milionaria  - Emanue...
Creare una community dal basso ed arrivare ad un'azienda milionaria - Emanue...
 
Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...
Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...
Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...
 
WPF 4 fun
WPF 4 funWPF 4 fun
WPF 4 fun
 
UI Composition - Prism
UI Composition - PrismUI Composition - Prism
UI Composition - Prism
 
UI Composition
UI CompositionUI Composition
UI Composition
 
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModel
 
WPF basics
WPF basicsWPF basics
WPF basics
 
Refactoring ASP.NET and beyond
Refactoring ASP.NET and beyondRefactoring ASP.NET and beyond
Refactoring ASP.NET and beyond
 
Refactoring 2TheMax (con ReSharper)
Refactoring 2TheMax (con ReSharper)Refactoring 2TheMax (con ReSharper)
Refactoring 2TheMax (con ReSharper)
 
jQuery Loves You
jQuery Loves YoujQuery Loves You
jQuery Loves You
 
Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in Action
 
Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in Action
 
Open XML & MOSS
Open XML & MOSSOpen XML & MOSS
Open XML & MOSS
 
Soluzioni Microsoft per l'e-Learning
Soluzioni Microsoft per l'e-LearningSoluzioni Microsoft per l'e-Learning
Soluzioni Microsoft per l'e-Learning
 
Installing and Administering MOSS
Installing and Administering MOSSInstalling and Administering MOSS
Installing and Administering MOSS
 
Microsoft SharePoint Server 2007 Technical Overview
Microsoft SharePoint Server 2007 Technical OverviewMicrosoft SharePoint Server 2007 Technical Overview
Microsoft SharePoint Server 2007 Technical Overview
 
[Hands on] testing asp.net mvc
[Hands on] testing asp.net mvc[Hands on] testing asp.net mvc
[Hands on] testing asp.net mvc
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
 
Introduzione al Testing
Introduzione al TestingIntroduzione al Testing
Introduzione al Testing
 
Introduzione a CardSpace
Introduzione a CardSpaceIntroduzione a CardSpace
Introduzione a CardSpace
 

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

  • 1. CQRS ed Event Sourcing su Windows Azure Applicazioni Distribuite, Scalabilità e Security
  • 2. …oh my god… <cit.> Alessandro Melchiori Mauro Servienti CodicePlastico Managed Designs Architect & Partner Technical Advisor & Partner alessandro.melchiori@codiceplastico.com mauro.servienti@manageddesigns.it //blog.codiceplastico.com/melkio //milestone.topics.it //blogs.ugidotnet.org/topics @amelchiori @mauroservienti
  • 3. Introduzione a Windows Azure …due parole…due..
  • 5.
  • 6. PaaS vs. IaaS The big challenge
  • 7. Boot IaaS 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
  • 8. Update IaaS PaaS • Repeat items as above, per instance • “Update Instances” • Get instances working together
  • 9. Scale IaaS PaaS • Do as install for new instances • Add instance(s) • Reconfigure app servers, load balancers, DB, etc. • Ensure consistent stacks • Get instances working together
  • 10. Scalabilità, Scalabilità… …e ancora scalabilità
  • 12. Tightly Coupled Store Front End Shipping Service
  • 13. Tightly Coupled Store Front End Shipping Service
  • 14. Loosely Coupled Store Front End Order Queue Shipping Service
  • 15. Loosely Coupled Store Front End Order Queue Shipping Service
  • 16. Loosely Coupled Store Front End Order Queue Shipping Service
  • 17. Loosely Coupled Store Front End Order Queue Shipping Service
  • 18. ma...questa cosa non mi è nuova... • In «domain driven design» abbiamo dei concetti paralleli • Bounded context • Domain events
  • 20. 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
  • 21. 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;
  • 23. 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;
  • 24. Visual Studio: Windows Azure SDK Breve corso di sopravvivenza all’emulatore…
  • 25. Demo Worker Role, Web Role, l’emulatore e i tool
  • 26. I dialetti del ServiceBus scalare comunicando
  • 29. Perché la comunicazione è un problema… Topologia di un data-center
  • 30. 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;
  • 31. Perché la comunicazione è un problema… Disponibilità dei servizi
  • 32. Messaggi, messaggi e messaggi Il postino alla fine è sempre li a rompere…
  • 33. Ale/mauro • Introduzione al concetto di messaggistica; • Che cosa è un broker
  • 34. Tutto è asincrono Un cambio radicale a partire dalla UX
  • 35. 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;
  • 36. 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;
  • 37. Gestione delle sicurezza in un sistema distribuito Windows Azure ACS
  • 39. 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;
  • 40. 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;
  • 41. la federazione It’s a long way to the top if you wanna rock ‘n’ roll…
  • 42. L’abitudine… App Backend/FBA User Store Profiles
  • 43. La possibilità…federata App Backend/FBA Profiles nameidentifier Non è un problema nostro Trusted 3rd party STS User Store
  • 44. Sembra più complesso…ma… • L’STS (security token service) non è un problema nostro; • Noi ci limitiamo alla fiducia;
  • 45. Il cattivo :-) • …se avessimo questi requisiti? • «Dipendenti» con account AD; • «Interni» con account FBA (e.g. agenti/consulenti); • «Esterni» con account Google/Facebook/LiveID;
  • 46. La realtà…federata App Backend Profiles nameidentifier Non è un problema nostro Trusted ACS Custom FBA LiveID Active Directory Google Account Facebook
  • 48. 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;
  • 49. Lo scenario Unpacked info App Backend Profiles nameidentifier STS Security Info/Token Trusted ACS Some STS
  • 50. 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; • ….
  • 51. Architettura di un’applicazione Tutto bello ma «facce vedè»…
  • 52. Demo