If the monolith has been growing organically, it's not likely that all its modules will be cleanly structured. Some structures may exist, but maybe they're not the correct ones for our desired microservices division.
To adapt the service, we will need to make some internal changes. These internal changes could be done iteratively until the service can be cleanly divided.
These three approaches can be combined to generate full migration. The effort involved in each is not the same, as an easily divisible service will be able to make the move faster than a replacement of badly-documented legacy code.
In this phase of the project, the objective is to have a clear roadmap, that should analyze the following elements: ...