Rethinking latency-sensitive DynamoDB apps for multicloud, multiregion deployment Весь процесс доставки рекламы происходит в течение 200-300 миллисекунд.Наши поиски базы данных должны быть завершены в однозначных миллисекундах.С миллиардами транзакций ежедневно база данных должна быть быстрой, масштабируемой и надежной.Если она падает, наша рекламная инфраструктура перестает функционировать. — Тодд Коулман, технический соучредитель и главный архитектор Yieldmo Весь процесс доставки рекламы происходит в течение 200-300 миллисекунд.Наши поиски базы данных должны быть завершены в однозначных миллисекундах.С миллиардами транзакций ежедневно база данных должна быть быстрой, масштабируемой и надежной.Если она падает, наша рекламная инфраструктура перестает функционировать. — Тодд Коулман, технический соучредитель и главный архитектор Yieldmo Бизнес онлайн-рекламы Yieldmo зависит от обработки сотен миллиардов ежедневных запросов на рекламу с ответами на задержку подсекунды.Сервисы компании изначально зависели от DynamoDB, который команда ценила за простоту и стабильность. Тем не менее, затраты DynamoDB становились неустойчивыми в масштабе, и команда нуждалась в многооблачной гибкости, поскольку Yieldmo расширялась на новые регионы. В недавней беседе с Тодд Коулман, технический соучредитель и главный архитектор Yieldmo, поделился техническими вызовами, с которыми столкнулась компания, и почему команда в конечном итоге продвинулась вперед с DynamoDB-совместимым API ScyllaDB. Саммит Monster Scale Вы можете посмотреть его полный разговор ниже или продолжить чтение для отзыва. https://youtu.be/sk0mIiaOwM8?embedable=true Лаг = потерянный бизнес Yieldmo - это онлайн-рекламная платформа, которая соединяет издателей и рекламодателей в режиме реального времени в виде загрузки страниц. Почти каждое объявление запускает запрос базы данных, который получает информацию о машинном обучении и идентификацию устройства. Эффективные аукционы Помогите партнерам решить, предлагать Отслеживайте, какие объявления они уже показали на устройстве, чтобы рекламодатели могли управлять ограничениями частоты и оптимизировать доставку объявлений. Весь рекламный канал завершается всего за 200-300 миллисекунд, причем большая часть этого времени затрачивается партнерами на оценку и размещение предложений. Когда пользователь посещает веб-сайт, запрос на рекламу отправляется в Yieldmo. Платформа Yieldmo анализирует запрос. Он запрашивает потенциальные объявления от своих партнеров. Он проводит аукцион для определения выигрышной оферты. Поиск базы данных должен происходить до любых звонков партнерам. И эти поиски должны завершиться с однозначными задержками в миллисекунды. Колман объяснил: «С миллиардами транзакций ежедневно база данных должна быть быстрой, масштабируемой и надежной. DynamoDB растут боли Производственная инфраструктура Yieldmo работает на AWS, поэтому DynamoDB был логичным выбором, поскольку команда построила свое приложение. Во-первых, DynamoDB становился все дороже, поскольку бизнес расширялся, во-вторых, компания хотела иметь возможность запускать рекламные серверы на облачных провайдерах за пределами AWS. Колман сказал: «В некоторых регионах, например, в Восточном побережье США, центры обработки данных AWS и GCP (Google Cloud Platform) находятся достаточно близко, чтобы задержка была минимальной. Там нет проблем с ударом нашей базы данных DynamoDB с рекламного сервера, работающего в GCP. Однако, когда мы попытались запустить кластер рекламных сервисов на базе GCP в Амстердаме во время доступа к DynamoDB в Дублине, задержка была слишком высокой. Альтернативы DynamoDB Команда Yieldmo начала исследовать альтернативы DynamoDB, которые соответствовали бы их чрезвычайно тяжелым нагрузкам на базы данных. Непрерывный поток данных в режиме реального времени от их партнеров, необходимых для сопоставления данных Yieldmo с их собственными. Базовые обновления, основанные на знаниях машинного обучения, полученных из их исторических данных Учитывая этот баланс высокочастотных прочтений и структурированных записей, они искали базу данных, которая могла бы обрабатывать широкомасштабный доступ с низкой задержкой, эффективно управляя одновременными обновлениями без ухудшения производительности. Команда сначала рассматривала возможность остаться с DynamoDB и добавить кэширующий слой, однако, они обнаружили, что кэширование не может решить проблему географической задержки, и пропуски кэша будут еще медленнее с этой опцией. Они также исследовали Aerospike, который предлагал поддержку скорости и кросс-облака. Тем не менее, они узнали, что индексация в памяти Aerospike потребует огромного и дорогостоящего кластера для обработки большого количества малых объектов данных Yieldmo. Затем они обнаружили ScyllaDB, который также обеспечивал поддержку скорости и кросс-облака, но с совместимым с DynamoDB API (Alternator) и более низкими затратами. Coleman поделился: «ScyllaDB поддерживал развертывание в облаке, требовал управляемого количества серверов и предлагал конкурентные затраты. Лучше всего, его API был совместим с DynamoDB, что означает, что мы могли мигрировать с минимальными изменениями кода. ScyllaDB Оценка, миграция и результаты Чтобы начать оценку того, как ScyllaDB работала в их среде, команда мигрировала подгруппу рекламных серверов в одном регионе. Это включало миграцию нескольких терабайт при сохранении обновлений в режиме реального времени. Процессным образом, они копировали исторические данные с помощью инструмента миграции ScyllaDB на базе Spark, приостановили работы в серии ML и воспользовались архитектурой Kafka, чтобы воспроизвести последние письма в ScyllaDB. Перемещение одной таблицы DynamoDB с ~28 миллиардами объектов (~3,3 ТБ) заняло около 10 часов. Этот этап занял около двух недель.После оценки производительности, Yieldmo продвинул ScyllaDB до первичного статуса и, в конечном итоге, перестал писать в DynamoDB в большинстве регионов. Размышляя о миграции почти год спустя, Колман резюмировал: «Самая большая польза — это гибкость мультиоблака, но даже без этого миграция стоила того. затраты на базы данных были сокращены примерно вдвое по сравнению с DynamoDB, даже при ценообразовании зарезервированной емкости, и мы увидели скромные улучшения задержки. ScyllaDB доказала свою надежность: их команда контролирует наши кластеры, предупреждает нас о проблемах и консультирует нас по масштабированию. Как ScyllaDB сравнивается с DynamoDB