Microservices offer great benefits but also raise huge new challenges.
One of the biggest challenges of microservices is to define the boundaries of individual services. It is a process which involves deep understanding of the business domain, requirements, and goals.
Domain Driven Design (DDD) provides a framework that can get you most of the way to a set of well-designed microservices.