Zomato Architecture Explained: How Zomato Delivers Food Orders at Scale
Short answer: Zomato runs on AWS as microservices on EKS and ECS (often on Spot EC2), connected through an Envoy service mesh, Kafka and MQTT (2024). Its billing platform moved from TiDB to Amazon DynamoDB in 2024, cutting response times by about 90%. Restaurant search uses Solr (2023). Monitoring moved to VictoriaMetrics in 2024, handling 2.2 billion active time series on New Year's Eve.
Suppose you order biryani on Zomato
It is New Year's Eve in Kolkata. You search for biryani and place an order. In simple terms:
- Your app calls Zomato's microservices on AWS, linked by an Envoy mesh.
- Search finds nearby restaurants using Solr (Zomato handles about 100 million search queries a day).
- You place the order; order services publish events to Kafka.
- The billing platform consumes the order event and writes a ledger to DynamoDB.
- Live updates (like order status) can flow over MQTT.
- Metrics from every service go into VictoriaMetrics and Grafana.
Search deserves a special mention. In 2023 Zomato's Solr schema relied heavily on dynamic fields, which caused poor performance and high cost at peak times. Quick fixes (a newer Solr version and doc_values for sorting and aggregation fields) helped, but the real fix was redesigning the schema and query style. That made search more resilient, more scalable and cheaper while serving about 100 million queries a day. On busy nights like New Year's Eve, these improvements, the DynamoDB billing move and the VictoriaMetrics monitoring stack all work together so that orders keep flowing.
What architecture style does Zomato use?
Zomato today uses event-driven microservices on AWS.
- Microservices with Kafka (2024): the billing platform is both a producer and consumer of Kafka events, so services stay loosely coupled.
- Managed databases (2024): moving billing to DynamoDB removed the work of running TiDB clusters and handled traffic spikes without over-provisioning.
- Envoy mesh and EKS: infrastructure metrics come from Envoy mesh, cAdvisor, EKS, Kafka and MQTT (2024).
- Cost aware: the old Prometheus fleet ran as ECS services on 100% Spot EC2 instances.
Zomato architecture diagram (public parts)
This diagram shows only what Zomato or its partners have shared publicly. Press Play to follow a request step by step.
- You order biryani.
- The Envoy mesh routes the call.
- Microservices on EKS/ECS handle the order.
- Billing writes the ledger to DynamoDB.
- Order events flow through Kafka; live updates via MQTT.
- Search used Solr to find restaurants.
- Engineers watch Grafana dashboards.
- Metrics are stored in VictoriaMetrics.
- Your order is on the way.
What does Zomato use? Main technologies
| Layer | What Zomato uses (public) | What it does in simple words |
|---|---|---|
| Cloud | AWS | Hosts Zomato |
| Containers | Amazon EKS, Amazon ECS on Spot EC2 | Run microservices |
| Mesh | Envoy | Service-to-service traffic |
| Events | Kafka, MQTT | Order events, live updates |
| Billing DB | Amazon DynamoDB (2024) | Billing ledger |
| Search | Apache Solr (2023) | Restaurant and dish search |
| Monitoring | VictoriaMetrics, Grafana (2024) | Metrics |
Which cloud provider does Zomato use?
Zomato runs on AWS. It uses EC2, ECS, EKS, multi-AZ setups and DynamoDB.
Why did Zomato move billing from TiDB to DynamoDB?
The 2024 move:
- The billing platform handles post-order work: it consumes order events from Kafka and produces a ledger for many business uses.
- TiDB needed several components to be run and tuned: TiDB servers, the Placement Driver, TiKV storage and TiFlash. Spikes meant costly over-provisioning.
- DynamoDB is fully managed and serverless, so it scales with traffic.
- Zomato used a single-table design, keeping related data together so one read returns everything needed.
- Results: about 90% lower average response time, throughput up to 8,000 requests per minute (four times the old design), near-real-time billing and lower total cost.
The lesson for learners: a managed database can remove a lot of operational work, but you must design your keys and access patterns carefully first.
How it started: monitoring and databases before 2024
- In 2018 Zomato monitored with a single Grafana server on EC2, one Prometheus server and New Relic.
- It then grew to 144 Prometheus servers with Thanos, multi-AZ, on ECS Spot instances, before moving to VictoriaMetrics in 2024.
- Billing first used TiDB, a distributed SQL database, before moving to DynamoDB.
- In 2023 Zomato reworked its Solr schema to remove dynamic fields that slowed search at peak times.
How does Zomato store data?
- DynamoDB: billing ledger and other business-critical services; billing throughput rose to 8,000 requests per minute, four times the old design.
- Solr: search indexes.
- VictoriaMetrics: metrics storage.
- Main order databases and image storage are not publicly shared.
How does Zomato monitor its systems?
- VictoriaMetrics (2024): 2.2 billion active time series, 17.5 million samples per second ingested on New Year's Eve 2024.
- The clean-up cut active time series by 40% and removed 200 unused dashboards.
- Grafana dashboards, load-tested with k6.
If we built an app like Zomato on AWS (illustrative)
Please read this first
This section is a learning design by Ravindra Bagale. It is not Zomato's real setup. Zomato really runs on AWS. We use AWS here because it is what you learn in the AWS course.
Suppose you want to build "DabbaGo", a tiffin delivery app for offices. Here is a simple AWS layout.
1. Network: VPC, subnets, route tables, gateways
- Create one VPC with CIDR
10.0.0.0/16in the Mumbai region (ap-south-1). - Use two Availability Zones (A and B), so one AZ failing does not stop the app.
- In each AZ make three subnets: public (load balancer, NAT gateway), private app (your code) and private data (databases, cache).
- Attach one internet gateway (IGW) to the VPC. Public route table:
0.0.0.0/0 → IGW. This route is what makes a subnet public. - Private app route table:
0.0.0.0/0 → NAT gateway, so servers can download updates but nobody can connect in from the internet. - Private data route table: only the local VPC route. Use VPC endpoints to reach S3, DynamoDB and SQS without going over the internet.
2. Compute: where the code runs
- ALB in public subnets.
- Services on EKS with Spot nodes for stateless work.
- Order events through SQS or MSK.
3. Storage and databases
- S3 + CloudFront for menu photos.
- DynamoDB for orders and billing.
- Aurora for restaurants; OpenSearch for search; ElastiCache for menus.
4. Monitoring
- Amazon Managed Prometheus + Grafana, or CloudWatch.
- Alarms on order delay.
Request flow diagram
Press Play. The numbered list below the diagram lights up with each step.
- You open DabbaGo. Route 53 answers.
- Photos via CloudFront.
- From S3.
- API calls through the internet gateway.
- The ALB forwards to a pod.
- The order API runs.
- Menus from ElastiCache.
- Restaurants in Aurora; order in DynamoDB.
- Order event to SQS.
- CloudWatch watches.
- Tiffin on the way.
Zomato versus our AWS design
| Part | Zomato (public info) | Our AWS design |
|---|---|---|
| Cloud | AWS | AWS |
| Containers | EKS, ECS on Spot | EKS |
| Events | Kafka, MQTT | SQS / MSK |
| Billing | DynamoDB | DynamoDB |
| Search | Solr | OpenSearch |
| Monitoring | VictoriaMetrics, Grafana | Managed Prometheus, Grafana |
Quick quiz: check what you learned
Which cloud does Zomato use?
- AWS
- Google Cloud only
- Own mainframes
- Azure only
Show answer
A. Zomato runs on AWS.
Zomato's billing platform moved from TiDB to what?
- MongoDB
- Amazon DynamoDB
- Oracle
- Excel
Show answer
B. It moved to DynamoDB in 2024.
Which tool replaced Prometheus and Thanos for metrics?
- Nagios
- Splunk
- VictoriaMetrics
- Datadog
Show answer
C. Zomato migrated to VictoriaMetrics.
What does Zomato use for restaurant search?
- MySQL LIKE queries
- Google Sheets
- Redis only
- Apache Solr
Show answer
D. Since 2023 search runs on Solr.
Learn it properly
Build the AWS parts yourself with these free guides and lessons:
- How to create a custom VPC with subnets, internet gateway and route tables
- Public vs private subnet in AWS · 3-tier architecture project on AWS
- How to launch an EC2 instance · Install the CloudWatch agent on EC2
- AWS course: What is a VPC? Default VPC vs custom VPC
- Related architectures: Swiggy Architecture Explained: AWS, Kafka, DynamoDB and CloudFront · Zerodha Architecture Explained: Self-Hosted Go, PostgreSQL, AWS · Uber Architecture Explained: 4,000 Services, Kubernetes, Docstore · LinkedIn Architecture Explained: Kafka, FishDB, Rest.li, LLM Feed
- All famous app architectures explained