Practice designing a historical FX-rate service for 10k QPS with APIs, data models, precision, versioned corrections, hot and cold storage, caching, consistency, snapshot semantics, scalability, multi-region reliability, monitoring, and operations.
##### Question
Design an internal tool that returns historical currency-exchange rates and supports 10 k QPS. Describe the APIs, data model, storage layer, caching strategy, consistency requirements, scalability plan, and monitoring approach.
Quick Answer: Practice designing a historical FX-rate service for 10k QPS with APIs, data models, precision, versioned corrections, hot and cold storage, caching, consistency, snapshot semantics, scalability, multi-region reliability, monitoring, and operations.
hardProduct ManagerOnsiteProduct / Decision Making
21
0
System Design: Historical FX-Rate Service
Design an internal service for engineers and analysts to fetch historical currency exchange rates for analytics, backfills, and financial reporting. The service should support roughly 10k read QPS, occasional corrections and backfills, high availability, low latency, and cost efficiency.
Constraints & Assumptions
Historical rates are mostly immutable but can be corrected.
Consumers include internal services, analysts, dashboards, and batch data pipelines.
Precision, snapshot semantics, auditability, and versioning matter for financial use cases.
State assumptions for currencies, pairs, granularity, retention, and latency targets.
Clarifying Questions to Ask Guidance
What granularity is required: daily, hourly, minute, tick, or all of these?
Do callers need bid, ask, mid, OHLC, or conversion endpoints?
What is the required P95 latency and availability SLO?
How often do corrections happen and do consumers need as-of historical snapshots?
Part 1 - APIs
Define read endpoints and optional ingestion endpoints.
What This Part Should Cover Guidance
Point-in-time rate, time-series rates, conversion, OHLC or aggregate endpoints, and internal ingest.