Design service boundaries, bounded contexts, interfaces, data ownership, and migration paths for distributed systems. Use when work involves decomposing monoliths, deciding whether microservices are justified, mapping domain boundaries across teams, choosing synchronous versus asynchronous collaboration patterns, defining API or event contracts, or preventing shared-database and distributed-transaction anti-patterns. Do not use for routine backend coding when service decomposition is not the core challenge.