Distributed Lock Service  ·  View 22 of 26  ·  6 · Operations

Growth Path — Scaling Out Without Re-Platforming

From one three-member cluster to regional shards, without changing what a caller sends or what a token means.

Editable source SVG draw.io All views
MVP One entity cluster 3 members · 1 region Phase 2 Coord cluster split 5 members Lock classes TTL · mode · posture Phase 3 Entity shards rendezvous hash Rehome a key range epoch advance Regions Region-local clusters no stretched quorum If ever global Stretched coord p99 ≤ 150 ms, priced Growth Path — Scaling Out Without Re-Platforming Data store Security / platform External / third party Each step adds clusters behind the same protocol and token format. No step changes what a caller sends. v 1.0 · owner Platform Architecture · date 2026-09

Decisions

  • Scale-out is always more clusters, never bigger ones. Adding members to a Raft group adds durability and read capacity and reduces write throughput.
  • Rehoming a key range is fenced by an epoch advance on the destination above the source's epoch. Epochs are allocated from the coord cluster, so no two clusters ever share one.
  • No stretched quorum by default. A global lock is deferred until a genuinely global resource exists, and then priced at p99 150 ms per acquisition before anyone commits to it.

Triggers, not dates

  • Split coord from entity when leader-election locks see a latency incident caused by entity churn, or at Phase 2, whichever comes first.
  • Add an entity shard when steady writes exceed 60% of the benchmarked ceiling for a week, or live state passes 4 GB.

What does not change

  • The gRPC contract, the token encoding, the class schema and the fence rule at the resource. Everything a service owner built against in the MVP still works at Phase 3.