Roomeeting — сервис для онлайн бронирования конференц-залов

— Будучи хозяином отеля во Франции, я часто получаю запросы от клиентов и коллег на бронирование конференц-зала. К сожалению, я не нашел удобного готового решения для осуществления бронирований такого рода. Именно поэтому я решил сам создать программное решение для этой цели и сделать процесс максимально интуитивно понятным и простым.
Mouloud Arhab, COO Roomeeting
Задача Stfalcon
Задача нашей компании состояла в том, чтобы создать решение, которое облегчит и упростит поиск и бронирование конференц-залов с учетом специфики краткосрочных мероприятий.
Сервис должен позволять пользователям осуществлять поиск по определенным критериям, таким как место проведения мероприятия, требуемая площадь и количество участников. Кроме того, необходимо было обеспечить возможность заказа дополнительного оборудования для встречи или конференции и резервирования жилья для докладчиков и посетителей. Одной из ключевых задач была также интеграция созданного продукта с Channel Manager – специализированным решением для проверки стоимости и наличия свободных номеров. Для владельца отеля новая система должна обеспечивать централизованное управление номерами и залами.
Решение
Команда Stfalcon разработала веб-сервис, который позволяет:
- регистрацию конференц-залов в сервисе в любой точке мира;
- добавление описания зала, самого отеля и вариантов бронирования, которые доступны;
- удобный поиск и бронирование конференц-залов и помещений для клиентов.
Менеджеры мероприятий имеют возможность удобного поиска по местоположению, (возможен поиск по карте), дате, продолжительности мероприятия и количеству участников.
Кроме того, возможно многокомпонентное бронирование - помещения, оборудования, еды и жилья. Все это можно заказать одновременно.

Technologies
Roomeeting – веб-сервис, разработанный на PHP фреймворке Symfony версии 4.4 (последней LTS версии на момент разработки). Backend представляет собой исключительно RESTful API интерфейс, так как все три фронтенд-приложения реализованы как Single Page Application (SPA). Для деплоя продакшена используется Kubernets в Google Cloud, также используется Google Cloud Storage для хранения файлов. Кроме этого на бекенде реализованы методы для оплаты заказа через платежную систему Stripe. Из внешних сервисов также в проект интегрированы некоторые методы Google Maps API.
Roomeeting интегрирован в Channel Manager D-Edge. По предоставленной документации от этого сервиса, мы реализовали со своей стороны все необходимые API вызовы к сервису D-Edge. После этого мы проходили все этапы интеграции совместно со службой поддержки данного менеджера каналов. Благодаря этой интеграции, информация о бронировании комнат может синхронизироваться с другими системами бронирования, например Booking.com или Airbnb
Предметная область отельного бизнеса очень объемная, и это воплощается в огромное количество сущностей и связей между ними. Отдельно хочется отметить функционал поиска отелей и конференц-залов, так как это могло стать одним из узких мест сервиса. Так как в поиске принимает участие очень много разных фильтров, делать поиск одним запросом к базе было невозможным, без объединения огромного количества таблиц. А это негативно сказывается на скорости. Для решения проблемы был использован паттерн Chain Of Responsibility, один большой запрос с фильтрацией разбит на несколько последовательных шагов. Каждый следующий шаг вызывается только если еще есть результаты, которые необходимо фильтровать. При этом везде где возможно используется кеширование запросов и результатов, поэтому большинство запросов не запускаются в базе данных, а берут свои результаты из кеша. Благодаря этому значительно уменьшена нагрузка на базу и сложность реализации и поддержки механизма поиска.
Интеграция
Channel Manager
Интеграция с Channel Manager была сложной задачей. Channel Manager - это система, которая позволяет проверять и бронировать номера, их стоимость и наличие. Она синхронизирует все бронирования, сделанные на всех платформах, подключенных к системе, чтобы избежать случаев двойного резервирования. Данная система, уже была разработана ранее по определенным параметрам, и мы должны были создать новое решение с параметрами, указанными заказчиком, что усложняло работу.
Интеграция календаря
Календарь был интегрирован для владельцев отелей, для легкого и удобного просмотра предстоящих событий. Календарь позволяет проверять заказы, сделанные на определенную дату, и общую занятость конференц-залов.
Оплата
Для удобного процесса оплаты была интегрирована платежная система Stripe.
Карты
Карты Google были интегрированы для более удобного поиска и лучшей навигации.

Результат
Мы запустили комплексное онлайн решение, которое позволяет многокомпонентное бронирование конференц-зала, проживания и сопутствующих услуг в любое время из любого места и в любой точке мира.