Draw boundaries you can defend
A short note on module boundaries: coupling, ownership, and decisions you will not regret.
Good architecture is mostly about where you draw the lines. A boundary in the right place lets teams move independently. A boundary in the wrong place turns every change into a negotiation.
Put boundaries where the rate of change differs. Code that changes together should live together, and code that changes for different reasons should be separated. This keeps a single change from rippling across the system.
Make each boundary own its data. When two modules share a table, they are not really separate, and the coupling will surface at the worst time. A clear owner for each piece of state is worth the extra interface.
Write down the decision and the reason. A short note on why a boundary exists saves the next engineer from undoing it by accident, and gives you something to defend the choice with later.
Key points
- ·Place boundaries where the rate of change differs.
- ·Give each boundary sole ownership of its data.
- ·Record the decision and the reason behind it.
Replies
Sign in to reply.
No replies yet. Be the first to add something useful.