Expand-Contract Pattern
Expand-Contract Pattern governs backward-compatible migration, shaping system behavior under specific failure modes and workloads.
Definition
Expand-Contract Pattern is a design property concerning backward-compatible migration. It defines how the system behaves under specific conditions — what guarantees hold, what trade-offs apply, and how the mechanism interacts with related techniques. The property is only meaningful when its preconditions are met; outside those conditions it provides no benefit and may add cost.
Context and scope
Apply Expand-Contract Pattern when designing systems where backward-compatible migration matters. It is most useful under partial failure, high load, or correctness requirements. Pair it with observability to verify the claimed behavior in production. Do not assume the property holds without testing the specific configuration and workload.
Common misconceptions
- Expand-Contract Pattern eliminates all problems in its domain — it only bounds or shapes specific failure modes, not all pathologies.
- Expand-Contract Pattern is free once you adopt the right tool — the property depends on configuration, workload, and failure pattern, not the product label alone.
Anti-patterns
- Enabling Expand-Contract Pattern without measuring its cost in latency, availability, or operational complexity under production-like conditions.
- Assuming Expand-Contract Pattern composes safely with other guarantees — combining mechanisms can introduce new failure modes or negate benefits.
Related concepts
Authoritative source
What it is
Expand-Contract Pattern is a design property concerning backward-compatible migration. It defines how the system behaves under specific conditions — what guarantees hold, what trade-offs apply, and how the mechanism interacts with related techniques. The property is only meaningful when its preconditions are met; outside those conditions it provides no benefit and may add cost.
When to use
Apply Expand-Contract Pattern when designing systems where backward-compatible migration matters. It is most useful under partial failure, high load, or correctness requirements. Pair it with observability to verify the claimed behavior in production. Do not assume the property holds without testing the specific configuration and workload.
Common misconceptions
- Expand-Contract Pattern eliminates all problems in its domain — it only bounds or shapes specific failure modes, not all pathologies.
- Expand-Contract Pattern is free once you adopt the right tool — the property depends on configuration, workload, and failure pattern, not the product label alone.
Anti-patterns to avoid
- Enabling Expand-Contract Pattern without measuring its cost in latency, availability, or operational complexity under production-like conditions.
- Assuming Expand-Contract Pattern composes safely with other guarantees — combining mechanisms can introduce new failure modes or negate benefits.
Related concepts
- Online Schema Change (online-schema-change)
- Schema Evolution (schema-evolution)