| API Client | Owns client protocol, request identity, retry, and resume behavior. In this design it participates in: Terminate TLS, reject malformed traffic, and propagate a request deadline. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents the external caller from also owning the contract and failure behavior of Anycast / DNS. | 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 “Bad snapshot reaches part of fleet” to the external caller. | 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 API Client boundary before extracting or scaling it. |
| Anycast / DNS | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Authenticate, authorize the route/resource, and apply local or distributed quotas. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents API Client from also owning the contract and failure behavior of DDoS / WAF. | 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 “Retry storm amplifies backend outage” to API Client. | 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 Anycast / DNS boundary before extracting or scaling it. |
| DDoS / WAF | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Match a route from one immutable snapshot and select a healthy backend endpoint. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Anycast / DNS from also owning the contract and failure behavior of TLS Terminator. | 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 “Discovery returns zero healthy endpoints” to Anycast / DNS. | 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 DDoS / WAF boundary before extracting or scaling it. |
| TLS Terminator | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Retry only safe requests within the remaining budget; trip per-cluster circuits. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents DDoS / WAF from also owning the contract and failure behavior of Gateway 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 “Large body exhausts gateway memory” to DDoS / WAF. | 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 TLS Terminator boundary before extracting or scaling it. |
| Gateway Worker | Owns authentication, validation, quotas, deadlines, and routing. In this design it participates in: Stream bounded telemetry while the data plane continues on last-known-good config. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents TLS Terminator from also owning the contract and failure behavior of JWT / mTLS Auth. | 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 “Auth provider is unavailable” to TLS Terminator. | 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 Gateway Worker boundary before extracting or scaling it. |
| JWT / mTLS Auth | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Terminate TLS, reject malformed traffic, and propagate a request deadline. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Gateway Worker from also owning the contract and failure behavior of Rate Limiter. | Embed policy in every caller. Rules then drift by deployment version and emergency changes require fleet-wide redeployment. Here that simpler choice would couple “Bad snapshot reaches part of fleet” to Gateway 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 JWT / mTLS Auth boundary before extracting or scaling it. |
| Rate Limiter | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Authenticate, authorize the route/resource, and apply local or distributed quotas. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents JWT / mTLS Auth from also owning the contract and failure behavior of Route Matcher. | 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 “Retry storm amplifies backend outage” to JWT / mTLS Auth. | 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 Rate Limiter boundary before extracting or scaling it. |
| Route Matcher | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Match a route from one immutable snapshot and select a healthy backend endpoint. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Rate Limiter from also owning the contract and failure behavior of Service Discovery. | 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 “Discovery returns zero healthy endpoints” to Rate Limiter. | 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 Route Matcher boundary before extracting or scaling it. |
| Service Discovery | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Retry only safe requests within the remaining budget; trip per-cluster circuits. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Route Matcher from also owning the contract and failure behavior of Load Balancer. | 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 “Large body exhausts gateway memory” to Route Matcher. | 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 Service Discovery boundary before extracting or scaling it. |
| Load Balancer | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Stream bounded telemetry while the data plane continues on last-known-good config. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Service Discovery from also owning the contract and failure behavior of Backend Service. | 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 “Auth provider is unavailable” to Service Discovery. | 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 Load Balancer boundary before extracting or scaling it. |
| Backend Service | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Terminate TLS, reject malformed traffic, and propagate a request deadline. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Load Balancer from also owning the contract and failure behavior of Response Cache. | 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 “Bad snapshot reaches part of fleet” to Load Balancer. | 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 Backend Service boundary before extracting or scaling it. |
| Response Cache | Serves a low-latency, disposable projection with authoritative fallback. In this design it participates in: Authenticate, authorize the route/resource, and apply local or distributed quotas. | Removes repeated work from the latency-critical path. It prevents Backend Service from also owning the contract and failure behavior of Policy Control Plane. | 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 “Retry storm amplifies backend outage” to Backend Service. | Costs invalidation, staleness, stampede protection, and memory. Add or split it only after the workload (2M requests/s · p99 overhead < 10 ms · global edge) proves repeated reads dominate. Measure the latency, saturation, lag, or mismatch at the Response Cache boundary before extracting or scaling it. |
| Policy Control Plane | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Match a route from one immutable snapshot and select a healthy backend endpoint. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Response Cache from also owning the contract and failure behavior of Telemetry Pipeline. | Embed policy in every caller. Rules then drift by deployment version and emergency changes require fleet-wide redeployment. Here that simpler choice would couple “Discovery returns zero healthy endpoints” to Response Cache. | 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 Policy Control Plane boundary before extracting or scaling it. |
| Telemetry Pipeline | Executes idempotent asynchronous work under lease and retry policy. In this design it participates in: Retry only safe requests within the remaining budget; trip per-cluster circuits. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Policy Control Plane from also owning the contract and failure behavior of operators and repair tooling. | Perform the work before acknowledging the caller. This gives simpler consistency but unbounded tail latency and fragile retries. Here that simpler choice would couple “Large body exhausts gateway memory” to Policy Control Plane. | 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 Telemetry Pipeline boundary before extracting or scaling it. |