Systems Thinking

Changes propagate through connected components. Change a price and it reaches cart, checkout, order history and refunds — so where should price be captured, and who owns it?

Systems Thinking

Change a product's price and the change reaches the cart, checkout, order history and refunds. Following one fact through every component that reads it reveals where the fact should be captured — and it is rarely where the reflex puts it.

Q · A product's price changes. Which parts of the store are affected, and how do you find them before a customer does?
Change Propagation

Every component that reads a fact is a component the change must reach. Counting the readers, and the hops between writer and reader, tells you what a change costs and where it will be wrong — before it is made.

Q · How far does a change travel through the system, and how do you estimate that before making it?
Source of Truth

The current price of a product and the price a customer paid are two different facts with two different owners. Naming the source of truth for each fact — and noticing when one fact is actually two — is how the same number stops appearing in two versions.

Q · For each fact the system shows, which single place is authoritative — and is "the price" one fact or two?
Who Owns This State?

For each piece of information in the system, one component should be allowed to change it and everyone else should ask. Assigning an owner to every fact — cart contents, stock, payment status, read state — is how a system stays consistent without a coordinator.

Q · For every piece of state the system holds, which component is allowed to change it, and what happens when two of them think they are?
Inside and Outside the System

The payment provider, the email sender, object storage and the shipping carrier are not part of the store. Drawing the boundary — what we control, what we merely call — is the first step of every design, because everything outside the line can fail without asking us.

Q · Where does our system end, and which of the things the store depends on are on the other side of that line?
External Systems Fail

Everything outside the line can fail, can be slow, can change and can rate-limit — and will, on a schedule you do not control. For each crossing, deciding what the store does in each of those four cases is design work, not error handling.

Q · For each external system the store calls, what happens when it fails, when it is slow, when it changes and when it says "too many requests" — and who decided that?