User Profile Service
The service every other feature calls — reads at 50:1, and it can't go down.
Keep profile reads fast and always-on while every other service hammers the hot path and the store blips.
Every feature calls this service — reads outnumber writes ~50:1 and each caller has a latency budget. A hot cache is the shield: with it, a store failover is a shrug; without it, every downstream product page stalls at once.
Components in play
- Internal LB — Spreads caller traffic across the API fleet.
- Profile API — Serves get-profile calls; only touches the store on a miss.
- Profile cache — Holds hot profiles in memory so reads skip the store.
- Profile store — Source of truth for every user's profile row.
Graded on these SLOs
- ≥ 98.50%Profile reads succeed
- ≤ 60 msRead p99
- ≥ 5.0k rpsSustain the read fan-in
- ≤ 90%Fleet headroom
- ≤ 6Lean footprint
The brief
Design the internal user profile service that every other feature — feed, search, notifications, checkout — calls to look up a user's profile. Reads outnumber writes roughly 50:1, and every caller has a strict per-call latency budget: a slow or down profile service stalls every product surface that depends on it.
Functional
- Get a profile by user id
- Update profile fields (name, bio, avatar)
- Batch-fetch profiles for a list of ids
Non-functional
- Read-heavy (~50:1) — reads must be low-latency
- High availability — every feature depends on this service
- Callers have a strict per-call latency budget
Warm-up: design decisions
Optional theory to prime the calls a senior engineer would make before you build.
Solving is a Pro feature
Unlock the on-canvas AI design coach, per-run design reviews, the chaos simulator and all 12 problems for $15/month.
- AI design coach on your canvas — pins failure points & over-engineering
- Honest AI design review on every run
- All 12 problems + unlimited chaos simulator
- Points, levels & leaderboard