Microservices Were Organizational
Our microservices architecture exactly mirrored our org chart. This is Conway's Law in action.
The setup:
- Team A (5 people) → User Service
- Team B (5 people) → Order Service
- Team C (5 people) → Payment Service
- Teams communicate via API contracts
What happened during reorg:
- Teams A and B merged
- New team owns User + Order services
- But User and Order have tight API contracts
- Now same team coordinates via HTTP
- Overhead for zero benefit
The inverse problem:
- Team C split into Payment + Fraud teams
- But Payment service handles both
- Two teams, one codebase
- Constant merge conflicts
- No independent deployment
The lesson:
- System design follows team boundaries
- Reorgs require architecture changes
- Or architecture constraints reorgs
- Neither is free
Lesson: Design your teams before designing your architecture. Or expect painful realignment later.