BookMyShow Ticket Booking System Design
How a movie ticket booking platform like BookMyShow prevents double booking: seat locking, a booking service, payment gateway integration and notifications.
How it flows
- Web App → API Gateway (HTTPS/REST)
- Mobile App → API Gateway (HTTPS/REST)
- API Gateway → Auth Service (JWT Validate)
- API Gateway → Search Service (REST)
- API Gateway → Booking Service (REST)
- API Gateway → Payment Service (REST)
- Booking Service → Seat Lock Service (Lock / Release)
- Booking Service → Primary Database (SQL)
- Seat Lock Service → Cache / Seat Lock Store (Redis TTL)
- Search Service → Search Index (Query)
- Payment Service → Payment Gateway (HTTPS)
- Payment Service → Message Broker (Payment Event)
- Booking Service → Message Broker (Booking Event)
- Message Broker → Notification Service (Consume)
- Theatre Integration → Theatre Partner APIs (REST / XML)
- Booking Service → Theatre Integration (gRPC)
- Booking Service → Cache / Seat Lock Store (Read Cache)
- Message Broker → Monitoring & Logging (Logs / Metrics)
- Payment Service → Primary Database (SQL)
Components
Web App · Mobile App · API Gateway · Auth Service · Search Service · Booking Service · Seat Lock Service · Payment Service · Notification Service · Theatre Integration · Primary Database · Cache / Seat Lock Store · Search Index · Payment Gateway · Theatre Partner APIs · Message Broker · Monitoring & Logging