Компания AdRoll является мировым лидером в области ретаргетинга, ее услугами пользуются более 10 000 активных рекламодателей более чем в 100 странах. Эта компания осуществляет кросс-платформенную доставку рекламы через крупные площадки для показов, а также предлагает инструменты персонализации рекламных кампаний на основе характера посещений интернет-страниц. Компания была основана в 2007 году в Сан-Франциско (Калифорния) и предоставляет рекламные услуги таким брендам, как Salesforce, Tableau, Alex and Ani, Rickshaw Bags и Hipmunk.
Суть ретаргетинга рекламы заключается в том, чтобы сделать из посетителей клиентов. Ретаргетинг обеспечивает доход от интернет-коммерции по всему миру, и компания AdRoll относится к числу лидеров данной отрасли – только за 2012 год ее рост составил 15 000 процентов. Однако чтобы эффективно доставлять рекламу, компании AdRoll необходима гибкость для мгновенного добавления ресурсов, сверхбыстрый отклик для принятия предложений цены в режиме реального времени и автоматизация для обеспечения быстрой реакции системы на них.
«Мы нуждаемся в высокой производительности, но не только в ней, – делится технический директор Валентино Волоньи. – Нам нужна гибкость, а также программные средства с возможностью масштабирования на нескольких ЦОД или машинах, которые мы могли бы оптимизировать в процессе работы. Перенос операций в облако был для нас оптимальным вариантом».
Для запуска инфраструктуры торгов в режиме реального времени компании AdRoll потребовалось синхронизировать данные каждого пользователя в четырех регионах, а это порядка сотен миллионов пользователей и десятки тысяч операций записи в секунду. Компания столкнулась не только с чрезвычайно сложной задачей записи этих данных в режиме реального времени, но и с жестким ограничением системы торгов – 100 миллисекунд на каждый запрос о предложении. Вот почему компании AdRoll нужны надежные гарантии производительности чтения.
Компания AdRoll начала с сервиса Amazon Simple Storage Service (Amazon S3). На подготовку и запуск среды AWS ушло приблизительно две недели, и теперь AdRoll хранит в корзине Amazon S3 1,5 ПБ данных. Вскоре специалисты AdRoll осознали, что платформа AWS может стать не просто хранилищем, а чем-то большим, поэтому компания стала перемещать все больше систем в облако AWS. Сегодня ядро сайта AdRoll работает на 30 инстансах Amazon Elastic Compute Cloud (Amazon EC2). В качестве дополнительных ресурсов для изменяемых нагрузок используются от 200 до 1000 инстансов, в т. ч. спотовые инстансы Amazon EC2 «В нашем деле ключ к успеху – автоматизация, – говорит Волоньи. – Если хоть один из этих инстансов откажет, он будет автоматически заменен, и работа продолжится без человеческого вмешательства».
Помимо решений для хранения и вычисления, компания AdRoll нуждалась в высокопроизводительном решении для баз данных, способном удовлетворить требование по задержке в 100 миллисекунд. Рассмотрев ряд альтернатив, компания выбрала DynamoDB из-за низкой задержки, гарантированной пропускной способности и быстрой масштабируемости.
DynamoDB – это сервис баз данных NoSQL с гарантированной пропускной способностью и задержкой менее 10 миллисекунд. Будучи полностью управляемым сервисом, DynamoDB обеспечивает автоматическую трехпотоковую репликацию, эффективное масштабирование пропускной способности и хранилища посредством API, а также удобную консоль управления.
Таблицы DynamoDB состоят из первичного ключа (типа «хэш» или «хэш-диапазон») и атрибутов. Бессхемная структура означает, что каждый элемент данных может иметь разное число атрибутов. Поддержка множества типов данных (строки, числа, двоичные данные и наборы данных) делают эту модель данных еще более функциональной.
Таблицы AdRoll были спроектированы так, чтобы значение cookie использовалось как ключ «хэш», идентификатор профиля – как ключ «диапазон», а в качестве атрибута выступала бы метка времени.
Ключ «хэш» | Ключ «диапазон» | Атрибут |
Cookie (ID пользователя) | Профиль | Метка времени |
"1234" | "Segment1" | "1378237387” |
"1234" | "Segment2" | "1378237417" |
Во всех таблицах компания AdRoll использует первичные ключи типа «хэш-диапазон». «Ключи типа „хэш-диапазон“ позволяют нам использовать один вызов API (BatchWriteItem) для изменения нескольких элементов с одинаковыми или разными хэш-ключами, – говорит Волоньи. – Кроме того, они позволяют нам очень эффективно запрашивать данные, сжимая результаты операций чтения в минимальный объем полезных данных. Это экономит место в хранилище и затраты на пропускную способность».
Чтобы извлечь из DynamoDB максимальную пользу, специалисты AdRoll разработали собственный клиент для этого сервиса. «Мы использовали его на сотнях машин для выполнения быстрых запросов к DynamoDB, и он показал стабильно низкую задержку в инфраструктуре Erlang, – продолжает Волоньи. – Мы просто производили туда запись, измеряли пропускную способность записи/чтения и извлекали пользу без необходимости углубляться в детали». Специалисты AdRoll рекомендуют настроить оповещения для низкого и высокого уровней пропускной способности, чтобы заметить нехватку ресурсов или отказ системы.
Используя Amazon DynamoDB в сочетании с Apache Storm, компания AdRoll может реплицировать набор данных в любой точке планеты менее чем за 50 миллисекунд, что обеспечивает скорость отклика на предложения цены и доставку рекламы клиентам – при этом затраты остаются небольшими.
Компания AdRoll также пользуется преимуществами масштабируемости сервисов на платформе AWS. «Благодаря AWS мы способны обрабатывать трафик, поступающий от Facebook, Google, Yahoo и других сайтов с высокой посещаемостью, так что количество показов достигает 50 миллиардов за сутки, – рассказывает Волоньи. – К тому же это экономически выгодно – мы тратим больше на бутерброды, чем на Amazon DynamoDB».
Благодаря использованию AWS компании AdRoll стало легче подключать новых клиентов. Когда в системе появляется новый клиент, машины AdRoll должны быть способны быстро справляться с дополнительным трафиком. Как правило, в традиционных локальных инфраструктурах подключение новых клиентов связано с процессом получения разрешений на добавление новых машин к кластеру Hadoop, с выделением дополнительного места в хранилище и т. д. Все это может занять до 90 дней. «Благодаря AWS нам не нужно беспокоиться ни о чем подобном, – говорит Волоньи. – Если ресурсы на исходе, с помощью автомасштабирования добавляется еще несколько инстансов, и проблема решена».
Компания может быстро развивать свой бизнес, подключая новые биржи независимо от их физического местонахождения. «Регионы AWS расположены недалеко от любой биржи трафика по всему миру, поэтому при появлении новой биржи мы сразу же можем воспользоваться ее услугами, – рассказывает Волоньи. – Это так же просто, как щелкнуть выключателем, и сравнимо с открытием нового ЦОД, откуда наши машины могут принимать трафик. После этого мы можем начать торги. Все очень просто».
По словам Волоньи, платформа AWS обеспечивает масштабируемость и ресурсы по требованию, которые как раз необходимы компании AdRoll для развития бизнеса. «В период интенсивного роста нашей деятельности использование AWS позволило масштабировать и оптимизировать алгоритмы и избавиться от избыточных ресурсов. AWS экономит наше время и деньги. Нам не нужен ЦОД большего размера, не требуется больше людей в операционном отделе, и мы не должны приобретать новые машины только из-за необходимости увеличить объем ресурсов».
Подробнее об Amazon DynamoDB можно узнать на странице сведений: http://aws.amazon.com/dynamodb/.