Strategy & Systems Design
Solution architecture: every part traced to a requirement
Seven parts, one job each
Three decisions, written down
One backend, not separate services
- Decided
- one backend, divided into jobs, customers, scheduling and billing
- Because
- a small team, one database, and parts that usually change together
- Gave up
- scaling or releasing one part on its own
- Revisit if
- one part needs to scale or be released separately
The approval rule in the backend
- Decided
- the over-$2,500 rule lives in the backend, and every app asks it
- Because
- three apps need the same answer, and a copy in each would drift
- Gave up
- editing the rule on a drag-and-drop screen
- Revisit if
- approval rules start changing every month
Reports from a copy
- Decided
- the weekly report reads a copy refreshed every hour
- Because
- big questions shouldn't slow the office app, and the owner doesn't need the last minute
- Gave up
- figures up to an hour old
- Revisit if
- someone needs live totals during the day
What the architecture draws
01
Who owns each record
One home, everyone else asks
Two parts keeping the same record will eventually disagree.
02
What crosses each line
And in which direction
Every connection says what it carries, who starts it and what happens if the other side is down.
03
Now or later
Before the screen answers, or after
Only what the person needs to see happen waits; the rest is queued.
04
Where people decide
Software stops here
The points where a person takes over, with what they need in front of them.
05
Where each part runs
And who looks after it
Bought tools, built parts, and who's responsible when each one has a problem.
06
What's left out
With the reason
Parts that were considered and not built, so nobody adds them later without asking why.
Tool by tool, or one designed system
Tool by tool
- 01A new tool for each problem as it comes up
- 02The same customer kept in each one
- 03Connections added when someone complains
- 04Nobody can draw the whole thing
Each tool works. The business runs on the gaps between them.
One designed system
- 01Each part there for a requirement
- 02One home for each record
- 03Connections planned with the parts
- 04A drawing anyone can read
Fewer parts, and every one of them has a reason.
What the architecture is drawn from, and what it decides next
Drawn from
Decides next
Worth doing when several parts have to work as one
Good fit
- Several apps, people and tools have to work as one system.
- You want to see the system's shape before paying to build it.
- You're replacing tools and need to know what depends on what.
Not the right fit
- A single app with one job. Its shape is obvious.
- An off-the-shelf product already does what you need.
Questions about solution architecture
Do you just produce diagrams?
Diagrams and the reasons behind them. A drawing without its decisions doesn't help the next person who has to change the system.
Can another team build from it?
Yes. It's written to be built from, by us or by someone else.
How do you keep it from being over-engineered?
Every part has to trace to a requirement. Parts that don't are left out, and the reason is written down.
What happens when requirements change?
The trace shows which parts a change touches. If it touches one, it's a normal change. If it touches many, that's the moment to revisit the design, before building.