You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Update proximity service documentation to correct formatting and enhance clarity
- Fixed HTML entity encoding for SLO examples, replacing `<` with `<` for better readability.
- Ensured consistency in the presentation of SLO metrics across various sections.
- Added coverage for CAP split and SLI/SLO/SLA concepts in the documentation checklist.
Copy file name to clipboardExpand all lines: software_system_design/proximity_service.md
+7-4Lines changed: 7 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -151,18 +151,18 @@ flowchart TB
151
151
**Terminology (for interviews):**
152
152
153
153
-**SLI** (Service Level Indicator): a measurable metric (e.g., “share of successful nearby requests under 200 ms”).
154
-
-**SLO** (Service Level Objective): a **target** for an SLI over a window (e.g., “99% of requests < 200 ms per month”).
154
+
-**SLO** (Service Level Objective): a **target** for an SLI over a window (e.g., “99% of requests < 200 ms per month”).
155
155
-**SLA** (Service Agreement): a **contract** with users/partners; often includes **credits** if SLOs are missed—many internal tiers use **SLOs only** until revenue depends on them.
156
156
157
157
**Example SLOs** (tune to product; numbers are illustrative for a consumer maps app):
158
158
159
159
| Area | SLI | SLO (monthly) | Why candidates care |
|**Search availability**| Ratio of **2xx** vs all attempts (excluding client cancel) |**≥ 99.9%** monthly (tier **99.95%** if premium) | Maps feel “broken” when search fails; **degraded** (stale cache) still counts as success if defined in SLI. |
163
163
|**Geospatial accuracy**| Share of returned POIs with **Haversine distance ≤ radius × (1 + ε)** after refine |**≥ 99.99%** of results within **ε = 1%** radius slack | Catches index bugs, wrong **WGS84** handling, or missing **neighbor** cells. |
164
-
|**Data freshness** (new/updated businesses **visible** in nearby) | Time from **commit** in OLTP to **searchable** in index |**P95 < 60 s**, **P99 < 5 min**| Balances **ingest** cost vs “I just added my store” expectations. |
165
-
|**Index update latency**| Lag between **change event** and **materialized** row in geo shard / Redis |**P99 < 2 min**| Distinct from user-visible freshness if you batch; matters for **ops** dashboards and **replay** alerts. |
164
+
|**Data freshness** (new/updated businesses **visible** in nearby) | Time from **commit** in OLTP to **searchable** in index |**P95 < 60 s**, **P99 < 5 min**| Balances **ingest** cost vs “I just added my store” expectations. |
165
+
|**Index update latency**| Lag between **change event** and **materialized** row in geo shard / Redis |**P99 < 2 min**| Distinct from user-visible freshness if you batch; matters for **ops** dashboards and **replay** alerts. |
166
166
167
167
**Error budget policy:**
168
168
@@ -822,6 +822,9 @@ func (n *Node) Search(cx, cy, rad float64, out *[]Point) {
0 commit comments