You are designing a service that pulls best-effort hourly weather data from an external Weather Service API for ~2,000 locations (e.g., city IDs or lat/lon).
"Current temperature" is defined as the latest available hourly observation (e.g., the reading for the hour starting at HH:00Z). The platform must ingest each new hourly dump quickly enough so clients see data no more than 10 minutes stale relative to now.
Requirements
Data served must be at most 10 minutes stale.
Handle upstream API slowness, partial failures, and outages gracefully.
Support retries, idempotent ingestion, and backfill for missed hours.
Respect provider rate limits.
Provide monitoring/alerting on freshness SLOs.
Support horizontal scale for traffic spikes on the read API.