We use analytics cookies.We use cookies to analyze site traffic and improve your experience.
Loading...
System Design Masterclass · Microservices Architecture
Free preview: the first part of this 21-part lesson.
Already bought the course? Sign in to read the whole lesson.
this lesson is part of
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design courseread the rest of this lesson in
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design coursein Microservices Architecture
This lesson is part of the full System Design Masterclass. Unlock it along with 769 other lessons for a one-time payment.
One-time payment by card or PayPal
Get Lifetime AccessOne-time payment: UPI, card or netbanking
Get Lifetime Access18 Foundation lessons are free, no payment needed. Try them now
It is easy and good
“It is really nice and good Please join the course”
Here is one ordinary word: order. Below are five sentences I could hear on any Tuesday in an online shop that sells mugs and tea. Each sentence comes from a different team. Read them slowly, one at a time.
Now try to answer a simple question: when is an order finished? Sales says it is finished at "placed". The warehouse says that is where its work starts. Shipping talks about three parcels, while Sales only ever saw one order. Finance can reopen an order that Shipping delivered a week ago. Support keeps it open for a reason nobody else tracks.
Every one of those sentences is true. They do not agree, because the word "order" means a different thing to each team. To Sales it is a priced promise to buy. To the warehouse it is a list of items to pick. To Shipping it is a set of parcels with an address. To Finance it is money owed and money paid. To Support it is a conversation.

Each bubble is a real kind of sentence a team says. Put side by side, they cannot all describe the same thing, because each team means something different by the word order.
Now imagine you are the developer who must build this. The obvious move is one database table called orders, with a column called status. (A database keeps data in tables, a bit like sheets in a spreadsheet: each row is one record and each column holds one kind of fact.) Sales wants placed. The warehouse wants picked and packed. Shipping wants split and dispatched. Finance wants invoiced, paid and refunded. Support wants complaint_open. Soon the status column holds fourteen values, and nobody can say which ones may follow which. A refund in Finance flips a status that Shipping reads to decide what to send. One meeting later, a single word has turned into a single tangle.

When five meanings share one table, every team's change lands in every other team's data. The status column is where they collide first, because each team needs its own steps.
That uneasy feeling, where one word quietly carries five meanings, is where this whole subject starts. Keep the five sentences in mind. In the next slide I give that feeling its two proper names.