TacoBell: Serving Its Menu
When we enter any restaurant, almost all of us are thinking about food. Personally, I have never paid attention to the menu. Ofcourse I look up food on it but never actually thought much about it.
Today we are going to go on a journey to understand the backend systems of how the menu really is formed and appears on our digital devices.
Think about the complexity of quick-serve-restaurant (QSR) like TacoBell, having over 7000 outlets within the United States & 500 globally:
- Serves over 40 million customers every week
- Their menu not only appears on their app & website but also on multiple Delivery Aggregators.
- Each restaurant has different operating hours
- Every location has different tax laws that they follow
- Different restaurants could have a different product mix
- Offers running from one outlet could be different from that of other.
On the surface of it, the amount of data may not look much, but in fact, permutation & combination of taxes only is around 100 million. Also, TacoBell provides its menu to over 40,000 Delivery Aggregators which amounts to over 100 GB of data.
Having all this knowledge let’s design our system:
- Taco Bell has built a front-end app for restaurants on AWS Amplify using React. The restaurant feeds in their hours of operation.
- This information gets stored in Dynamo DB
- From the Dynamo DB, the information is stored on the relational Database Amazon Aurora
- Taco Bell head office feeds in information about different products, Pricing, tax calculations, and offers which is stored as a CSV file on the S3 buckets
- As soon as the CSV is saved, it triggers the EventBridge which in turn triggers the Step Function
- The information stored by the head office is also stored in the Aurora.
- Through the AWS Lamda function, the menu information is pulled by the Delivery Aggregators
- Once the customer opens the app provided by Delivery Aggregator, looks up Tack Bell, and places the order, the order hits the API gateway and from another Lambda function hits the Aurora Database.
Here is the short video by Robbie Kohler, Director of Software Engineering Explaining Menu Middleware and Data Integration Platform for Taco Bell
PS: I have taken the liberty to add a few additional elements as deemed necessary :)