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

— Як власник готелю у Франції, я часто отримую запити від клієнтів і колег на бронювання конференц-залу. На жаль, я не знайшов зручного готового рішення для бронювань такого роду. Саме тому я вирішив самостійно створити програмне рішення для цієї мети і зробити процес інтуїтивно зрозумілим і простим.
Мулуд Архаб, операційний директор
Завдання Stfalcon
Завдання нашої компанії полягало в тому, щоб створити рішення, яке спростить і полегшить пошук і бронювання конференц-залів з урахуванням специфіки короткострокових заходів.
Сервіс повинен дозволяти користувачам здійснювати пошук за певними критеріями, такими як місце проведення заходу, необхідна площа і кількість учасників. Крім того, необхідно було забезпечити можливість замовлення додаткового обладнання для зустрічі або конференції та резервування житла для доповідачів і відвідувачів. Однією з ключових задач була також інтеграція створеного продукту з Channel Manager – спеціалізованим рішенням для перевірки вартості і наявності вільних номерів. Для власника готелю нова система повинна забезпечувати централізоване управління номерами і залами.
Рішення
Команда Stfalcon розробила веб-сервіс, який дозволяє:
- реєстрацію конференц-залів у сервісі в будь-якій точці світу;
- додавання опису залу, самого готелю і варіантів бронювання, які доступні;
- зручний пошук і бронювання конференц-залів і приміщень для клієнтів.
Менеджери заходів мають можливість зручного пошуку за місцем розташування, (можливий пошук за картою), датою, тривалістю заходу і кількістю учасників.
Крім того, можливе багатокомпонентне бронювання - приміщень, обладнання, їжі і житла. Все це можна замовити одночасно.

Технології
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 були інтегровані для більш зручного пошуку і кращої навігації.

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