There is such a thing as irreducible complexity, no matter how you implement it, the solution will always have at least that complexity. This means that in a non-trivial system there will be some services that definitely won't fit in your head.
The safest way to build with micro services is still to start with a monolith. When you find a good reason like performance you can split of a micro service.