how to swing a service bus like you mean it

Post on 23-Feb-2016

33 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

How to Swing a Service Bus Like You Mean It. SOA with NServiceBus. Jim Pelletier @pjimmy mail@thejimmyp.com. 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

How to Swing a Service Bus Like You Mean It

SOA with NServiceBus

Jim Pelletier@pjimmymail@thejimmyp.com

What is NServiceBus?

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

opposed to RPC Web Services

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

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

App

Messaging with Queues

App

SendQueueQueue

Receive

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

Tx

App

Messaging with Transactional Queues

Tx

App

SendQueueQueue

Receive

Rollback

Makes robust applications simple to implement

Save or UpdateRollback

Tx

App

Messaging with Durable Queues = Store & Forward

Tx

App

SendQueueQueue

Receive

Provides an alternative and elegant solution to availability & data loss

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

Publisher

Subscriber

Subscribe

Subscriber

Subscriber

Subscriber

Subscriber

Publisher

Subscriber

Subscriber

Subscriber

Subscriber

Subscriberabcdefgh

abcdefgh

abcdefgh

abcdefgh

abcdefgh

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

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

Modeling with MessagesCommand

Service

Service

Service

Service

Events

Events

Modeling with commands & eventsUpdate Customer

Customer Service

Address Service

Validation Service

Transaction Service

Customer Updated

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

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

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

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

What else is a service?

• Services are autonomous

Decoupling with a Message Schema

Service A

Mgs Schema A

Service B

Mgs Schema B

Bus

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).

Code Demo – CrazyJimsSOA

• Composing a UI from many logically distinct components

Layout & Branding Service

MVC Controllers

HTML + JavaScript

Catalogue Service

MVC Controllers

Pricing Service Ordering Service

MVC Controllers

MVC Controllers

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

#WIN like this…

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

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

Questions?

How to Swing a Service Bus Like You Mean It

SOA with NServiceBus

Jim Pelletier@pjimmymail@thejimmyp.com

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

AC – Business Logic

AC -Persistent View Model Store

What is CQRS?

UI

Command Handlers

View Model Updaters

CommandsEv

ents

Queries

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

top related