SlideShare a Scribd company logo
Pub/Sub
basics
Mauro Servienti
Architetto @ Particular Software
mauro.servienti@particular.net
@mauroservienti
//github.com/mauroservienti
Evoluzione della specie
• Piccolo software (o POC)
• Successo, crescita e aggiunta di funzionalità
• Il team scala e diventa più grande o distribuito
• Il mantenimento diventa un incubo
• Con sonseguenti alti rischi
Va a finire che parte sempre bene e finisce sempre...
Pub/Sub Basics
Pub/Sub Basics
SOA your solution
Coupling your problem is
SOA Tenets
1. «Boundaries Are Explicit»
2. «Services Are Autonomous»
3. «Services Share Schema and Contract, Not Class»
4. «Service Compatibility Is Based Upon Policy»
Boundaries Are Explicit
• I servizi* interagiscono grazie al passaggio esplicito
di «messaggi» che possono attraversare i confini.
• Attraversare i confini di un servizio può essere costoso.
• Un confine rappresenta la netta separazione tra
l’API pubblica di un servizio e la sua
implementazione interna e privata.
* Nel mondo SOA i servizi sono semplici componenti software non servizi intesi come Servizi per Windows
o Demoni
Pub/Sub Basics
Accoppiamento
• Afferente: relativo a, che conduce verso di se
• Altri componenti dipendono da noi
• Efferente: che porta fuori
• Noi dipendiamo da altri componenti
• Temporale
• Ad esempio RPC
• Spaziale
• deployment, indirizzi, topologia di rete
• Tecnologico
• Protocolli (es. .Net Remoting)
E quindi?
Come disaccoppiare?
Pub/Sub Basics
Messaggi, Comandi ed Eventi
• Messaggi:
• un pezzo di informazione atomica;
• Utilizzati per portare il sistema ad un nuovo stato
consistente;
• Comandi:
• messaggi imperativi;
• diretti verso un destinatario ben preciso;
• Eventi:
• una rappresentazione immutabile del passato;
• Diretti a chiunque sia interessato;
Messaging patterns
Request / Response
• Un messaggio viene inviato ad un destinatario;
• Il destinatario può rispondere;
• Il mittente conosce perfettamente il destinatario:
• Sa dove è;
• Sa cosa mandare;
• Il destinatario:
• Non è tenuto a sapere dove sia il mittente;
• Sa cosa il mittente si aspetta come risposta;
• Abbiamo accoppiamento tra mittente e destinatario;
• Esiste anche Request/Reply
Publish / Subscribe
• Un attore nel sistema agisce su qualche cosa:
• L’attore può pubblicare un evento verso l’intero sistema;
• Colui che pubblica non ha nessun interesse nei confronti di
chi sottoscrive;
• Un altro attore può essere interessato ad uno o più
eventi:
• L`attore sottoscriverà gli eventi di suo interesse;
• Tutta l`intenzione è dal lato di chi sottoscrive:
• Chi sottoscrive conosce chi pubblica, non il contrario;
• Chi pubblica manderà in maniera asincrona una copia
dell’evento a tutti i sottoscrittori;
• C’è meno accoppiamento tra chi pubblica e chi
sottoscrive;
Accoppiamento: il problema?
• In una parola sola: versioning;
• Request / Response: al cambio di uno degli attori è
quasi certamente necessario aggiornare anche
l’altro;
• Publish / Subscribe: chi pubblica può molto
facilmente garantire la retro-compatibilità;
Possiamo declinare tutto
ciò su una UI?
Un esempio con AngularJS

More Related Content

PPTX
SOA, DDD e microservices
PPTX
Single Sign On con IdentityServer
PDF
Angular Rebooted: Components Everywhere
PPTX
On working in Particular
PPTX
Code metrics
PPTX
Keep calm and deploy
PPTX
Il cielo è sempre più azure
PPTX
Services UI composition
SOA, DDD e microservices
Single Sign On con IdentityServer
Angular Rebooted: Components Everywhere
On working in Particular
Code metrics
Keep calm and deploy
Il cielo è sempre più azure
Services UI composition

Viewers also liked (6)

