О чём эта история
Farfor — сеть доставки еды, охватывающая более сотни городов по всей России. С помощью собственной цифровой платформы компания координирует работу свыше 170 филиалов, в числе которых как собственные точки, так и предприятия франчайзинговых партнёров.
Компания за полгода подготовила платформу и перенесла её с выделенных серверов в Yandex Cloud. Широкий выбор управляемых сервисов позволил Farfor подобрать необходимые решения под архитектуру проекта и организовать отказоустойчивую инфраструктуру. Переход экономически оправдан, так как облачная инфраструктура, в отличие от физической, не станет ограничивающим фактором при росте бизнеса. Повысилась отказоустойчивость, сократились затраты на подготовку к пиковым нагрузкам в праздничные периоды, таким образом удалось снизить риски финансовых потерь. Провайдер гарантирует обновления платформы, откаты и внесение в неё исправлений, а также надёжный мониторинг её состояния. Количество отказов клиентского сайта упало практически до нуля. Farfor достигла уровня zero downtime при обновлениях и релизах.
Решить проблемы деплоймента и отказоустойчивости
Farfor — российская сеть доставки еды с центральным офисом в Уфе. Компания работает с 2010 года и сегодня доставляет еду клиентам в 117 городах. Её оборот составляет 7 млрд рублей в год. Farfor поддерживает франчайзинговую сеть из более чем 100 организаций, которые обеспечивают ей 77% дохода.
Чтобы организовать и поддерживать бизнес-процессы, Farfor разработала программную платформу, включающую в себя ERP‑систему и несколько приложений. Решение представляло собой монолит и полтора десятка интегрированных с ним микросервисов и было развёрнуто на выделенных серверах. При этом специалисты Farfor постоянно сталкивались с проблемами деплоймента при обновлениях платформы. Сложности были связаны с архитектурными особенностями самого монолита и трудностями масштабирования физической инфраструктуры, что в принципе не позволяло накатывать обновления без простоев. Кроме того, в ЦОД провайдера периодически возникали перебои электропитания и сетевые проблемы, что также затрудняло работу. Потенциальные потери при отказе сайта в праздничный день на 1 час могли достигать 4 млн рублей.
Также команда хотела начать применять Kubernetes® для оркестрации контейнеризированных приложений, автоматизации их развёртывания и, как результат, упростить масштабирование проекта. Farfor нужна была отказоустойчивая инфраструктура, её автоматическое масштабирование и балансировка нагрузки.
Всё это можно было осуществить и на выделенных серверах, но специалисты Farfor понимали, что поддержка такого решения будет сложной, дорогой и потребует компетенций, которые у команды отсутствовали. В итоге Farfor пришла к решению перенести свою платформу в облако и использовать управляемые сервисы, делегируя часть нагрузки по обслуживанию инфраструктуры провайдеру.
Farfor оценивала несколько облачных платформ. Новый партнёр должен был гарантировать высокий уровень SLA и обеспечивать широкий набор технологий и сервисов для надёжной работы проекта. При этом учитывались такие факторы, как отказоустойчивость, возможности масштабирования, а также прозрачность работы облачной платформы и скорость реакции поддержки.
Рассмотрев несколько вариантов, компания остановилась на Yandex Cloud. Этот провайдер имеет хорошую репутацию на рынке, предоставляет широкий спектр управляемых сервисов и, по мнению специалистов Farfor, быстрее других облачных платформ внедряет новые технологии.
Поскольку Farfor работает с клиентскими данными, было важно, что Yandex Cloud выполняет ключевые требования международного генерального регламента о защите данных GDPR и все требования российского закона № 152‑ФЗ.
Миграция в Yandex Cloud для повышения отказоустойчивости платформы
Основа платформы Farfor — ERP‑система, которая обеспечивает управление заказами, инвентаризацию и финансовые расчёты. Она написана на Python с использованием фреймворка Django. С её помощью менеджер доставки может работать с кассовыми блоками, блоками управления сотрудниками — управлять курьерами, сменами, вести зарплаты, собирать рейсы, формировать отчётность. Эти модули отвечают за операционную работу: процессы доставки еды и работы зала.
В системе используются два интерфейса ERP. Основной построен на Ext JS и обеспечивает полную функциональность управления бизнесом. Параллельно команда внедряет новый интерфейс на ReactJS, который постепенно заменяет отдельные модули. Такой подход позволяет создать более гибкую систему с независимыми компонентами UI и одновременно обкатать новую технологию в реальных условиях.
В состав платформы входят ещё несколько сервисов, в том числе:
- приложение для курьеров, написанное на Dart и Flutter, которое позволяет строить трекинг заказов и отслеживать метрики их выполнения;
- сервис для POS‑терминалов, которыми пользуются кассиры в залах обслуживания;
- приложение для кухни, также написанное на Dart и Flutter, которое позволяет видеть ключевые метрики по скорости изготовления заказов и их распределению;
- приложения для конечных клиентов для Android и iOS, написанные на Python, которые позволяют заказывать еду;
- блок модулей, связанных с маркетингом, учитывающих бонусы, промокоды и акции;
- микросервисы, написанные на Python с использованием фреймворка FastAPI. Они служат для взаимодействия с платёжными системами, управления камерами контроля качества и принтерами для печати этикеток, отправки СМС.
Кроме того, платформа интегрирована с облачной АТС и имеет сервисы авторизации, верификации автоматизированного информирования клиентов.
Команда Farfor использует распределённую систему обработки очереди задач Celery и брокер задач Redis. Для работы ERP развернули несколько реплик СУБД MariaDB, а для кеширования и управления данными — Elasticsearch. Каждый из микросервисов использует собственную базу PostgreSQL.
Farfor перенесла решение в Yandex Cloud примерно за полгода, причём большую часть времени заняли подготовка и перенастройка CI/CD под новый процесс развёртывания. При этом в целом сохранили архитектуру решения, но некоторые модули переписали в виде микросервисов. Сейчас команда постепенно разбивает монолит на отдельные сервисы.
Команда подготовила репозитории с кодом и Helm charts под новую инфраструктуру, настроила сервисы мониторинга на базе OpenSearch, которые используют VictoriaMetrics для сбора метрик о нагрузке и Grafana для отображения данных.
Перенос самого продукта и баз данных занял около трёх часов с небольшим ночным даунтаймом. Всю работу компания выполнила самостоятельно. Сначала развернули инфраструктуру и настроили пайплайн CI/CD, перенесли в облако стейджинг-окружение и протестировали его. Для оркестрации Docker‑контейнеров с бизнес-сервисами проекта, которые создаются по мере разбиения монолита, развернули четыре кластера Yandex Managed Service for Kubernetes®. Для управления образами и их хранения — Yandex Container Registry. Чтобы упростить развёртывание приложений, специалисты Farfor использовали Argo CD.
Для построения CI/CD использовали Yandex Managed Service for GitLab с настроенным автоматическим тестированием кода приложения. Статические данные (картинки, скрипты, медиафайлы) компания перенесла в хранилище Yandex Object Storage, а MariaDB — на виртуальные машины Yandex Compute Cloud. Базы данных, используемые микросервисами, разместили в четырёх кластерах Yandex Managed Service for PostgreSQL. Для хранения кеша и для синхронизации выполнения задач микросервисами развернули Yandex Managed Service for Redis™. Для обновления базы данных разработали схему миграции, учитывающую сверку данных.
Для синхронизации статического контента, оптимизации работы с merge requests в GitLab и управления жизненным циклом Git Feature Branches команда использует Yandex Cloud Functions. Для распределения сетевой нагрузки — Yandex Network Load Balancer. Для анализа и визуализации данных — Yandex DataLens, который позволяет гораздо быстрее оценивать ситуацию и принимать правильные управленческие решения. Тариф Business позволил безопасно встраивать чарты непосредственно в ERP.
Переход в Yandex Cloud не вызвал больших трудностей. Изначально команда Farfor опасалась, что при переходе на виртуальные машины могут упасть производительность СУБД и скорость передачи данных по сети, но эти опасения не подтвердились.
Автоматическое масштабирование инфраструктуры и гарантированный SLA
Farfor полностью перенесла решение на платформу Yandex Cloud. Команда подобрала под архитектуру проекта необходимые облачные сервисы из широкого набора Yandex Cloud и организовала отказоустойчивую инфраструктуру, которую легко поддерживать. Farfor развернула в облаке не только продакшн, но и вычислительный контур проверки пререлизов продуктов для финального тестирования сервисов и мониторинга нагрузки. Развёртывание сервисов стало прозрачным, также снизилась вероятность ошибок и простоев из‑за откатов.
Ключевое преимущество нового решения — распределение кластеров Kubernetes по нескольким зонам доступности. Работоспособность системы сохраняется даже при возникновении сбоев в отдельных зонах. Это важно для компании в конкурентной нише доставки еды, так как высокий уровень доступности сильно снижает репутационные риски Farfor, которая поддерживает нужный уровень сервиса для франчайзи. Другое важное улучшение — автоматическое масштабирование узлов и подов. Платформа эффективно справляется с нестандартными нагрузками, будь то DDoS-атаки или всплески пользовательской активности в праздничные дни. Визуализация в DataLens позволяет бизнесу быстро измерять показатели, ориентироваться в результатах деятельности и делать выводы об эффективности.
Кроме этого, миграция позволила Farfor выполнить требования российского законодательства в части хранения персональных и платёжных данных клиентов. Платформа Yandex Cloud использует защищённые каналы связи, а все облачные сервисы аттестованы в соответствии с требованиями ФСТЭК.
Несмотря на то, что стоимость эксплуатации решения несколько выросла, Farfor считает переход в Yandex Cloud экономически оправданным. Увеличение расходов на инфраструктуру компенсируется рядом преимуществ, особенно в долгосрочной перспективе:
- Повысили отказоустойчивость, сократили затраты на подготовку к пиковым нагрузкам в праздничные периоды, что привело к снижению риска финансовых потерь.
- Количество отказов клиентского сайта сократилось практически до нуля.
- Достигли уровня zero downtime при обновлениях и релизах.
- Внедрение feature‑branch-подхода ускоряет разработку и тестирование.
В будущем Farfor планирует развивать платформу с использованием YandexGPT API и Yandex SpeechKit. В частности, компания предполагает разработать собственную АТС на базе Yandex SpeechKit. Также с помощью этих сервисов Farfor надеется улучшить систему подтверждения заказов, внедрить голосовой информатор о заказе и ввести систему диктовки кодов.
Кроме того, для анализа бизнес-показателей команда проекта рассматривает Yandex Managed Service for ClickHouse® и Yandex Managed Service for Apache Kafka®.
Мнение
Размещение нашей платформы в облаке обходится дороже, чем на выделенных серверах. Но такая ценовая разница с лихвой компенсируется гибкостью и удобством использования решения, отказоустойчивостью и возможностью автоматического масштабирования в зависимости от нагрузки. Проще говоря, простои нам обходились дороже. Да и наши инженеры наконец-то могут отдыхать в выходные дни, без необходимости постоянно наблюдать за работой системы, опасаясь её падения.