how to swing a service bus like you mean it

32
How to Swing a Service Bus Like You Mean It SOA with NServiceBus Jim Pelletier @pjimmy [email protected]

Upload: darius

Post on 23-Feb-2016

33 views

Category:

Documents


0 download

DESCRIPTION

How to Swing a Service Bus Like You Mean It. SOA with NServiceBus. Jim Pelletier @pjimmy [email protected]. What is NServiceBus?. Asynchronous Messaging Framework Durable messaging with MSMQ Moderately Opinionated Event Driven Autonomous Services as opposed to RPC Web Services. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: How  to Swing a Service Bus Like You Mean It

How to Swing a Service Bus Like You Mean It

SOA with NServiceBus

Jim Pelletier@[email protected]

Page 2: How  to Swing a Service Bus Like You Mean It

What is NServiceBus?

• Asynchronous Messaging Framework• Durable messaging with MSMQ• Moderately Opinionated• Event Driven Autonomous Services as

opposed to RPC Web Services

Page 3: How  to Swing a Service Bus Like You Mean It

Yeah? So… What about it?

SOA Provides:• Freedom of design and implementation • Unprecedented flexibility for growth & change• Waste nearly no code on pure technical concerns

SOA with Messaging VS.

N-Tier with RPC

Page 4: How  to Swing a Service Bus Like You Mean It

Outline & Disclaimer• Just presenting a different possibility

• Mainly talking and pictures, with a little code:– Intro to Messaging with NServiceBus– Messaging Patterns– Modeling using Messages– Autonomous Services, Boundaries and Decoupling via Messaging– Architecture Overview– SOA Composite Application Demo

Page 5: How  to Swing a Service Bus Like You Mean It

App

Messaging with Queues

App

SendQueueQueue

Receive

Makes for inherently asynchronous systems able to deal with spikes in load

Page 6: How  to Swing a Service Bus Like You Mean It

Tx

App

Messaging with Transactional Queues

Tx

App

SendQueueQueue

Receive

Rollback

Makes robust applications simple to implement

Save or UpdateRollback

Page 7: How  to Swing a Service Bus Like You Mean It

Tx

App

Messaging with Durable Queues = Store & Forward

Tx

App

SendQueueQueue

Receive

Provides an alternative and elegant solution to availability & data loss

Page 8: How  to Swing a Service Bus Like You Mean It

Tx

App

Durable Transactional Queues = Fire & Forget

Tx

App

SendQueueQueue

Receive

Which we leverage thru NServiceBus to build much simpler, more flexible and scalable solutions

Page 9: How  to Swing a Service Bus Like You Mean It

Publisher

Subscriber

Subscribe

Subscriber

Subscriber

Subscriber

Subscriber

Page 10: How  to Swing a Service Bus Like You Mean It

Publisher

Subscriber

Subscriber

Subscriber

Subscriber

Subscriberabcdefgh

abcdefgh

abcdefgh

abcdefgh

abcdefgh

Page 11: How  to Swing a Service Bus Like You Mean It

Decisions Based on Past EventsPlace Order

Order Service

Billing Service

Order Placed

Customer Billed

Set Max Debit For Customer

Current Debt > Max Debt

Customer ID

Max DebtCurrent Balance

Page 12: How  to Swing a Service Bus Like You Mean It

Billing Service

Web UIWeb UI

UI

Code Demo: Stock Trading Website

IBM

+7.5

6IN

TC +0

.34

Ordering Service

Stock Ticker Service

GOOG

+0

.34 APPL

-2.3

MSF

T -5.

6

Place OrderO

rder

Ac c

epte

d

Customer Billed

Page 13: How  to Swing a Service Bus Like You Mean It

Modeling with MessagesCommand

Service

Service

Service

Service

Events

Events

Page 14: How  to Swing a Service Bus Like You Mean It

Modeling with commands & eventsUpdate Customer

Customer Service

Address Service

Validation Service

Transaction Service

Customer Updated

Page 15: How  to Swing a Service Bus Like You Mean It

Modeling with commands & eventsPlace Order

Order Service

Shipping Service

Billing Service

Customer Care Service

Order Placed

Customer Notified of Order Placed

Order Billed

Order Shipped

Page 16: How  to Swing a Service Bus Like You Mean It

