Ошибки под контролем мы строим систему, которая следит за вашим сайтом

Hotel WD встраивает слой мониторинга ошибок (Sentry) в ядро своей инфраструктуры. Цель: если ваш сайт споткнётся, увидеть это раньше, чем вам расскажет гость, — и исправить без того, чтобы вы открывали тикет.

Ошибки под контролем: Hotel WD строит свою систему мониторинга в реальном времени

Путешественник нажал «Забронировать». Страница вернула что-то неожиданное. Он увидел странное диалоговое окно, закрыл вкладку и пошёл искать другой отель. Узнали ли вы об этом хоть когда-нибудь?

В большинстве отелей честный ответ — нет. Посетители редко заполняют форму обратной связи, почти не звонят на ресепшен и практически никогда не пишут письмо о том, что «почти сработало». Они просто закрывают вкладку. Через несколько недель собственник видит мягкое падение бронирований без видимой причины — но выручка к этому моменту уже потеряна.

В программной инженерии у этого явления есть имя: silent failure, тихий сбой. Это самый тихий враг любого сайта, работающего в масштабе.

На этой неделе мы начали встраивать Sentry в самое ядро Hotel WD. Каркас готов, развёртывание идёт. Цель проста: как только гость столкнётся с ошибкой в любой точке вашего сайта, мы хотим увидеть это раньше, чем вам — или гостю — придётся об этом сообщать.

Конвейер Sentry в реальном времени: приложение Hotel WD ловит исключение, Sentry обогащает его стек-трейсом и breadcrumbs, инженер получает оповещение в Slack.

Что такое Sentry — простыми словами

Sentry — это платформа production observability, которой пользуются GitHub, Microsoft, Disney, Spotify и более 100 000 инженерных команд по всему миру. Основана в Сан-Франциско в 2012 году, имеет европейский регион данных в Германии — это критично для операторов, ответственно относящихся к GDPR.

Её единственная задача: ловить в реальном времени каждую ошибку и каждое падение производительности в работающем софте и доставлять их вместе с правильным контекстом тем инженерам, которые могут их исправить.

По мере завершения развёртывания частью этого конвейера станет каждый отель на Hotel WD. Вам не нужно ничего устанавливать, настраивать или оплачивать дополнительно — всё происходит за кулисами.

Старый мир против нового

Старый мир. На вашем сайте что-то ломалось. Гость закрывал вкладку. Очередное бронирование терялось. В месячном отчёте появлялась «слабость» в продажах; причина оставалась невидимой. Урон был тихим и накопительным.

Новый мир. На вашем сайте что-то ломается. Конвейер мониторинга записывает это — точную ошибку, точную строку кода, маршрут гостя до сбоя и устройство, которым он пользовался, — и выводит нам на экран. Именно этот контекст позволяет выпустить исправление быстро, а не после недель гаданий. Цель: перехватить провал до того, как он вообще проявится в вашем месячном отчёте.

Так Amazon, Booking и Airbnb работают уже годами. Мы перенесли ту же операционную дисциплину на масштаб одного отеля.

Что Sentry фиксирует, когда что-то ломается

