О чём эта история
Faberlic — один из крупнейших парфюмерно‑косметических брендов в мире, входящих в ТОП-100 по версии Women’s Wear Daily. Компания выпускает более 1500 новых продуктов в год и обладает широкой сетью консультантов по всей России.
Уже более 10 лет Faberlic аккумулирует статистику по товарам, остаткам, консультантам и заказам. Эти данные были размещены в Data Warehouse, развёрнутом в Microsoft Azure. Для оптимизации стоимости владения и скорости работы хранилища при постоянно растущем объёме передачи и хранения данных Faberlic, совместно с компанией Navicon, перенесли DWH в Yandex Cloud. Faberlic, Navicon и Yandex Cloud создали единую команду по миграции и оптимизации размещения хранилища на новой площадке. Благодаря взаимодействию специалистов удалось за полтора месяца полностью осуществить перенос DWH объёмом в 7 Тб данных.
Миграция хранилища данных и создание команды поддержки
Faberlic — крупнейшая российская компания на рынке прямых продаж. Faberlic занимается производством и продажей косметики, парфюмерии, бытовой химии, товаров для дома, одежды, аксессуаров, обуви и другого. Продукцией компании каждый день пользуются 8 миллионов семей России. Компания имеет не только большой штат работников, но и широкую сеть консультантов, а также большую логистическую сеть доставки товаров.
Faberlic аккумулирует исторические данные за последние 10 лет в едином хранилище данных и дополняет их оперативной информацией по текущим продажам. Источники данных — БД Oracle c заказами и платежами, бухгалтерская информация из 1C, складская база MS SQL Server. Эти данные используются при планировании новых продуктовых линеек, прогнозировании продаж, для оперативного предоставления отчётности консультантам и общей аналитики руководству компании. Изначально Data Warehouse Faberlic размещался в Microsoft Azure. Со временем объём накопленных данных увеличился до 7 Тб, а общее количество пользователей составляло до миллиона человек. В этих условиях вместе с объёмами передаваемых данных стало увеличиваться время загрузки и стоимость владения решения. Faberlic, совместно с партнёром Navicon, стали искать варианты оптимизации. Кроме того, специалисты Faberlic хотели сделать решение более гибким, сформировать команду экспертов для дальнейшей поддержки DWH и затем расширять функциональность.
Компания рассматривала несколько вариантов размещения DWH. По результатам исследования было принято решение перенести хранилище данных в Yandex Cloud. Одним из аргументов в пользу новой платформы стала возможность быстрого и индивидуального взаимодействия со специалистами облачного провайдера, так со стороны Yandex Cloud в проекте участвовали облачный инженер и архитектор.
Развёртывание, тестирование и повышение производительности
Команды Faberlic, Navicon и Yandex Cloud составили совместный план по переносу DWH с возможностью отката к предыдущей конфигурации, тщательным тестированием новой и оптимизацией.
Миграция происходила в два этапа: воссоздание вычислительного контура в Yandex Cloud и тестовая загрузка данных, функциональное тестирование. По завершении миграции провели нагрузочное тестирование с последующей оптимизацией и переключением продакшена.
Сначала команда миграции создала вычислительный контур. В Yandex Cloud был развёрнут кластер MS SQL Server из двух виртуальных машин, полностью инфраструктурно повторяющий конфигурацию в Microsoft Azure. На этом этапе появилась возможность оптимизировать решение. В Microsoft Azure хранилище данных Faberlic было развёрнуто в Microsoft SQL Server Enterprise Edition 2017. Было решено сменить версию на более новую, 2019 года, так как архитектура MS SQL Server подверглась значительным изменениям, и переход позволил значительно увеличить скорость загрузки данных, а тестовый контур стал производительнее на 10–20%.
После разворачивания инфраструктуры, проверки соединений и доступности всех узлов началась первоначальная загрузка данных. Она заняла приблизительно 5 дней и состояла из двух этапов. Сначала Navicon сделали полную резервную копию БД на продакшене и восстановили её в Yandex Cloud. Затем нужно было заполнить пробел в данных, образовавшийся за время переноса базы. Для этого запустили пакеты Integration Services, которые загрузили данные инкремента из нескольких таблиц в многопоточном режиме. В течение всего периода загрузки данных специалисты Navicon наблюдали за её скоростью и пришли к выводу, что производительность конфигурации соответствует заявленным Faberlic требованиям.
Загрузив данные, Navicon занялись тестированием. Начали с функциональных тестов, которые должны были проверить, что данные в источнике соответствуют данным в хранилище. Результат был неожиданным — расхождение в данных оказалось достаточно сильным. При загрузке из источника на стейджинг смешались поля, это произошло из‑за проблем с кроссмаппингом данных при переходе на новую версию MS SQL Server. Navicon изменили порядок маппинга, откатили данные и запустили ежедневную загрузку еще раз. Проверив всё с помощью функциональных тестов и убедившись, что проблема решена и миграция завершена, приступили к нагрузочному тестированию.
Нагрузочное тестирование проводили специалисты Faberlic с последующим привлечением архитектора Yandex Cloud для тонкой настройки MS SQL Server. После того, как все тесты прошли успешно, Faberlic и Navicon переключили продакшен, заменив алиасы для того, чтобы пользователи не заметили переключения между площадками.
DWH с новыми витринами данных и пилотный проект в реальном времени
После полной загрузки данных и переключения продакшена на площадку в Yandex Cloud специалисты Navicon и Faberlic продолжили совершенствовать хранилище. Сначала с помощью SSAS построили OLAP‑куб, аналогичный тому, что был развёрнут в Azure. Затем перенесли и доработали комплекс витрин данных, например, объёмы продаж, остатки, план продаж, сборка заказов, загруженность склада. Кроме того, подключили дополнительные источники данных. Вся работа заняла 8 месяцев с момента старта миграции. Сейчас решение перешло в стадию поддержки и работает штатно: соблюдается оптимальная скорость загрузки данных и производительность DWH, сотрудники и консультанты компании получили возможность комфортной работы с большим набором витрин данных.
Кроме существующего хранилища данных, Faberlic развернула ещё одну среду для организации пилотного проекта DWH Online, который позволил бы выдавать аналитику пользователям в режиме реального времени, с обновлением хранилища 1 раз в час. Этот проект сейчас находится на стадии MVP.