Microservice should do "one thing"
No certain process that will produce the right design. But Each service should has a single responsibility.
Think deeply about our business domain, bounded contexts and sub domain models patterns.
▪ Microservice size should not too big and not too small
Start from a carefully designed domain model and group small sub models with obeying this rule. Each service is small enough that it can be built by a small team working independently.
▪ Avoid Chatty Communication
When you splitting functionality into two services, if those services becomes overly chatty
communications, then its good to combine them into 1 service.
▪ No Locking Dependencies
If your services has inter-service dependencies more than 2 or 3, and if those are required to move and deploy together that means there are pain points of your design and its good to re-think again.
▪ It should always be possible to deploy a microservice without re-deploying any other services. Services should not be tightly coupled, and can evolve independently.