Design a Scalable Catalog Service
Company: Attentive
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Onsite
# Design a Scalable Catalog Service
Design a catalog service that lets authorized producers create and update items while customers browse, retrieve, filter, and search the published catalog. Each item has structured attributes, descriptive text, a publication state, and a version.
The service should support frequent reads, less frequent writes, safe schema evolution, and consistent publication of related item data. State any assumed scale and freshness targets.
### Clarifying Questions to Ask
- Is this a product catalog, media catalog, internal service catalog, or another domain?
- Which fields are strongly consistent, and how stale may browse and search results be?
- Are variants, regional availability, prices, inventory, or permissions inside this service's boundary?
- What write approval, version history, and rollback behavior do producers need?
### What a Strong Answer Covers
- Item and version data models, producer and customer APIs, validation, and publication state transitions.
- A source-of-truth store plus cache, browse index, and search index projections.
- Idempotent updates, outbox or change-stream propagation, stale-read behavior, and reindexing.
- Partitioning, hot-item handling, access control, observability, failure recovery, and schema migration.
### Follow-up Questions
1. How would you publish a coordinated update to thousands of related items without showing a half-updated collection?
2. What happens when the search index is unavailable while catalog writes continue?
3. How would you introduce a new required attribute without breaking older item versions?
Overview: Design a read-heavy catalog service with versioned items, draft and publish workflows, browse and search projections, cache behavior, and safe schema evolution. The solution covers idempotent writes, coordinated releases, projection lag, reindexing, partitioning, failure recovery, and rollback.
Read the full Attentive Software Engineer interview experience this question came from