В тот самый момент, когда на вашем сайте бросается исключение, Sentry собирает:

  • Полный стек вызовов — какой файл, какая строка, какая цепочка вызовов привела к сбою.
  • Контекст гостя — браузер, устройство, страна, страница, на которой он находился, номер и диапазон дат, который он смотрел.
  • Breadcrumbs — точная последовательность страниц и кликов, приведших к ошибке. Аналог разговора пилотов перед взлётом, записанного в чёрном ящике самолёта.
  • Информация о релизе — в каком деплое Hotel WD эта проблема впервые проявилась. Это решающий параметр: за секунды видно, регрессия это или совершенно новый баг.
  • Шаблон частоты — это случается у пятидесяти посетителей или только у одного? Во всех браузерах или только в Safari на iOS 17?
  • Вам не нужно читать ничего из этого. Это читают наши инженеры. Вы получаете результат: ваш сайт продолжает работать.

    Что ещё было выпущено в этом спринте

    Одного Sentry недостаточно — вокруг него должна работать вся инфраструктура. Остальные изменения этой недели:

    1. Перехват ошибок в нескольких рантаймах

    SDK @sentry/nextjs встроен в ядро Hotel WD с раздельными каналами для серверного рантайма Node.js, edge-рантайма и браузера. Персональные данные (PII) по умолчанию не отправляются — в Sentry уходят только обезличенные трейсы ошибок и технический контекст. Соответствует GDPR, готово к комплаенс-аудитам в гостиничной отрасли.

    2. Эндпоинт проверки здоровья (/api/health)

    Новый эндпоинт каждую секунду проверяет, что приложение живо. Если PostgreSQL отвечает — возвращается 200 OK; если нет — 503 Degraded. Это позволяет:

  • Автоматически перезапускать контейнер, если он упал.
  • Подключить позднее балансировщик нагрузки, который не будет направлять гостей на больной сервер.
  • Запускать blue-green-деплои с правильными readiness-сигналами.
  • 3. Согласованность кэша (синхронизация TTL с Cloudflare)

    Разрыв TTL между edge-кэшем Cloudflare и внутренним кэшем Next.js устранён. В худшем теоретическом сценарии цена могла оставаться устаревшей до семи дней; теперь это окно сокращено до 24 часов. Обновления цен и доступности номеров распространяются в пределах суток — каждый раз.

    4. Исправление Cumulative Layout Shift

    Наш баннер согласия на cookies «всплывал» при загрузке — это тонкая, но реальная причина смещения вёрстки, которую Google PageSpeed штрафует, а поисковое ранжирование, как следствие, понижает. Баннер переписан так, что присутствует в DOM с первого кадра и появляется только через прозрачность. Layout shift с измеримого уровня сведён к нулю.

    5. Гигиена пайплайна сборки (Docker)

    Контекст production-сборки Docker сжался с примерно 600 МБ до 37 МБ. Деплои быстрее на 1–2 минуты, расход полосы пропускания на сервере ниже. Контейнер также выполняет собственную директиву HEALTHCHECK каждые 30 секунд.

    6. Защита от параллельных деплоев

    Гонка позволяла двум деплоям GitHub Actions стартовать одновременно. Закрыли через concurrency-группу.

    Что это значит для отельера

    Технических подробностей выше знать необязательно. Но если вы работаете на Hotel WD, вам стоит знать, что всё это применяется в ваших интересах.

    Коммерческое обещание Hotel WD сводится к одной фразе:

    «Не занимайтесь технической стороной отельерства — этим займёмся мы.»

    Это обещание невозможно выполнить одним лишь хорошим дизайном страниц. Оно должно держаться, когда страница уходит в продакшен, когда срабатывает ошибка, когда растёт задержка, когда обновляются цены, когда проводится платёж. Инженерная дисциплина на каждом уровне — единственный способ.

    Инфраструктурный слой, выпущенный на этой неделе, — это конкретный шаг от «персонального сайта одного отельера» к SaaS корпоративного класса.

    Кратко

    Область
    Время обнаружения сбоя
    Раньше
    Часы или дни
    Новый стандарт Hotel WD
    Автоматическая фиксация в момент сбоя
    Что это значит для вас
    Цель: увидеть раньше, чем вам придётся сообщать
    Область
    Контекст сбоя
    Раньше
    «Что-то сломалось»
    Новый стандарт Hotel WD
    Стек-трейс + браузер + след кликов
    Что это значит для вас
    Исправления бьют в настоящую причину, а не в догадки
    Область
    Тихие сбои
    Раньше
    Невидимые потери
    Новый стандарт Hotel WD
    Фиксируются и видны нам
    Что это значит для вас
    Месячные отчёты становятся честными
    Область
    Health-check
    Раньше
    Нет
    Новый стандарт Hotel WD
    /api/health каждую секунду
    Что это значит для вас
    Автоматическое восстановление
    Область
    Согласованность кэша
    Раньше
    До 7 дней устаревания
    Новый стандарт Hotel WD
    Не более 24 часов
    Что это значит для вас
    Цены и наличие — свежие
    Область
    CLS (PageSpeed)
    Раньше
    Штраф за смещение
    Новый стандарт Hotel WD
    Нулевое смещение
    Что это значит для вас
    Преимущество в SEO
    Область
    Размер сборки
    Раньше
    ~600 МБ
    Новый стандарт Hotel WD
    37 МБ
    Что это значит для вас
    Быстрее деплои, меньше окно ошибок

    Что дальше

    То, что выпущено на этой неделе, — это стартовая черта, а не финиш. На очереди:

  • Оповещения в реальном времени по Slack и e-mail, подключённые к Sentry — мгновенное уведомление команды.
  • Автоматический бэкап PostgreSQL с учением по восстановлению — нулевая потеря данных в катастрофическом сценарии.
  • Двухфакторная аутентификация (2FA) — критический слой безопасности для аккаунтов владельцев отелей.
  • Эндпоинт экспорта данных по GDPR — для гостей, запрашивающих копию своих персональных данных.
  • Нагрузочное тестирование k6 на 100 одновременных пользователях — измерение поведения системы при всплесках трафика.
  • Публичная страница статуса — операционное состояние, видимое клиентам в реальном времени.
  • Дорожная карта Hotel WD реализуется с уровнем прозрачности, нечастым на рынке отельного ПО.

    В заключение

    Когда гость заходит на ваш сайт, мы не хотим, чтобы он задумывался, всё ли работает. Мы хотим, чтобы он бронировал, не успев задать себе этот вопрос.

    Чтобы туда прийти, нужно быть уверенными, что всё действительно работает. А быть уверенными — значит измерять. Каждую секунду. В продакшене.

    Sentry — один из фундаментальных слоёв, который даёт эту уверенность. С этой недели — часть ядра Hotel WD. Другие слои уже в пути.

    Свяжитесь с Hotel WD и переведите свой отель на инженерную платформу →

    Tahir Dinç
    AUTHOR

    Tahir Dinç

    Turkey27+ YEARS EXP

    I have been working in the digital field since 1999. I still hold the position of Digital Marketing Manager at Türk SEM. I have also been involved in tourism-related activities since 2005.

    Hotel WD·Strategy Team