PPTX
Croce e delizia del lavoro remoto
PPTX
Universal app ma universal per davvero
PPTX
THE ROAD TO A SERVICE ORIENTED ARCHITECTURE (SOA)
PPTX
There is a bot for that
PDF
Approccio prestazionale antincendio nelle caserme
PDF
An introduction to MQTT - Pub / Sub for the masses
Croce e delizia del lavoro remoto
Universal app ma universal per davvero
THE ROAD TO A SERVICE ORIENTED ARCHITECTURE (SOA)
There is a bot for that
Approccio prestazionale antincendio nelle caserme
An introduction to MQTT - Pub / Sub for the masses
Ad

Similar to Pub/Sub Basics (20)

PPTX
Introduction to NserviceBus
PDF
Corso di servlet jsp e pattern
PPT
I cataloghi delle biblioteche e il nuovo Web (1)
PPT
Web & Library 2
PPTX
Applicazioni web based
PPTX
Dal requisito all'implementazione @ CD2010
PPTX
Brokering over WCF @ dotNetMarche
PPTX
CQRS ed Event Sourcing su Windows Azure: Applicazioni Distribuite, Scalabilit...
PDF
Sistemi Context-aware: Esercitazione 3
PPTX
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
PPTX
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
PDF
Web services
PDF
Introduzione a node.js
PDF
Introduzione a Node.js
PDF
Publish/Subscribe EDI with Content-Based Routing
PPT
Cefriel Della Valle Web 2.0 And Soa Bif
PPT
8a. Il web 2.0
PPT
Web 2.0 & Library 2.0: un'introduzione
PDF
Comunicazione enterprise oltre il 2.0
Introduction to NserviceBus
Corso di servlet jsp e pattern
I cataloghi delle biblioteche e il nuovo Web (1)
Web & Library 2
Applicazioni web based
Dal requisito all'implementazione @ CD2010
Brokering over WCF @ dotNetMarche
CQRS ed Event Sourcing su Windows Azure: Applicazioni Distribuite, Scalabilit...
Sistemi Context-aware: Esercitazione 3
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
Web services
Introduzione a node.js
Introduzione a Node.js
Publish/Subscribe EDI with Content-Based Routing
Cefriel Della Valle Web 2.0 And Soa Bif
8a. Il web 2.0
Web 2.0 & Library 2.0: un'introduzione
Comunicazione enterprise oltre il 2.0
Ad

More from Mauro Servienti (20)

PPTX
Welcome to the (state) machine @ ExploreDDD 2019
PPTX
Designing a ui for microservices @ .NET Day Switzerland 2019
PPTX
Welcome to the (state) machine @ Xe One Day Enterprise Applications
PPTX
All our aggregates are wrong @ NDC Copenhagen 2019
PPTX
Be like water, my friend @ Agile for Innovation 2019
PPTX
Microservices architecture is it the right choice to design long-living syste...
PPTX
Titles, abstracts, and bio matter... oh my! @ Global Diversity CFP Day 2019
PPTX
Living organizations, particular software @ do IT Better Parma
PPTX
Welcome to the (state) machine @ Crafted Software
PPTX
PO is dead, long live the PO - Italian Agile Day 2018
PPTX
Design a UI for your Microservices @ Do IT Better
PPTX
Microservices and pineapple on pizza what do they have in common - dos and ...
PPTX
All our aggregates are wrong (ExploreDDD 2018)
PPTX
Designing a ui for microservices
PPTX
Po is dead, long live the po
PPTX
Shipping code is not the problem, deciding what to ship it is!
PPTX
GraphQL - Where are you from? Where are you going?
PPTX
Dall'idea al deploy un lungo viaggio che passa per git flow e semver
PPTX
Progettare una UI per i Microservices
PPTX
The road to a Service Oriented Architecture is paved with messages
Welcome to the (state) machine @ ExploreDDD 2019
Designing a ui for microservices @ .NET Day Switzerland 2019
Welcome to the (state) machine @ Xe One Day Enterprise Applications
All our aggregates are wrong @ NDC Copenhagen 2019
Be like water, my friend @ Agile for Innovation 2019
Microservices architecture is it the right choice to design long-living syste...
Titles, abstracts, and bio matter... oh my! @ Global Diversity CFP Day 2019
Living organizations, particular software @ do IT Better Parma
Welcome to the (state) machine @ Crafted Software
PO is dead, long live the PO - Italian Agile Day 2018
Design a UI for your Microservices @ Do IT Better
Microservices and pineapple on pizza what do they have in common - dos and ...
All our aggregates are wrong (ExploreDDD 2018)
Designing a ui for microservices
Po is dead, long live the po
Shipping code is not the problem, deciding what to ship it is!
GraphQL - Where are you from? Where are you going?
Dall'idea al deploy un lungo viaggio che passa per git flow e semver
Progettare una UI per i Microservices
The road to a Service Oriented Architecture is paved with messages

