Лямбда-архитектура представляет собой один из наиболее передовых подходов к анализу больших данных в режиме реального времени. Темп жизни стремительно ускоряется. Объемы данных неуклонно растут, а срок их жизни сокращается. Для бизнеса же более актуальна информация, которая поступает в режиме реального времени, а не та, что накапливается в корпоративных хранилищах данных для использования по запросу.
26 июля в Москве пройдет традиционный форум пользователей Vertica. Заказчики расскажут о новых интересных локальных и международных проектах, технические эксперты расскажут последние новости о продукте. Спешите зарегистрироваться по ссылке
Лямбда-архитектура включает в себя три ключевых уровня:
- пакетный уровень, то есть озеро сырых данных на базе Hadoop или более современной платформы (Batch Layer);
- уровень ускорения (Speed Layer);
- сервисный уровень (Service Layer).
На первом уровне осуществляется пакетная передача данных. Старые данные остаются неизменными, и существует возможность добавить новые. На втором уровне производится обработка данных, поступающих в систему в реальном времени. Этот уровень представляет собой совокупность информации, находящейся в потоковом режиме. Здесь важна именно скорость, а не пропускная способность. Такие данные имеют короткий жизненный цикл, но, складываясь вместе, создают целостную картину. Наконец, на третьем уровне выполняется индексация пакетов и обработка результатов вычислений, поступающих с двух предыдущих уровней. Именно на этот уровень обращаются за данными пользователи.
Из достоинств лямбда-архитектуры стоит отметить доступность данных в «сыром» формате и в режиме реального времени, что позволяет развивать аналитику и машинное обучение. Также к плюсам можно отнести высокую отказоустойчивость, которая достигается в том числе и за счет использования нескольких уровней. Однако, с другой стороны, архитектура из нескольких уровней порождает и определенные сложности. В частности, ее поддержка и обновление будут сложнее и обойдутся заказчику дороже.
Компания PropellerAds — один из игроков рынка онлайн-рекламы. Разработанная ею платформа оптимизирует форматы подачи рекламы в зависимости от конкретного канала доставки, будь то настольный ПК или ноутбук либо мобильное устройство. Таким образом, клиенты компании могут максимально эффективно монетизировать свою аудиторию, а их рекламодатели — получать новые источники трафика. Сегодня у PropellerAds свыше 6 тыс. клиентов, более 4,6 тыс. запущенных рекламных кампаний, а также более 100 тыс. подключенных площадок. Все это порождает колоссальную нагрузку на рекламные серверы компании: свыше 100 тыс. запросов ежесекундно, а также 3 млн событий в день, которые порождают 2 Тбайт трафика в сутки. Эти данные необходимо хранить, обрабатывать, классифицировать и в дальнейшем использовать при ротации рекламы.
Что представляет собой процесс демонстрации онлайн-рекламы? Пользователь заходит на какой-либо сайт, и этот сайт обращается к рекламному серверу. Такой сервер использует любую информацию о пользователе или сайте, которую может получить в данный момент. Используя эту информацию, рекламный сервер может ранжировать рекламные кампании, выбирая ту, что потенциально может быть интересна конкретному пользователю «здесь и сейчас», а затем показывает ему наиболее релевантную на данный момент.
Рекламный сервер «получает» как живую аудиторию, так и объемы трафика, закупленные через биржу. Он оценивает качество трафика, у него есть функции, отвечающие за ограничение показа рекламных кампаний в соответствии с бюджетом рекламодателя. Также его важнейшими компонентами являются платформа управления данными и система хранения пользовательских данных. Все компоненты работают для решения главной задачи — ранжирования и подбора рекламных кампаний. Если пользователя заинтересовало объявление, он заходит по нему на сайт рекламодателя, где уже получает полную информацию о том или ином продукте или услуге.
До перехода компании PropellerAds на лямбда-архитектуру, на каждом сервере приложений работал MySQL-сервер, куда инкрементально записывались все события по заранее определенному ключу. Таким образом, компания собирала только агрегированную информацию. Ежечасно все данные попадали в отказоустойчивый кластер на базе GaleraDB, затем запускался обработчик данных, построенный на сервере MySQL с добавлением программного кода на PHP. После этого данные складывали в готовые витрины и отправляли в хранилище под управлением СУБД Vertica. Наконец, посредством API-интерфейса эти данные становились доступны пользователям и администрации сервисов. Недостатков у такого подхода было немало. Среди них — небольшое количество агрегаторов данных, сложности масштабирования при значительном росте трафика и многие другие.
Руководство компании PropellerAds пришло к выводу, что для возросших требований аналитики, в частности, для систем машинного обучения, которые все чаще стали использоваться в системе ротации, необходимы уже не агрегированные, а сырые данные. Таким образом, компания перешла на новую схему сбора и обработки данных, построенную на лямбда-архитектуре.
В результате была реализована схема, при которой множество источников данных подключаются к единой шине, из которой данные попадают в озеро, а затем перемещаются в специальное хранилище, предназначенное для подготовки отчетов и аналитики (DataWareHouse). Аналитическая система, работающая на сервисном уровне, осуществляет обращение как к озеру, так и к DataWareHouse, а результаты своей работы предоставляет пользователю. Также к DataWareHouse подключены две базы (MySQL и PostgreSQL) данных бэк-офиса, которые хранят справочную информацию, в частности списки рекламных кампаний, рекламных площадок и т. д.
В ходе дальнейшего развития проекта между источниками данных и шиной появился еще один компонент — отказоустойчивый микросервис. Его назначение — обогащать данные и оценивать их в денежном аспекте, поскольку они получены от демонстрации рекламы, где каждый показ имеет свою стоимость. Фактор отказоустойчивости для компании PropellerAds находится на первом месте, поэтому вместо одной шины появились две, построенные на платформе Apache Kafka. Из этих шин с помощью встроенного компонента VKconfig данные попадают в хранилище под управлением СУБД Vertica, которое представляет собой кластер, объединяющий озеро и DataWareHouse с готовыми витринами данных. Озеро использует встроенную технологию Vertica Flex, позволяющую хранить сырые данные, а затем выполнять по ним SQL-запросы. Для регистрации процессов используется RFlow, а сами эти процессы описываются на Python. В качестве «пользователей» к кластеру подключены BI-система, API-интерфейс, позволяющий интегрировать с витринами данных сторонние приложения, а также собственно аналитики, которым открыт доступ непосредственно к витринам.
Решена проблема репликации из MySQL и PostgreSQL в хранилище на Vertica. Таким образом, все данные доступны сразу и в одном месте. Реализовано это было следующим образом. В случае с MySQL задействовали компонент Tungsten Replicator и создали отдельный уровень Slave, что позволило обновлять данные в режиме реального времени. Для PostgreSQL пришлось написать несколько триггеров и создать уровень Slave, через который с помощью драйвера Airflow Applyer данные попадают в хранилище на Vertica. Эти данные обновляются примерно раз в минуту.
Реализация проекта позволила компании PropellerAds объединить все уровни обработки данных в едином технологическом решении. Сократилось количество используемых продуктов и компонентов. Появилась возможность принятия решений по каждому событию. Традиционная модель взаимодействия с реляционными базами данных, включающая в себя все возможности SQL, в данном решении также поддерживается. Теперь к нему можно подключать системы аналитики: PowerBI, Tableau и другие. Наконец, решение гарантирует высокую доступность, которая обеспечивается как используемой архитектурой, так и возможностями СУБД Vertica, под управлением которой работает кластер. В планах компании — постепенное внедрение предиктивной аналитики, построенной на алгоритмах машинного обучения.
Целый ряд преимуществ от реализации нового подхода к обработке данных получил и бизнес. В первую очередь — использование сырых данных, что открывает новые горизонты для аналитики. Теперь доступна полная и прозрачная картина данных с возможностью сбора любых метрик в режиме реального времени, а также появилось поле для работы систем машинного обучения. В конечном итоге более точное ранжирование рекламных кампаний с добавлением более полных пользовательских данных помогает компании PropellerAds повысить эффективность своего бизнеса и увеличить доход клиентов. Наконец, возможности нового решения в плане дальнейшего масштабирования означают новый потенциал роста с меньшими затратами на поддержку.
Запись вебинара Propeller Ads https://p.brighttalk.com/microfocus/ru/