Follow this blog

Software engineering, design, and psychology

Where to Split? | Microservice Architecture — Ep. 13

A classic question when designing microservices: what defines a good boundary?

One approach is to split business capabilities. For an online store they can be:

  • Product Catalog
  • Search
  • Reviews
  • Cart
  • Billing
  • Shipping

Capability-based splitting usually leads to very stable services, as business needs evolve slowly and rarely require large-scale changes.

Another approach is to split by technical domains:

  • Core — unique functionality of this particular business (e. g. Product Catalog)
  • Supporting — industry-common core helpers (e. g. Cart, Billing, Shipping)
  • Generic — non-unique non-specific functionality (e. g. Auth, Search, Payment, Image Processing)

This model is more intuitive for engineers. It also makes it easier to decompose large domains into smaller services when scale or ownership demands it.

Both approaches focus on cohesion and loose coupling and achieve quite stable microservice boundaries under changing requirements.

Follow this blog
Send
Share