Предотвращение двойных бронирований: почему системы дают сбой, и модель, которая не может
Где на самом деле возникает разрыв
Кликая по демоверсии тихим вторничным днём, невозможно определить, надёжно ли объединены проверка и запись под капотом или же они опасно разделены, — календарь выглядит одинаково в обоих случаях.
Почему "просто добавьте календарь получше" не решает проблему
Модель, которая действительно закрывает разрыв

Что на самом деле происходит, когда двое одновременно нажимают «забронировать»
Оба запроса приходят почти одновременно
Один запрос первым получает блокировку
Первый запрос одновременно перепроверяет и записывает
Второй запрос заново сверяется с новой реальностью
Второй клиент узнаёт об этом сразу
Как это устроено в Olmira
Похожие руководства
Неявки: что действительно меняет цифру
Нет — высокий трафик лишь заставляет это проявиться раньше. Сама брешь существует с того момента, когда для одного и того же слота может одновременно выполняться больше одного запроса, а это верно даже для тихой страницы; у бизнеса с малым трафиком между теми редкими моментами, когда двое кликают одновременно, могут просто проходить месяцы. Это свойство конструкции, а не следствие вашей загруженности.
Нет. Календарь — это то, что видит клиент; часть, которая предотвращает двойное бронирование, целиком происходит на сервере, невидимо, ровно в тот момент, когда бронирование записывается. Красивый интерфейс календаря ничего не говорит о том, что происходит под ним, когда два человека нажимают на один и тот же слот в одну и ту же секунду.
Они должны узнать сразу же — до того, как будет списан какой-либо платёж, — что слот только что заняли, и увидеть следующий реально свободный вариант. По-настоящему тревожный сценарий — обратный: система пропускает обе записи и выявляет конфликт лишь позже, обычно когда кто-то приходит.
Тот же механизм работает везде, где бронируется общий и ограниченный ресурс: столик, помещение, оборудование, слот доставки. Решение всегда одной формы: блокировать и заново проверять действительно ограниченный ресурс в момент подтверждения, а не мгновением раньше.
Да, в отдельных отраслях — авиакомпании исторически продают больше мест, чем есть, исходя из прогнозируемой доли неявок, как осознанное, просчитанное деловое решение с приложенной политикой компенсаций. Это не то же самое, что случайная разновидность, о которой это руководство: там никто этого не планировал и никто не рад такому открытию.