When the list moves into the bus
The same message bus twice: as it was meant to work, and after a few successful years.
THE BUS AS INTENDED
Everyone knows topics on the bus. Nobody knows each other.
MESSAGE BUS
Order placed
the bus keeps no list:
it never knows who listens
Parcel sent
Order workflow
announces on the bus:
Order placed
has to know, by name:
no other service
Shipping
announces on the bus:
Parcel sent
Paymentlistens: Order placed
Inventorylistens: Order placed
Loyaltylistens: Order placedNEW
Emaillistens: Parcel sent
not touched
0
services the bus has to know by name
It carries topics. Who listens is not its business.
Order workflow and Shipping announce, the others listen.The bus keeps no list and knows no service by name.
Its catch: nobody can see the whole process. No place sayswhat happens after an order, and in which order.
Here each service still decides for itself what a topicmeans for it. The bus only carries.
Loyalty joins and starts listening. Nobody is touched,and nobody has to be asked.
Easy to join, hard to oversee: the process exists onlyas the sum of what every listener does.
Everyone knows topics. The bus keeps no list.
STRENGTHA newcomer plugs in without anyonebeing touched.
WEAKNESSNobody can see who depends on a topic. Changingwhat it means can break listeners nobody knew about.
THE SAME BUS, A FEW YEARS ON
The list of who has to know whom has moved into the bus.
MESSAGE BUS
Order placed
the bus keeps no list:
it never knows who listens
Parcel sent
has to know, by name:
Order placed:Payment, then Inventory
Orders over 500:Inventory, then Payment
Parcel sent: Email
+ Order placed, also:Loyalty, after Payment
Order workflow
announces on the bus:
Order placed
has to know, by name:
no other service
Shipping
announces on the bus:
Parcel sent
Paymentlistens: Order placedcalled by the bus
Inventorylistens: Order placedcalled by the bus
Loyaltycalled by the busNEW
Emaillistens: Parcel sentcalled by the bus
Bus teamowns the list
the change waits here
must be changed
0
2
3
4
services the bus has to know by name
It carries topics. Who listens is not its business.
Who gets what, in which order, under which condition.
Year one, the same bus. But nobody can see the wholeprocess, and somebody wants it in one place.
"Just this once, the bus can route it." The first line goesinto the bus, where everything passes anyway.
It works, so the rest follow. The bus now has to know everyservice by name, and a bus team owns the list.
Loyalty joins. The bus gets a new line: it must be changed,and that change waits for the bus team.
A few years on. The whole process stands in one place, andevery change to it waits for a team that owns no workflow.
The list lives in the bus. A bus team owns it.
STRENGTHOne place finally shows the whole process:who gets what, in which order.
WEAKNESSEvery change to any workflow waits for the teamin the middle, which owns none of the workflows.
orange = "has to know", and the list that holds it
a connection
cyan = shared infrastructure