Design an airline booking system
Company: Axon
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Technical Screen
Design an airline booking system that supports flight search (including multi‑leg connections), booking, seat selection, and itinerary modification/cancellation. Define core REST/gRPC APIs for search, book, modify, and cancel; the data model for flights, legs, fares, seat inventory, reservations, and users; and how to ensure seat availability, atomicity across connecting segments, and idempotency. Discuss consistency guarantees, concurrency control to prevent overbooking, and strategies for strong vs. eventual consistency across regions. Explain integration with payment, ticketing, notifications, and refund flows. Address indexing and caching for search queries (origins, destinations, dates, cabin), pagination and sorting, and flexible‑date search. Cover scaling, sharding, and read/write patterns; resiliency (failover, retries, sagas), observability, and SLAs. Compare trade‑offs for single‑airline vs. multi‑tenant OTA scenarios and outline partner API integration and rate limiting.
Quick Answer: This question evaluates a candidate's ability to design scalable, consistent, and resilient distributed systems for transactional domains, emphasizing API design, data modeling, concurrency control, idempotency, seat inventory guarantees, and external integrations like payments and ticketing.