Scale and Design services for Amazon Go Grocery
Java - 2020
Amazon Go is a chain of convenience stores located in US and UK. It uses camera and sensors to track the customer's events and checks out customer without a cashier or a self checkout station. Amazon Go Grocery is a ~15,000 sq ft grocery store with all the Amazon Go capabilities.
I worked in the Customer Shopping and Receipts team. Amazon Go had a maximum customer limit of 60 people. For the launch of Amazon Go Grocery, we had to handle 500 customers in the store at the same time. A bunch of services had to be scaled and rearchitected to support the extra load.
Scale and Design services for Amazon Go Grocery
One of the service that we owned was Cart Service. As customers picked and returned items in the store, this service was responsible for storing the "in cart" information. With the initial design, cart service was browning out with 50 sessions with 10 people each. I worked on a new architecture which needed a redesign of the service and its APIs. The new design removed the limitations and cart service was able to support sessions with more than 100 customers.
- This project unblocked the launch of Amazon Go Grocery as group sessions are more common in the grocery store.
- Currently there are over 25 Amazon Go stores which uses these new APIs. They handle thousands of customers everyday.
- The average checkout latencies went down by 30secs and for sessions with more than 5 customers, it reduced the latency by 1 min.

To support Amazon Go Grocery, we built a framework to write load tests. This helped us to stress test our service with different configurations like number of total customers in the store, number of customers in a group, and so on. After the load tests, we would use a profiler to identify which services/APIs were taking the most amount of time and CPU. This enabled our team to debug and fix the services which were the bottlenecks for Amazon Go Grocery launch.