Сеть ресторанов быстрого питания Rostic’s провела масштабную реорганизацию платформы данных, внедрив более современные и эффективные инструменты и обеспечив их работу в Yandex Cloud. О влиянии этого проекта на бизнес и открывающихся возможностях рассказывают Егор Попов, ведущий разработчик хранилищ данных, и Никита Целищев, инженер по данным сети ресторанов Rostic’s. Проект компании номинирован на премию Data Award.
- Что представляла собой аналитическая платформа Rostic’s до сих пор?
Егор Попов: Аналитическая платформа сети Rostic’s состоит из двух элементов: data-платформа и BI-отчетность. Изначально загрузка данных в платформу строилась на классическом ETL-подходе с использованием самописного Python-фреймворка на основе PySpark и SQL UDF для загрузки слоев внутри хранилища данных. Интеграция с основными и самыми крупными источниками данных была выстроена на прямых подключениях к базам данных и инкрементальной загрузке данных путем фильтрации SQL-запросов по бизнес-дате.
Такой подход имеет много узких мест: например, нагрузка на систему-источник – «спам» тяжелыми SQL-запросами, а также потери данных, если в источнике что-то изменилось и при этом нет аудитных полей, указывающих на эти изменения. Да и сама реализация ETL имела ряд недостатков: каждый пайплайн нужно было разрабатывать вручную, писать пользовательскую функцию (user-defined function, UDF) под каждую загрузку, расставлять зависимости.
- В чем заключались бизнес-проблемы, приведшие к необходимости построения новой платформы данных? Почему это важно для компании?
Е.П.: Наша компания – один из лидеров на рынке ресторанов быстрого обслуживания. В сети более 1,1 тыс. ресторанов, работающих под брендом Rostic’s, расположенных в 74 регионах РФ. Рестораны генерируют большой объем данных, которые необходимо быстро обрабатывать. Правами на бренд в России владеет «Юнирест», эта компания в том числе выполняет ряд бизнес-функций, включая финансовое планирование, маркетинг, HR, управление поставками. Эффективность этих процессов напрямую зависит от качества данных.
Кроме того, бизнес Rostic’s строится по модели франчайзинга. Партнерам также необходимо предоставлять актуальную информацию о работе их ресторанов, отдавать им данные и служить для них «единым источником правды» о работе всего бизнеса. Мы предоставляем для ресторанов доступ к информации о бизнес-показателях в его точках присутствия. Такая аналитика помогает партнерам быстрее принимать решения по управлению ресторанами.
Потребителями данных является BI-отчетность, аналитики данных. Еще одна важная функция платформы – построение озера данных, то есть единого хранилища данных для всей компании. Источником данных является большое количество систем: чаще всего это реляционные базы данных, есть FTP и API, а также файлы, которые поступают на почту и в хранилище. Чтобы ускорить обработку данных и упростить работу аналитиков, потребовалось пересмотреть архитектуру хранилища и перевести его на более современный стек технологий.
- Какие требования предъявлялись к создаваемому хранилищу данных?
Никита Целищев: Во-первых, хранилище данных (DWH) должно иметь архитектуру «звезда» и обладать полным слепком всех данных со всех источников. При этом загрузка должна осуществляться ежедневно, актуальность данных – не ранее T-1, а данные должны обновляться в хранилище до 9:00 по московскому времени. Платформа данных должна включать в себя озеро данных для холодного хранения, DWH для детальных данных, витрины данных для быстрого доступа к подготовленным или очищенным данным.
Важно было изменить ETL-подход на ELT, и были необходимы инструменты управления качеством данных и обеспечения наблюдаемости данных (Data Observability).
- Как это отразилось на выбранном стеке технологий?
Н.Ц.: Обновленная платформа данных архитектурно строится на Greenplum, а инструмент dbt отвечает за трансформацию данных. Airflow оркестрирует dbt, а dbt загружает сами данные. Данные загружаются из S3, куда они попадают с помощью Airbyte.
Входная точка работ – это забрать данные из всех источников и отправить их на платформу. Хранилище организовано на базе S3. Здесь находится озеро данных и исторические данные. Из S3 удобно считывать с помощью формата PXF данные Greenplum без дополнительных фреймворков. Использование S3 также позволяет оптимизировать затраты на обслуживание Greenplum. Все исторические данные, которые не нужны оперативно, попадают в S3, где происходит их охлаждение. Данные, которые поступают из источников, поступают уже в охлажденном виде.
Мы также перешли с концепции пакетной загрузки на Change Data Capture (CDC, «захват изменения данных»). Это механизм загрузки данных, при котором учитываются только измененные данные и нет необходимости отправлять прямые SQL-запросы в базы данных. Это в том числе позволяет снизить нагрузку на систему-источник. Это позволило заметно вырасти в производительности, сократить время разработки и сохранить всю историю в первозданном виде, имея полный слепок данных с источников.
После того, данные из S3 поступили в «сырой» слой, необходимо построить детальный слой витрин. Классический подход при построении этой трансформации – самописный ETL-фреймворк, написанный на Python, который оперирует YML-файлами, обрабатывает их и загружает в хранилище. Для прогрузки слоев DWH необходимо было многое делать вручную. Дата-аналитик с отсутствием опыта работы с Airflow не мог этого сделать. Внедрение инструмента dbt дало возможность оперировать знакомым каждому языком SQL, а зависимости и загрузка данных были реализованы автоматически.
Переход на dbt с самописного ETL-фреймворка себя оправдал: аналитики сами стали создавать объекты, в два раза сократили трудозатраты на постановку объекта на регламент, исключили разработчиков из построения детального слоя витрин. Аналитики создают модели быстрее, чем это делал бы разработчик, вдвое.
Greenplum и Clickhouse часто противопоставляют, но мы используем их в связке. Оба сервиса управляются с помощью Yandex Cloud. Поддерживать два кластера самостоятельно – трудозатратно, а Yandex Cloud это автоматизировано. Greenplum мы используем для построения быстрых слоев хранилища. Clickhouse, в свою очередь, используется как система источников для BI, подготовки данных для отчетности и др. В связке мы добились крайне быстрой, оптимальной работы.
- Почему были выбраны сервисы Yandex Cloud?
Е.П.: Мы выбрали Yandex Cloud, потому что у компании есть большое количество управляемых сервисов, что помогает снизить нагрузку на команду – все рутинные задачи выполняет облачный провайдер. В частности, в Managed Service for Greenplum и ClickHouse за управление кластерами и мониторинг работоспособности сервисов отвечают специалисты Yandex Cloud. Кластерами можно удобно управлять через интерфейс, используя большое количество метрик, логов, уведомлений, дашбордов. Это помогает оперативно отслеживать, что и в какой момент происходит в хранилище. Кроме того, мы используем возможности резервного копирования – есть возможность восстановить кластер Greenplum из резервной копии за заданный период времени.
- Что в итоге представляет собой созданная платформа?
Н.Ц.: В хранилище аккумулируются и обрабатываются данные из 12 источников, в том числе из программы для предприятий общественного питания R_Keeper, учетной системы «1С», банковских приложений, сервисов заказа быстрой доставки, таких как «Яндекс Еда», сервиса для треккинга и аналитики мобильных приложений AppMetrica, платформы для автоматизации маркетинга Mindbox и других.
В качестве технологий используются ClickHouse и Greenplum для организации хранилища данных, российская BI-система «Форсайт» и Python Airflow DBT как оркестратор пополнения данных. Все инструменты развернуты на платформе Yandex Cloud в Kubernetes. Классическая «тяжелая» ETL-загрузка происходит раз в сутки, ночью. Днем перегружаются небольшие объекты, для которых необходима оперативная аналитика. Managed Kubernetes как ETL-платформа в Yandex Cloud позволяет нам разграничивать ресурсы и автоматически масштабировать кластер ночью, а днем не платить за него. Удобные мониторинги, удобная настройка.
- В чем «фишка» созданного решения, что на ваш взгляд, удалось особенно удачно?
Н.Ц.: Можно выделить несколько деталей. В первую очередь, это автоматизация трансформации данных в слоях хранилища с помощью инструмента dbt и автоматически генерируемая документация объектов хранилища. Кроме того, появился Data Lineage, реализовано CDC как полноценная замена ETL-процесса. Производится автоматическое тестирование данных на их качество в процессе загрузки. Благодаря использованию dbt разработку всех объектов хранилища теперь можно доверить аналитикам, что существенно снижает трудозатраты и время работ.
- Каких значимых результатов удалось достичь на данный момент?
Е.П.: Cущественно повысилась прозрачность в работе с данными. Каждое утро в телеграм-бот приходит отчетность о том, как прошла ночная загрузка. Высвечиваются идентификаторы записей, которые не прошли проверки – например, что-то задублировалось, по каким идентификаторам прошли дубли и сколько их было. Это помогает оперативно исправлять ошибки и следить за качеством данных.
Благодаря реализации проекта компания уже ускорила разработку новых технологий в три раза и в два раза быстрее готовит аналитические отчеты – например, по продажам позиций из меню.
- А что ожидается в дальнейшем?
Е.П.: Платформа работает с 2022 года, и за это время уже стала неотъемлемой частью бизнеса компании. У нас большие планы по развитию. Например, развитие self-service BI – концепции, при которой бизнес может сам строить аналитику по параметрам, которые ему необходимы. Мы хотим использовать данные для разработки технологий искусственного интеллекта, в частности – внедрить прогнозирование спроса и предложения, развивать персонализированные сервисы для гостей.
- Какую роль играет реализация проекта для бизнеса компании? Какие принципиально новые возможности появляются?
Е.П.: Дата-платформа помогает оперативно реагировать на изменение ключевых показателей, видеть отклонения и аномалии данных, которые происходят в результате процессов, принимать на их основании решения и более гибко управлять бизнесом, реагируя на изменения рынка.
Большинство отчетов для бизнеса формируются уже на основании существующих данных, загруженных в систему. Самообслуживание (Self-service) – важный инструмент аналитики, который помогает бизнесу самостоятельно проверять различные гипотезы и создавать новые срезы данных. В результате процесс разработки происходит гораздо быстрее и дешевле, без привлечения дорогостоящих ресурсов разработчиков.
- В каком направлении будет развиваться платформа данных Rostic’s?
Е.П.: Будет происходить уход от пакетной (Batch) загрузки в сторону потоковой загрузки (Streaming), что даст дальнейшую экономию времени. Проведем внедрение полноценного каталога данных. Ожидается развитие data-driven культуры и процессов data governance, а также в целом направления Data Science.