Кейс 03 / Разработка и DevOps

Платформа онлайн-бронирования для гостиничного бизнеса

Объединить бронирование, тарифы, доступность номеров, оплату и каналы продаж в одном кабинете без риска овербукинга.

Единая платформа для управления бронированием, тарифами, доступностью, оплатой и каналами продаж. Состояние брони и правила повторной обработки защищают систему от дублей и овербукинга.

  • SaaS
  • Бронирование
  • Платежи

С чего начали

  • Зафиксировали владельца каждого вида данных между отелем, каналами продаж, платежной системой и платформой.
  • Сохранили единое состояние брони внутри платформы.
  • Заранее определили обработку задержек, повторных уведомлений и расхождений по доступности.
  • Сделали операции с доступностью транзакционными, а внешние заявки идентифицируемыми.

Что сделала команда

  • Разработали бронирование по датам, гостям, номеру, тарифу и дополнительным услугам.
  • Создали кабинет отеля для управления ценами, квотами, ограничениями и закрытыми датами.
  • Добавили временный резерв номера и автоматическое освобождение просроченного резерва.
  • Подключили менеджер каналов и обмен доступностью с внешними площадками.
  • Реализовали оплату, возврат, частичную отмену и подтверждающие документы.
  • Добавили тарифные правила, журнал изменений и мобильный сценарий кабинета.

Как проверили результат

  • Проверить, что два клиента не могут купить последний доступный номер.
  • Проверить сохранение цены уже подтвержденной брони после изменения тарифа.
  • Проверить защиту от второй оплаты при повторном callback.
  • Проверить восстановление потерянного уведомления повторной синхронизацией.
  • Проверить критические сценарии под нагрузкой и в браузере.

Что получил заказчик

  • Web и mobile клиенты
  • Backend и миграции
  • Интеграционные контракты
  • Схема состояний брони и набор автотестов
  • Инструкции поддержки для расхождений между каналами

Технологии и инструменты

  • .NET
  • Vue.js
  • Flutter
  • Microsoft SQL Server
  • Redis
  • RabbitMQ
  • OpenAPI
  • k6

Следующий шаг

Обсудим задачу с похожими ограничениями

Пришлите короткое описание. Предложим формат первого этапа, критерии приемки и подходящий состав команды.