Migrating a monolith is not just about splitting code. It’s about splitting a business, a team and a set of habits.

1. Start with capabilities, not services

Identify what your system does that other systems would reuse. Those are your first cross-cutting capabilities.

2. Contracts-first

Define contracts before touching code. If contracts are unstable, everything else will be too.

3. Centralized authentication, early

It’s the piece that touches everything. If you don’t centralize it early, every service reinvents the wheel badly.