Pub/Sub Basics

  • 2. Mauro Servienti Architetto @ Particular Software mauro.servienti@particular.net @mauroservienti //github.com/mauroservienti
  • 3. Evoluzione della specie • Piccolo software (o POC) • Successo, crescita e aggiunta di funzionalità • Il team scala e diventa più grande o distribuito • Il mantenimento diventa un incubo • Con sonseguenti alti rischi Va a finire che parte sempre bene e finisce sempre...
  • 6. SOA your solution Coupling your problem is
  • 7. SOA Tenets 1. «Boundaries Are Explicit» 2. «Services Are Autonomous» 3. «Services Share Schema and Contract, Not Class» 4. «Service Compatibility Is Based Upon Policy»
  • 8. Boundaries Are Explicit • I servizi* interagiscono grazie al passaggio esplicito di «messaggi» che possono attraversare i confini. • Attraversare i confini di un servizio può essere costoso. • Un confine rappresenta la netta separazione tra l’API pubblica di un servizio e la sua implementazione interna e privata. * Nel mondo SOA i servizi sono semplici componenti software non servizi intesi come Servizi per Windows o Demoni
  • 10. Accoppiamento • Afferente: relativo a, che conduce verso di se • Altri componenti dipendono da noi • Efferente: che porta fuori • Noi dipendiamo da altri componenti • Temporale • Ad esempio RPC • Spaziale • deployment, indirizzi, topologia di rete • Tecnologico • Protocolli (es. .Net Remoting)
  • 13. Messaggi, Comandi ed Eventi • Messaggi: • un pezzo di informazione atomica; • Utilizzati per portare il sistema ad un nuovo stato consistente; • Comandi: • messaggi imperativi; • diretti verso un destinatario ben preciso; • Eventi: • una rappresentazione immutabile del passato; • Diretti a chiunque sia interessato;
  • 15. Request / Response • Un messaggio viene inviato ad un destinatario; • Il destinatario può rispondere; • Il mittente conosce perfettamente il destinatario: • Sa dove è; • Sa cosa mandare; • Il destinatario: • Non è tenuto a sapere dove sia il mittente; • Sa cosa il mittente si aspetta come risposta; • Abbiamo accoppiamento tra mittente e destinatario; • Esiste anche Request/Reply
  • 16. Publish / Subscribe • Un attore nel sistema agisce su qualche cosa: • L’attore può pubblicare un evento verso l’intero sistema; • Colui che pubblica non ha nessun interesse nei confronti di chi sottoscrive; • Un altro attore può essere interessato ad uno o più eventi: • L`attore sottoscriverà gli eventi di suo interesse; • Tutta l`intenzione è dal lato di chi sottoscrive: • Chi sottoscrive conosce chi pubblica, non il contrario; • Chi pubblica manderà in maniera asincrona una copia dell’evento a tutti i sottoscrittori; • C’è meno accoppiamento tra chi pubblica e chi sottoscrive;
  • 17. Accoppiamento: il problema? • In una parola sola: versioning; • Request / Response: al cambio di uno degli attori è quasi certamente necessario aggiornare anche l’altro; • Publish / Subscribe: chi pubblica può molto facilmente garantire la retro-compatibilità;
  • 18. Possiamo declinare tutto ciò su una UI? Un esempio con AngularJS