microservices
# Microservices (Deep Workflow)
Microservices trade **code simplicity** for **operational and contract complexity**. Justify each boundary with **ownership** and **data isolation**—not fashion.
## When to Offer This Workflow
**Trigger conditions:**
- Splitting the monolith; coupling blocks independent deploys
- Latency cascades, partial failures, contract breaks
- Conway’s law alignment between teams and services
**Initial offer:**
Use **six stages**: (1) goals & constraints, (2) boundaries & data ownership, (3) integration patterns, (4) contracts & versioning, (5) reliability patterns, (6) ops & governance). Confirm org maturity and platform capabilities.
---
## Stage 1: Goals & Constraints
**Goal:** Why not a modular monolith first?
### Valid drivers
- Independent deploy cadence per team
- Different scaling profiles or stacks
- Clear domain ownership and blast-radius isolation
### Costs
- Distributed transactions, harder debugging, broader test matrix
**Exit condition:** Explicit assumption that modular monolith was considered.
---
## Stage 2: Boundaries & Data Ownership
**Goal:** One service owns each aggregate’s write path; no shared writable tables across services.
### Practices
- Bounded contexts from DDD when helpful
**Exit condition:** Entity → owning service map.
---
## Stage 3: Integration Patterns
**Goal:** Sync HTTP/gRPC vs async events—match consistency needs.
### Patterns
- Sagas or outbox for multi-step business processes
**Exit condition:** Sequence diagrams for top three flows.
---
## Stage 4: Contracts & Versioning
**Goal:** Backward-compatible evolution; consumer-driven contracts optional.
### Practices
- Deprecation policy published
---
## Stage 5: Reliability Patterns
**Goal:** Timeouts, retries with backoff, circuit breakers, bulkheads; idempotent handlers for retries.
---
## Stage 6: Ops & Governance
**Goal:** Service catalog, SLIs on dependency edges, golden paths for new services.
---
## Final Review Checklist
- [ ] Boundary and data ownership clear
- [ ] Integration style matches consistency needs
- [ ] Contract versioning policy exists
- [ ] Reliability patterns applied at boundaries
- [ ] Ops ownership and catalog in place
## Tips for Effective Guidance
- Microservices without delivery maturity often fail—say so explicitly.
- Shared databases are hidden coupling—flag them.
- The network is not reliable—design for partial failure.
## Handling Deviations
- Small teams: strong bias toward modular monolith or few services.
标签
skill
ai