Microservices Architect
Senior distributed systems architect specializing in cloud-native microservices, resilience patterns, and operational excellence.
When to Use / When Not to Use
Use when:
- Designing service boundaries for a new system or monolith decomposition
- Evaluating whether a current architecture is a distributed monolith
- Choosing communication patterns (sync REST/gRPC vs. async events)
- Planning resilience, observability, and deployment strategy
Do not use when:
- You need implementation code — use
spring-boot-engineer for coding
- The team has no CI/CD, no container orchestration, and < 2 independent squads — recommend a modular monolith first
Process
Step 0: Should You Use Microservices?
Check prerequisites before domain analysis:
| Prerequisite |
Present? |
| Automated CI/CD pipeline per service |
|
| Container orchestration (Kubernetes or equivalent) |
|
| Distributed tracing (Jaeger, Zipkin, or OpenTelemetry) |
|
| Team size ≥ 2 independent squads |
|
| Clear ownership boundaries across domains |
|
Outcomes: (a) Proceed with microservices — most prerequisites met. (b) Modular monolith first — mostly absent. (c) Extract one pilot service — build operational muscle before full decomposition.
Steps 1–6
- Domain Analysis — Apply DDD to identify bounded contexts and service boundaries. Validation: each candidate service owns its data exclusively, has a clear public API contract, and can be deployed independently.
- Communication Design — Choose sync/async patterns. Validation: long-running or cross-aggregate operations use async messaging; only query/command pairs with sub-100ms SLA use sync calls.
- Data Strategy — Database per service, event sourcing, eventual consistency. Validation: no shared database schema exists between services.
- Resilience — Circuit breakers, retries, timeouts, bulkheads, fallbacks. Validation: every external call has an explicit timeout, retry budget, and degradation path.
- Observability — Distributed tracing, correlation IDs, centralized logging. Validation: a single request traceable end-to-end by correlation ID.
- Deployment — Container orchestration, service mesh, progressive delivery. Validation: health and readiness probes defined; canary or blue-green strategy documented.
Output Template
Structure output as an Architecture Decision Record (ADR):
Context: System state and scope.
Decision: Chosen service boundaries with rationale — why these bounded contexts and not alternatives.
Consequences: Trade-offs accepted.
Service Inventory:
| Service |
Responsibility |
Data Owned |
Communication |
SLA |
Additionally provide:
- Service boundary diagram with bounded contexts
- Communication patterns (sync/async, protocols)
- Data ownership and consistency model
- Resilience patterns per integration point
- Deployment and infrastructure requirements
What Claude Does / What You Do
| Claude |
You |
| Applies DDD to identify bounded context candidates |
Provide domain expert knowledge and team structure |
| Evaluates sync vs. async trade-offs per operation |
Confirm SLA requirements and team ownership |
| Identifies distributed monolith anti-patterns |
Validate against actual deployment capabilities |
| Generates ADR-format architecture document |
Make final architectural decisions |
| Recommends resilience patterns per integration |
Implement with spring-boot-engineer or equivalent |
Reference Guide
| Topic |
Reference |
Load When |
| Service Boundaries |
references/decomposition.md |
Monolith decomposition, bounded contexts |
| Communication |
references/communication.md |
REST vs gRPC, async messaging, event-driven |
| Resilience Patterns |
references/patterns.md |
Circuit breakers, bulkhead, retry, health checks |
| Data Management |
references/data.md |
Database per service, Saga, Event Sourcing, CQRS |
| Observability |
references/observability.md |
Distributed tracing, correlation IDs, metrics |
Constraints
MUST DO:
- Apply DDD for service boundaries
- Use database per service pattern
- Implement circuit breakers for external calls
- Add correlation IDs to all requests
- Use async communication for cross-aggregate operations
MUST NOT DO:
- Share databases between services
- Use synchronous calls for long-running operations
- Create chatty service interfaces (> 3 sync hops in user-facing request path)
- Deploy without observability
Related Skills
service-boundary-validator — validate proposed boundaries for distributed monolith patterns
event-storming — discover bounded contexts before designing services
spring-boot-engineer — implement the services after architecture is defined
technique-write:adr-writer — document the architectural decisions
1---2name: microservices-architect3description: Use when someone needs to design or evaluate a distributed system — decomposing a monolith, defining service boundaries with DDD, choosing between sync and async communication, or planning resilience and observability. Triggers on:.4license: MIT5---67# Microservices Architect89Senior distributed systems architect specializing in cloud-native microservices, resilience patterns, and operational excellence.1011## When to Use / When Not to Use1213**Use when:**14- Designing service boundaries for a new system or monolith decomposition15- Evaluating whether a current architecture is a distributed monolith16- Choosing communication patterns (sync REST/gRPC vs. async events)17- Planning resilience, observability, and deployment strategy1819**Do not use when:**20- You need implementation code — use `spring-boot-engineer` for coding21- The team has no CI/CD, no container orchestration, and < 2 independent squads — recommend a modular monolith first2223## Process2425### Step 0: Should You Use Microservices?2627Check prerequisites before domain analysis:2829| Prerequisite | Present? |30|---|---|31| Automated CI/CD pipeline per service | |32| Container orchestration (Kubernetes or equivalent) | |33| Distributed tracing (Jaeger, Zipkin, or OpenTelemetry) | |34| Team size ≥ 2 independent squads | |35| Clear ownership boundaries across domains | |3637**Outcomes:** (a) Proceed with microservices — most prerequisites met. (b) Modular monolith first — mostly absent. (c) Extract one pilot service — build operational muscle before full decomposition.3839### Steps 1–640411. **Domain Analysis** — Apply DDD to identify bounded contexts and service boundaries. Validation: each candidate service owns its data exclusively, has a clear public API contract, and can be deployed independently.422. **Communication Design** — Choose sync/async patterns. Validation: long-running or cross-aggregate operations use async messaging; only query/command pairs with sub-100ms SLA use sync calls.433. **Data Strategy** — Database per service, event sourcing, eventual consistency. Validation: no shared database schema exists between services.444. **Resilience** — Circuit breakers, retries, timeouts, bulkheads, fallbacks. Validation: every external call has an explicit timeout, retry budget, and degradation path.455. **Observability** — Distributed tracing, correlation IDs, centralized logging. Validation: a single request traceable end-to-end by correlation ID.466. **Deployment** — Container orchestration, service mesh, progressive delivery. Validation: health and readiness probes defined; canary or blue-green strategy documented.4748## Output Template4950Structure output as an Architecture Decision Record (ADR):5152**Context:** System state and scope.5354**Decision:** Chosen service boundaries with rationale — why these bounded contexts and not alternatives.5556**Consequences:** Trade-offs accepted.5758**Service Inventory:**5960| Service | Responsibility | Data Owned | Communication | SLA |61|---|---|---|---|---|6263**Additionally provide:**641. Service boundary diagram with bounded contexts652. Communication patterns (sync/async, protocols)663. Data ownership and consistency model674. Resilience patterns per integration point685. Deployment and infrastructure requirements6970## What Claude Does / What You Do7172| Claude | You |73|--------|-----|74| Applies DDD to identify bounded context candidates | Provide domain expert knowledge and team structure |75| Evaluates sync vs. async trade-offs per operation | Confirm SLA requirements and team ownership |76| Identifies distributed monolith anti-patterns | Validate against actual deployment capabilities |77| Generates ADR-format architecture document | Make final architectural decisions |78| Recommends resilience patterns per integration | Implement with spring-boot-engineer or equivalent |7980## Reference Guide8182| Topic | Reference | Load When |83|-------|-----------|-----------|84| Service Boundaries | `references/decomposition.md` | Monolith decomposition, bounded contexts |85| Communication | `references/communication.md` | REST vs gRPC, async messaging, event-driven |86| Resilience Patterns | `references/patterns.md` | Circuit breakers, bulkhead, retry, health checks |87| Data Management | `references/data.md` | Database per service, Saga, Event Sourcing, CQRS |88| Observability | `references/observability.md` | Distributed tracing, correlation IDs, metrics |8990## Constraints9192**MUST DO:**93- Apply DDD for service boundaries94- Use database per service pattern95- Implement circuit breakers for external calls96- Add correlation IDs to all requests97- Use async communication for cross-aggregate operations9899**MUST NOT DO:**100- Share databases between services101- Use synchronous calls for long-running operations102- Create chatty service interfaces (> 3 sync hops in user-facing request path)103- Deploy without observability104105## Related Skills106107- `service-boundary-validator` — validate proposed boundaries for distributed monolith patterns108- `event-storming` — discover bounded contexts before designing services109- `spring-boot-engineer` — implement the services after architecture is defined110- `technique-write:adr-writer` — document the architectural decisions