alebairos
https://devinz1993.medium.com/book-notes-system-design-inter...
Extracted from the post:
Chapter 7. Hotel Reservation System Functional requirements: - View hotels and rooms. - Reserve a hotel room. - Add/delete/update a hotel room. - Support overbooking. Non-functional requirements: - Support high concurrency. - Moderate latency (a few seconds for reservation). Choose a relational database for the read-heavy workload and ACID properties. Include an idempotency key in the API for making reservations to avoid double booking. Use the microservice architecture and use remote procedure calls for inter-service communication. Keep a pre-populated room type inventory (for 2 years ahead) to support reservations by room type (instead of by room id). Concurrency control: - Pessimistic locking is prone to deadlocks and tends to have bad performance. - Optimistic locking is usually faster but performance dramatically drops when contention is heavy. How to scale up? - Shard the database by hotel since most queries need to filter by it. - Cache inventory information (aggregates) in Redis to reduce database load and improve read performance. Use the same service to manage reservations and the inventory to avoid data consistency issues that require 2PC or Saga.
maxklein, it seems u lack descent programming skills, since my experience with django is completely different. Most of the time the problem is with who codes, not the framework or tool.