Concept and mechanism
A microservice organizes a business capability with clear responsibility for behavior and data. Splitting an application into controllers, logic, and tables may simply spread existing dependencies across the network. Start by mapping decisions, vocabulary, and invariants with people who understand the domain. The same word can mean different things: an access account and an accounting account do not require one model. A useful boundary allows a capability to change without making consumers understand its implementation. Repository size and container count do not establish autonomy. Also examine synchronous dependencies and the need for coordinated releases.
Guided application
In a fictional funds exercise, valuation and report publication have different rhythms and rules. Define the contract that transfers an approved result, including version, reference, and state meanings. If each calculation requires dozens of remote queries to the same service, measure the cost and revisit the boundary or data retrieval design. Do not choose a service count as a transformation target. Record contract ownership, consumers, and how versions coexist during gradual updates. Even an added property deserves analysis when a consumer rejects unknown fields. Testing should represent actual consumers rather than only the producer in isolation.
Two separately deployed applications remain coupled if every change requires a coordinated release.
Common pitfalls
One service per table; autonomy inferred from containers; one model imposed on every context.
Related topics: Data and distributed transactions · Resilience and load · Messages and queues
Design boundaries around decisions and observable contracts.
Reference: Domain analysis for microservices · Microservice architecture patterns and scoped platform examples; primary guidance consulted 2026-09-30