Modularity comes with a cost, so make sure you actually need the separation before you pay for it
- GitLab merged its Workhorse middleware into the main codebase: it was permanently coupled to Rails, so the separation was pure overhead
- Fowler and Atwood's rule of three: don't abstract until the pattern is proven three times. The same logic applies to splitting code apart
- Counterexample: Meltano stayed inside GitLab until it operated independently, then was spun out
- https://gitlab.com/gitlab-org/gitlab-foss/-/issues/54299
- https://gitlab.com/gitlab-org/gitlab/-/merge_requests/48690
- https://blog.codinghorror.com/rule-of-three/
- #microservices
- #modularity
- #software-engineering