I led a 12-year-old PHP monolith migration to modular architecture. 18 months, 0 downtime.

Recipe

  1. Diagnose with Deptrac.
  2. Avoid 20-microservice big-bang. Find natural domain boundaries.
  3. Modularize in-place first.
  4. Strangler pattern on lower-risk domains.
  5. Outbox for cross-boundary communication.
  6. Extract progressively, keep low-risk pieces in the monolith.