О чём эта история

Компания Quick Resto разрабатывает IT-продукты для российского рынка общественного питания. В 2022 году к Quick Resto одномоментно пришло порядка 3 000 новых клиентов, что требовало быстро масштабировать инфраструктуру. Чтобы оперативно обеспечить потребности пользователей, Quick Resto мигрировала в Yandex Cloud.

В облако перенесли продукты компании и базу данных PostgreSQL объёмом 20 ТБ. На новой инфраструктуре развернули 31 виртуальную машину Yandex Compute Cloud и 4 кластера Yandex Managed Service for PostgreSQL. Новая инфраструктура позволяет быстрее подключать клиентов — на настройку и ввод в эксплуатацию крупных клиентов, которые решили перейти на сервисы Yandex Cloud уходит меньше суток. При этом подключение любого клиента к системе происходит моментально. Повысилась отказоустойчивость сервиса — время простоя в сумме за год не превышает двух часов.

Задача компании

Quick Resto — российская компания-разработчик IT-продуктов для заведений общественного питания. C 2013 года компания предоставляет решения, которые помогают автоматизировать рутинные действия: от организации производства до системы доставки. Цифровые продукты Quick Resto используют клиенты от Калининграда до Владивостока. Среди клиентов компании — международная сеть «ЧебурекМИ», крупнейшая сеть фастфуда на Дальнем Востоке «Еда и точка», федеральная сеть кофеен DO.BRO Coffee, франшиза lounge-баров «Мята Lounge», франшиза кофеен «Бодрый день» и многие другие. Общая выручка компаний-клиентов составляет более 8 млрд рублей в месяц.

В 2022 году у компании появилась необходимость масштабировать бизнес из-за резкого роста количества пользователей. Одновременно к Quick Resto обратились порядка 3 000 клиентов. Изначально компания использовала только собственные серверы, но такой большой пул заказчиков потребовал быстро нарастить вычислительные ресурсы. Однако, расходы на приобретение физических серверов оказались бы значительными, кроме этого процесс покупки железа и его подготовки к работе мог занять несколько недель, а компании требовалось оперативное решение. К тому же у Quick Resto уже были клиенты, которые предъявляли повышенные требования к отказоустойчивости и безопасности хранения данных. В компании понимали, что удовлетворить эти требования возможно только с использованием облачных решений, которые позволяют масштабировать ресурсы за несколько минут, а обслуживание инфраструктуры берет на себя надёжный провайдер.

Компания искала провайдера, который сможет обеспечить гарантированный уровень SLA, и, следовательно, обеспечит надежную работу Quick Resto, а также возьмет на себя задачи по обслуживанию инфраструктуры. Кроме того, обращали внимание и на наличие управляемых сервисов. Для Quick Resto важно было найти поставщика облачных услуг с ЦОД на территории России для российских клиентов. Это обеспечивает минимальную задержку при передаче данных, что может быть критично при работе высоконагруженных систем. Так как компания планировала размещать в облаке продукт для крупных клиентов, то важно было автоматическое масштабирование инфраструктуры.

Ранее Quick Resto уже использовала сервисы Yandex Cloud и отметила широкую линейку управляемых сервисов, удобный мониторинг и администрирование, оперативную работу службы поддержки и широкие возможности взаимодействия с облачным провайдером. Также с Yandex Cloud команда могла при необходимости увеличивать количество виртуальных машин, а благодаря сервисам платформы данных разворачивать по кнопке СУБД PostgreSQL. Это было особенно важно из-за возросшего количества новых клиентов и прогнозируемого роста потока в будущем. Поэтому Quick Resto приняла решение разместить часть своих сервисов в Yandex Cloud.

От монолита к микросервисам в облаке

10 лет назад сервис разворачивался на физических серверах, которые обслуживали самостоятельно. Первая версия продукта имела монолитную архитектуру: все компоненты системы были тесно интегрированы между собой и взаимодействовали напрямую. Такое решение было удобно на старте, так как у компании был только один клиент. С ростом бизнеса приложение усложнялось: система обрастала обвязками, появлялись новые функции. При этом монолит сложно поддерживать — изменение одной части сервиса может влиять на другие. Поэтому приняли решение перейти на микросервисную архитектуру, выделив часть функциональности в изолированные сервисы, написанные на Java и React. Такой вариант позволяет лучше управлять кодом, равномерно распределять нагрузку и легко масштабироваться. Облачная инфраструктура Yandex Cloud хорошо подходит для таких систем, так как позволяет масштабировать сервисы независимо друг от друга, а для управления предоставляет удобные инструменты.

