Gopuff (Local Delivery Service)
I. Define Functional/Non-functional Requirements
Functional Requirements
- Core Requirements
-
- Aggregate availability of items across local distribution centers
-
- Allow users to place orders without double booking
Non-Functional Requirements
- Availability requests should be fast(
<100ms
) to support use-cases like search
- Ordering should be strongly consistent: two customers should not be able to purchase the same physical product
- System should be able to support 10k DCs and 100k items in the catalog across DCs
- Order volume will be O(10m orders/day)
Out of Scope
- Payments/purchases
- Driver routing
- Search
- Cancellations and returns
II. Setup
Defining the Core Entities
Definiing the API
III. High-Level Design
Customers should be able to query availability of items
IV. Deep Dives