People look at microservices as a solution to the Big Ball of Mud, and then confuse "a solution" with "the solution".
You really do have to modularize. In some languages, you can even use separate compilation units for separate modules to enforce the separation.
You can do all of that but get simultaneous deployment, which cuts out whole classes of integration nightmares.