Sales Service

Polymorphism, BC’s and DDD oh my!

Orders Service

Handle Place Order

Place Customers First Order

Place Order

Send Customer Catalogue & Order Forms

New Lead Identified

Order Accepted

Handle Place Order

Handle First

Order

Order Accepted

Page 17: How  to Swing a Service Bus Like You Mean It

What is a service?

Some code which exists exclusively as part of a service providing the sole source of a

given business capability to an organization

Page 18: How  to Swing a Service Bus Like You Mean It

What is a service?

It is made up of:

An Autonomous ServiceMVC Controllers &

ViewsXAML &

Presenters

Message Handlers

Business Logic

Some Persistent Store

• No “Orchestration” code• No “Management” code• No Transformation code• No Data Access code• No Data “Munging” code• No Error Handling• No Unreachable code • No unintended or unused code paths• No code except business abstractions

Page 19: How  to Swing a Service Bus Like You Mean It

What else is a service?

• Services are autonomous

Page 20: How  to Swing a Service Bus Like You Mean It

Decoupling with a Message Schema

Service A

Mgs Schema A

Service B

Mgs Schema B

Bus

Page 21: How  to Swing a Service Bus Like You Mean It

Composed application

Billing Service

Order Service

Pricing Service

Product Catalogue

Service

Layout & Branding Service

User Application Executable

Bus

NSB Host

Exec(s).

NSB HostExec(s).

NSB Host

Exec(s).

NSB Host

Exec(s).

Page 22: How  to Swing a Service Bus Like You Mean It

Code Demo – CrazyJimsSOA

• Composing a UI from many logically distinct components

Page 23: How  to Swing a Service Bus Like You Mean It

Layout & Branding Service

MVC Controllers

HTML + JavaScript

Catalogue Service

MVC Controllers

Pricing Service Ordering Service

MVC Controllers

MVC Controllers

Page 24: How  to Swing a Service Bus Like You Mean It

Catalogue Service

MVC Controllers

Pricing Service Ordering Service

Layout & Branding Service

MVC Controllers

MVC Controllers

MVC Controllers

{JSON} + <jTemplate \>

{JSON} + <jTemplate \>

{JSON} + <jTemplate \>

HTML + JavaScript

Page 25: How  to Swing a Service Bus Like You Mean It

#WIN like this…

• Freedom of design and implementation • Unprecedented flexibility for growth & change• Waste nearly no code on pure technical concerns

Page 26: How  to Swing a Service Bus Like You Mean It

Thanks & Resources• Thanks to @UdiDahan checkout his ADSD course! - http

://www.udidahan.com/training/#Advanced_Distributed_System_Design

• NServiceBus Website (Documentation & Community Sections are great) – http://www.nservicebus.com/

• Distributed Podcast - http://distributedpodcast.com/• NServiceBus Mailing List - http://tech.groups.yahoo.com/group/nservicebus/• Other Mailing Lists –

– http://groups.google.com/group/dddcqrs?pli=1– http://tech.groups.yahoo.com/group/service-orientated-architecture/– http://tech.groups.yahoo.com/group/domaindrivendesign/messages

Page 27: How  to Swing a Service Bus Like You Mean It

Questions?

Page 28: How  to Swing a Service Bus Like You Mean It

How to Swing a Service Bus Like You Mean It

SOA with NServiceBus

Jim Pelletier@[email protected]

Page 29: How  to Swing a Service Bus Like You Mean It
Page 30: How  to Swing a Service Bus Like You Mean It

AC’s, BC’s and DDD oh my!

Order Service

Order Processing running in NServiceBus.Host.exe

Order Placement UI running in a web site

Page 31: How  to Swing a Service Bus Like You Mean It

AC – Business Logic

AC -Persistent View Model Store

What is CQRS?

UI

Command Handlers

View Model Updaters

CommandsEv

ents

Queries

Page 32: How  to Swing a Service Bus Like You Mean It

Where does CQRS fit in the picture?

Billing Service

Order Service

Pricing Service

Product Service

Layout & Branding Service

User Application Executable

Bus

NSB Host

Exec(s).

NSB HostExec(s).

NSB Host

Exec(s).

NSB Host

Exec(s).

Comm

ands Even

ts

Comm

ands