28. Build modular monoliths that can evolve
A modular monolith can give strong boundaries without the cost of a distributed system. You will structure modules around domains, enforce dependencies, evolve toward services only when needed, and keep a codebase changeable over time.