Платформа Quick Resto состоит из двух основных сервисов: системы учета продуктов и продаж (бэк-офис) и кассового терминала (фронт-офис). Для расширения функциональности к ним подключается множество модулей: сайт для предзаказов и онлайн-оплат, платформа для доставки, мобильное приложение с push-уведомлениями, карты лояльности, электронное меню, дисплей покупателя и кухонный экран повара. Также в Quick Resto есть CRM-блок для работы с клиентской базой. Он позволяет формировать различные программы лояльности, скидки, бонусы и акции. Система может разбивать клиентскую базу на сегменты с использованием RFM-анализа и создавать целевые когорты для персонализированных предложений.

Процесс обработки начинается с приема заказа: кассиром на терминале непосредственно от гостя или из онлайн-сервиса, например, с сайта или приложения. Затем данные фиксируются локально на устройстве и передаются на сервер. После серверная часть принимает заказ и формирует очередь в брокере сообщений RabbitMQ. Данные фиксируются в базе данных PostgreSQL, откуда их могут запросить другие сервисы. При необходимости данные могут кэшироваться в MongoDB. В качестве буфера между серверной и клиентской частью используют CouchDB, которая обеспечивает работу сервиса даже при отсутствии интернета.

Команда Quick Resto развернула сервис в облачной инфраструктуре собственными силами. Чтобы сократить усилия и затраты времени на обслуживание, решили использовать сервисы платформы данных Yandex Cloud. Лучше всех под задачу подошёл Managed Service for PostgreSQL, так как команда ранее уже использовала PostgreSQL. Для размещения микросервисов выбрали виртуальные машины Yandex Compute Cloud. Команда проекта написала несколько Ansible-скриптов для развёртывания кластеров управляемого PostgreSQL и необходимого количества виртуальных машин. За оркестрацию Docker-контейнеров отвечает собственная система Quick Resto. Она универсальна — с её помощью команда Quick Resto разворачивает и управляет Docker-контейнерами как в облаке, так и на собственных вычислительных мощностях.

Отдельной важной задачей был перенос данных. Объём базы составлял порядка 20 ТБ, и её переносили ночью, когда количество обращений к сервису минимально, чтобы не останавливать его работу. Всего в облаке развернули 4 кластера Managed Service for PostgreSQL и 31 виртуальную машину Compute Cloud.

Компания не отказалась от использования собственных серверов — на них расположены системы мониторинга, оркестрации, логирования и хранятся бэкапы. А в облаке разворачивают необходимый набор Docker-контейнеров для каждого клиента. В этом случае для мониторинга используют Yandex Monitoring. За сетевое взаимодействие между всеми сервисами отвечает система оркестрации.

Результаты

Quick Resto повысила отказоустойчивость критической инфраструктуры и обеспечила высокую доступность своих продуктов за счёт миграции в Yandex Cloud. Так, в сумме за год сервис останавливался всего на пару часов для технического обслуживания, одномоментный простой был не более 2-3 минут. Повысили надёжность сервиса, что особенно важно для корпоративных клиентов. А компания смогла одномоментно начать обслуживать 3 000 новых клиентов. Также команда повысила компетенции в использовании облачных сервисов и получила возможность мониторить облачную инфраструктуру без траты времени специалистов на внедрение собственной системы мониторинга, а значит предвидеть нештатные ситуации и самостоятельно предотвращать их.

Чтобы подключить крупного клиента к системе, уходит меньше суток — за это время команда разворачивает инстанс в Compute Cloud, настраивает и проверяет данные и вводит сервис в работу.

Благодаря использованию управляемых сервисов удалось освободить ресурсы команды и распределить их на другие задачи. В планах компании подключить больше платформенных сервисов Yandex Cloud.

Таким образом Quick Resto продолжает развивать свои продукты и в будущем планирует предоставлять клиентам кастомизированные low-code решения.

Мнение

Александр Строкань,
CEO Quick Resto
Александр Строкань,
CEO Quick Resto

Экосистема Yandex Cloud сильно выросла за последние годы, появились удобные инструменты мониторинга, администрирования. Ключевым преимуществом для нас стали быстрое масштабирование и лёгкость подключения новых клиентов. Таким образом, с сильным партнёром Yandex Cloud мы предоставляем клиентам надёжное размещение и возможности для масштабирования бизнеса.