| Maps Client | Owns client protocol, request identity, retry, and resume behavior. In this design it participates in: Geocode endpoints and snap waypoints to routable graph edges. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents the external caller from also owning the contract and failure behavior of Tile CDN. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Road closure arrives during route” to the external caller. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Maps Client boundary before extracting or scaling it. |
| Tile CDN | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Choose hierarchy/landmarks and route through relevant graph partitions. | Removes repeated work from the latency-critical path. It prevents Maps Client from also owning the contract and failure behavior of Geocoding API. | Read authoritative storage for every request. Simpler initially, but latency and source-of-truth load scale together and a hot key becomes a database incident. Here that simpler choice would couple “Long route crosses many partitions” to Maps Client. | Costs invalidation, staleness, stampede protection, and memory. Add or split it only after the workload (1B route requests/day · continental graph · p99 < 1 s) proves repeated reads dominate. Measure the latency, saturation, lag, or mismatch at the Tile CDN boundary before extracting or scaling it. |
| Geocoding API | Owns authentication, validation, quotas, deadlines, and routing. In this design it participates in: Overlay fresh traffic, closures, turn restrictions, and mode-specific costs. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Tile CDN from also owning the contract and failure behavior of Place Index. | Put protocol, authentication, quotas, and business transitions in one process. Acceptable at low scale, but it couples external traffic risk to domain releases. Here that simpler choice would couple “Traffic data is sparse or malicious” to Tile CDN. | Costs another hop, policy distribution, and a high-blast-radius fleet. Introduce it when many clients or services need one protocol and protection boundary. Measure the latency, saturation, lag, or mismatch at the Geocoding API boundary before extracting or scaling it. |
| Place Index | Serves a low-latency, disposable projection with authoritative fallback. In this design it participates in: Compute alternatives, ETA, instructions, and return graph/traffic versions. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Geocoding API from also owning the contract and failure behavior of Route API. | Read authoritative storage for every request. Simpler initially, but latency and source-of-truth load scale together and a hot key becomes a database incident. Here that simpler choice would couple “Graph versions differ at boundaries” to Geocoding API. | Costs invalidation, staleness, stampede protection, and memory. Add or split it only after the workload (1B route requests/day · continental graph · p99 < 1 s) proves repeated reads dominate. Measure the latency, saturation, lag, or mismatch at the Place Index boundary before extracting or scaling it. |
| Route API | Owns authentication, validation, quotas, deadlines, and routing. In this design it participates in: Aggregate privacy-safe telemetry to update traffic and schedule base graph rebuilds. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Place Index from also owning the contract and failure behavior of Graph Partition Router. | Put protocol, authentication, quotas, and business transitions in one process. Acceptable at low scale, but it couples external traffic risk to domain releases. Here that simpler choice would couple “Offline client uses stale restrictions” to Place Index. | Costs another hop, policy distribution, and a high-blast-radius fleet. Introduce it when many clients or services need one protocol and protection boundary. Measure the latency, saturation, lag, or mismatch at the Route API boundary before extracting or scaling it. |
| Graph Partition Router | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Geocode endpoints and snap waypoints to routable graph edges. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Route API from also owning the contract and failure behavior of Road Graph Shards. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Road closure arrives during route” to Route API. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Graph Partition Router boundary before extracting or scaling it. |
| Road Graph Shards | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Choose hierarchy/landmarks and route through relevant graph partitions. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Graph Partition Router from also owning the contract and failure behavior of Hierarchy / Landmarks. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Long route crosses many partitions” to Graph Partition Router. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Road Graph Shards boundary before extracting or scaling it. |
| Hierarchy / Landmarks | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Overlay fresh traffic, closures, turn restrictions, and mode-specific costs. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Road Graph Shards from also owning the contract and failure behavior of Traffic Overlay. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Traffic data is sparse or malicious” to Road Graph Shards. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Hierarchy / Landmarks boundary before extracting or scaling it. |
| Traffic Overlay | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Compute alternatives, ETA, instructions, and return graph/traffic versions. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Hierarchy / Landmarks from also owning the contract and failure behavior of Closure Feed. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Graph versions differ at boundaries” to Hierarchy / Landmarks. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Traffic Overlay boundary before extracting or scaling it. |
| Closure Feed | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Aggregate privacy-safe telemetry to update traffic and schedule base graph rebuilds. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Traffic Overlay from also owning the contract and failure behavior of Route Worker. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Offline client uses stale restrictions” to Traffic Overlay. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Closure Feed boundary before extracting or scaling it. |
| Route Worker | Executes idempotent asynchronous work under lease and retry policy. In this design it participates in: Geocode endpoints and snap waypoints to routable graph edges. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Closure Feed from also owning the contract and failure behavior of ETA Model. | Perform the work before acknowledging the caller. This gives simpler consistency but unbounded tail latency and fragile retries. Here that simpler choice would couple “Road closure arrives during route” to Closure Feed. | Costs leases, checkpoints, retries, DLQs, and lag operations. Separate once execution time or burstiness no longer fits the request deadline. Measure the latency, saturation, lag, or mismatch at the Route Worker boundary before extracting or scaling it. |
| ETA Model | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Choose hierarchy/landmarks and route through relevant graph partitions. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Route Worker from also owning the contract and failure behavior of Alternative Router. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Long route crosses many partitions” to Route Worker. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the ETA Model boundary before extracting or scaling it. |
| Alternative Router | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Overlay fresh traffic, closures, turn restrictions, and mode-specific costs. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents ETA Model from also owning the contract and failure behavior of Offline Bundle Builder. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Traffic data is sparse or malicious” to ETA Model. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Alternative Router boundary before extracting or scaling it. |
| Offline Bundle Builder | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Compute alternatives, ETA, instructions, and return graph/traffic versions. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Alternative Router from also owning the contract and failure behavior of Telemetry / Map Feedback. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Graph versions differ at boundaries” to Alternative Router. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Offline Bundle Builder boundary before extracting or scaling it. |
| Telemetry / Map Feedback | Owns authoritative versioned state or immutable evidence. In this design it participates in: Aggregate privacy-safe telemetry to update traffic and schedule base graph rebuilds. | Defines the source of truth and commit boundary. It prevents Offline Bundle Builder from also owning the contract and failure behavior of operators and repair tooling. | Let each service persist its own interpretation. That removes one clear commit boundary and makes retries, support, and reconciliation ambiguous. Here that simpler choice would couple “Offline client uses stale restrictions” to Offline Bundle Builder. | Costs schema migration, replication, backup, and shard ownership. Split storage only when access patterns, retention, or compliance boundaries materially differ. Measure the latency, saturation, lag, or mismatch at the Telemetry / Map Feedback boundary before extracting or scaling it. |