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.


← Back to Lessons Learned