yandex
Торговля

Компания «Литрес» построила облачное аналитическое хранилище на базе КХД Cloud.ru и сократила время обработки и анализа данных

Как компания-лидер на рынке лицензионных цифровых книг в России и странах СНГ создала собственное аналитическое хранилище в Cloud.ru и теперь обрабатывает запросы при обращении к данным за 5 секунд

О компании

Компания «Литрес», основанная в 2005 году, сегодня является лидером на рынке лицензионных электронных и аудиокниг в России и странах СНГ. Ежемесячная аудитория сервиса Литрес составляет 11 млн человек, которые скачивают более 2,7 млн книг в месяц.

Задача

«Литрес» подошла к этапу, когда мощностей для быстрого расчета витрин для аналитики и отчетности перестало хватать, поскольку был накоплен значительный объем данных — около 6 ТБ. Все выгрузки специалисты делали с помощью PostgreSQL, но система работала нестабильно и иногда выдавала неточные данные, сложно было объединять информацию из разных источников и добиться консистентности.

Компания решила разработать собственное хранилище — создать надежную и масштабируемую платформу для хранения и обработки больших объемов данных, что позволило бы оптимизировать бизнес-процессы и повысить эффективность работы.

К этой задаче «Литрес» решила подойти поэтапно. Сначала выбрали конфигурацию, которая позволила бы реализовать большой пилот — первую часть хранилища. При этом понимали, если всё пройдет успешно и решение поможет добиться ожидаемых результатов, потребуется масштабироваться — создать вторую часть хранилища.

Почему Cloud․ru

У «Литрес» уже был успешный опыт работы с Cloud.ru по проекту запуска объектного хранилища S3— в нем хранятся служебные файлы, книги и многие другие данные. Компания решила укрепить сотрудничество новым совместным проектом. Кроме того, «Литрес» понравились условия — большой портфель сервисов Cloud.ru по работе с данными позволил подобрать оптимальное решение как с технической точки зрения, так и по стоимости.

Решение

Всю инфраструктуру хранилища компания решила развернуть в Cloud.ru:

  • развернули и настроили Debezium — забирает сырые данные из источников;
  • развернули и настроили Apache Kafka — в нее попадают данные из Debezium;
  • подняли PostgreSQL и Apache Airflow;
  • настроили DAG для Apache Airflow — он забирает данные из Kafka и перекладывает их в базу хранилища;
  • подняли PostgreSQL и настроили процедуры для обработки и приведения данных к целевым витринам;
  • настроили передачу данных в ВI и интеграцию ВI с базами.

В настройке и поддержании всей системы участвовало четыре специалиста: два разработчика, а также два аналитика, которые отвечают за процедуры обработки. Для выполнения основной части настроек — потоков, воркфлоу для подключения новых источников и таблиц, сбора данных, а также взаимодействия и интеграции различных компонентов, компания нанимала администратора. Остальные работы специалисты «Литрес» выполняли уже самостоятельно. Например, поднимали виртуальные машины в облаке, настраивали дополнительные компоненты, разворачивали Apache Kafka, чтобы предоставить данные партнеру — все работало просто и понятно.

В результате реализации первой части проекта «Литрес» удалось создать:

  • единую среду для работы аналитиков,
  • отчет для топ-менеджеров с основными ключевыми показателями.

Однако команда «Литрес» довольно быстро убедилась, что производительности PostgreSQL им будет недостаточно. Специалисты несколько раз переписывали код и сделали все возможное, чтобы ускорить и оптимизировать работу системы, но при обработке больших объемов информации она всё равно не справлялась, таблицы обновлялись долго.

«Когда мы закончили этап, связанный с продажами и выручкой, и все стало работать на автомате, мы поняли, что процедуры обновления работают долго. При том, что это обычные данные продаж. Если бы мы захотели обработать огромный массив веб-данных и события, PostgreSQL бы просто не выдержал» Кирилл Шевченко Руководитель отдела разработки информационно-аналитических систем группы компаний «Литрес»

Стало очевидно, что необходимы масштабирование и оптимизация, поэтому «Литрес» перешла к реализации второй части проекта.

«Изначально у нас было два варианта, как можно сделать большую аналитическую базу. Первый и самый очевидный — запустить Greenplum. Но для этого нужно было выделять серверы, оптимизировать решение, нанимать администраторов — это сложно и долго. В качестве второго варианта можно было закупить готовое решение у подрядчика, однако выяснилось, что поддержка такого решения при приемлемом уровне производительности стоит космических денег. В итоге в Cloud.ru нам предложили альтернативу — КХД — облачное корпоративное хранилище, которое дает возможность быстро обрабатывать огромные массивы данных из разных систем хранения и источников. Решение нас заинтересовало» Кирилл Шевченко Руководитель отдела разработки информационно-аналитических систем группы компаний «Литрес»

Чтобы понять, какое решение выгоднее, команда «Литрес» решила провести тестирование и сравнить работу Greenplum и КХД. Когда посчитали результаты, то поняли, что стоимость использования КХД в месяц — это зарплата одного-полутора администраторов. К тому же не пришлось бы заниматься поддержкой сложной инфраструктуры.

