09. Architecture Decisions¶
This document captures the key architectural decisions made for this project using the Architecture Decision Record (ADR) format.
ADR-001: Use DynamoDB Single-Table Design¶
Status: Accepted
Context¶
The Subscription Platform requires a database to store and manage:
Merchants
Products
Orders
Subscriptions
The system must support:
Fast read and write operations
Low operational cost
Automatic scaling (serverless environment)
High availability with minimal infrastructure management
Traditional relational databases introduce operational overhead (connection pooling, scaling, maintenance), which conflicts with the serverless architecture goals.
Decision¶
We will use Amazon DynamoDB with a single-table design.
All entities (merchants, products, orders, subscriptions) will be stored in a single table using:
Partition Key (PK)
Sort Key (SK)
Access patterns will be modeled upfront to support efficient queries.
Rationale¶
Serverless scaling: On-demand capacity automatically scales with traffic
Cost efficiency: Pay-per-request model (scales to zero)
Performance: Single-digit millisecond latency
No connection management: Uses HTTP API instead of persistent DB connections
Operational simplicity: One table instead of multiple reduces complexity
Best fit for access-pattern-driven design
Consequences¶
✅ Positive¶
Highly scalable and resilient architecture
Simplified infrastructure management
Optimized for known access patterns
Reduced operational overhead
⚠️ Negative¶
Requires strict upfront data modeling
Queries are less flexible than SQL
Harder to perform ad-hoc queries
Team must learn DynamoDB single-table design patterns
Notes¶
This decision aligns with a serverless-first architecture and prioritizes:
scalability
performance
cost optimization
Future changes to access patterns may require schema evolution or additional indexes (GSIs).