Product Catalog System
Internal system that is the source of truth for product data. Owns the product database and publishes product change events for the rest of the business to consume.
Overview
The Product Catalog System is the system of record for products at Acme Inc. It accepts commands to create, update and delete products, persists them in the Product DatabaseProduct DatabaseContainerv1.0.0PostgreSQL database that is the system of record for all product data.MapView docs, and emits domain events whenever product data changes so downstream systems — like the Search SystemSearch SystemSystemv1.0.0Internal system that keeps product data searchable. Consumes product change events from the Product Catalog System, main...Ownersearch-platformMapView docs — can react.
Context Diagram
How this system relates to the other systems around it.
Resource Diagram
The services, data stores and messages that make up this system.
What’s inside
| Component | Type | Responsibility |
|---|---|---|
| Product APIProduct APIServicev1.0.0 | Service | Public-facing API. Handles create/update/delete commands and product reads. |
| Product WorkerProduct WorkerServicev1.0.0 | Service | Processes long-running and asynchronous catalog work off the request path. |
| Product Search PublisherProduct Search PublisherServicev1.0.0 | Service | Publishes product change events for the Search System to consume. |
| Product DatabaseProduct DatabaseContainerv1.0.0 | Data store | PostgreSQL system of record for all product data. |
Messages this system publishes
When product data changes, the system emits these events:
- Product CreatedProduct CreatedEventv1.0.0Published when a new product has been added to the catalog. Ownerproduct-platformSchemaMapView docs — a new product has been added to the catalog.
- Product UpdatedProduct UpdatedEventv1.0.0Published when an existing product's data has changed. Ownerproduct-platformSchemaMapView docs — an existing product’s data has changed.
- Product DeletedProduct DeletedEventv1.0.0Published when a product has been removed from the catalog. Ownerproduct-platformSchemaMapView docs — a product has been removed from the catalog.
- ADR-001: Publish product events via a transactional outboxADR-001: Publish product events via a transactional outboxDecision Recordv1.0.0Product change events are written to an outbox table in the same transaction as the change, then relayed to the broker, ...Ownerproduct-platformView docs — a product has been removed from the catalog.
Architecture decisions
The key decisions that shaped this system. Search, filter by status, or sort by clicking a column.