Также решили сравнить работу КХД, ClickHouse в облаке и локального ClickHouse компании. Специалисты по максимуму выровняли три решения, подобрали похожие конфигурации и протестировали их на разных по количеству обрабатываемых данных запросах. В результате ClickHouse показал себя лучше только в одном сценарии — при обработке одной сессии и одной таблицы без JOIN. Когда большие запросы на таблицах с JOIN запускали одновременно 20 пользователей, ClickHouse выдавал ошибку. При этом КХД с этой задачей справился успешно — обработка всех данных заняла 20 минут, что в рамках ежедневных операций неплохой для компании результат. Специалисты убедились, что в КХД соблюдаются все правила реляционной базы, только на больших объемах. Можно делать апдейты, ключи, транзакции, и все, что важно с точки зрения обновления данных.

«Коллеги делились, что настроить ClickHouse так, чтобы в нем работали все JOIN — нетривиальная задача. А с КХД мы об этом вообще не думали — просто подняли четыре ноды. Во-первых, удалось стабилизировать и автоматизировать обновления. Во-вторых, большие витрины теперь можно собирать одним движением руки. Раньше, чтобы обработать 300 млн записей и собрать витрину, нужно было разбить данные на части. Сейчас достаточно запустить один селект. Если что-то поменялось, актуализировать информацию можно в любой момент за 2 минуты. В-третьих, не нужно разбивать данные и запускать много кода, чтобы собирать сложные воронки. Для нас это серьезный шаг вперед» Кирилл Шевченко Руководитель отдела разработки информационно-аналитических систем группы компаний «Литрес»

Разработка хранилища на базе КХД заняла полгода. Сейчас в сети «Литрес» находятся только источники данных, а путь от них до хранилища построен полностью на компонентах Cloud.ru.

Архитектура хранилища:

Слой 1. Источники: базы данных и API.

Слой 2. Debezium: позволяет читать логи, базы данных и все изменения с помощью встроенного механизма репликации. Изменения поступают и пишутся в Apache Kafka в режиме real-time.

Слой 3. Apache Airflow: запускает процедуры, которые забирают данные из сырого слоя, обрабатывают, реструктурируют, чистят их, присваивают ID, делают расчеты и помещают в слой детальных данных. На этом этапе таблицы в хранилище уже приведены к бизнес-модели, каждая обозначает бизнес-объект. Например, продажу, состав продажи, платеж, подписку, атрибуты подписки.

По этой модели раскладываются данные из разных источников. Например, изучается каталог книг из одной базы и определяется, что входит в подписку на основе другой базы данных. В результате несколько источников находятся в одной бизнес-модели. Благодаря этому проще писать запросы и агрегировать — данные не дублируются.

Слой 4. Витрины: используют детальные данные, формируют таблицы и агрегируют их. Витрины-факты (количество проданных книг за день в разрезе пользователей и хостов) используются как источник данных для BI и Power BI. На этом этапе строятся отчеты.

«Процесс миграции в Cloud.ru прошел очень гладко. Я знаю, как это бывает у больших компаний: нужно закупить серверы, развернуть инфраструктуру, всё настроить. Это большая и очень дорогая работа. Мы же сделали всё за неделю: развернули сервис, настроили выгрузки в S3 из PostgreSQL, затем перенесли данные из S3 в КХД и запустили загрузки уже на нем» Кирилл Шевченко Руководитель отдела разработки информационно-аналитических систем группы компаний «Литрес»

Результат

Благодаря собственному хранилищу на базе КХД команда «Литрес»:

  • Существенно сократила время на обработку и анализ данных. Теперь обновление всего хранилища занимает 40 минут вместо 3 часов, среднее время выполнения процедур — 2 минуты вместо часа, а на обработку простого запроса при обновлении витрин хватает 5 секунд.
  • Повысила точность и достоверность получаемой информации. Теперь специалисты могут выгружать большие веб-данные и объединять их с данными о продажах с высокой точностью. Если где-то обнаружилась ошибка или нужны срочные изменения, не нужно писать код и циклы — апдейт занимает 5 минут. Так каждую ночь обновляется в среднем 200-300 тысяч запросов.
  • Улучшила управляемость и контроль за бизнес-процессами. Теперь удается создавать 3 витрины в день, а раньше на создание одной витрины требовалось несколько дней.

Облако Cloud.ru помогло решить все эти задачи очень быстро, поскольку позволило обойтись без затрат на развертывание инфраструктуры.

«Для нас это гигантский шаг вперед. Мы начали правильно использовать S3 — теперь можем делать сложные логики политики архивации данных. У КХД есть преимущество — можно использовать внешние таблицы. Это сильно упрощает процесс перезагрузки данных. Данные, которые давно не используются, мы отправляем в S3, а если они понадобятся, то можем извлечь и применить их одним запросом» Кирилл Шевченко Руководитель отдела разработки информационно-аналитических систем группы компаний «Литрес»

Планы

Планы «Литрес» до конца года — сделать оптимизацию в части финансов: настроить отчеты по качеству данных, алерты и всё, чтобы данные из хранилища эффективно использовались для бухгалтерских проводок.

Также с помощью КХД компания запустила сквозную аналитику. В планах — составление подробных отчетов для оценки эффективности онлайн-рекламы, рассылок и других маркетинговых активностей.

«Совместными усилиями мы развернули систему обработки больших данных для «Литрес», доказав, что не обязательно задействовать весь IT-штат, чтобы эффективно выполнять масштабные аналитические задачи в облаке. Успешно реализованный проект показал рынку, что облачные технологии делают работу с большими данными доступнее и проще. Сейчас мы планируем постепенно наращивать объем обрабатываемых данных хранилища — теперь это возможно благодаря успешному решению поставленных задач и доверию «Литрес».» Артур Карапетян Руководитель направления, Cloud.ru

Запросите бесплатную консультацию по вашему проекту

Cloud