Как организовать инфраструктуру для высоконагруженной платформы

Как организовать инфраструктуру для высоконагруженной рекламной платформы: опыт МоеVideo

Рассказываем, как компания организовала инфраструктуру для высоконагруженной рекламной платформы с аудиторией в 150 миллионов пользователей.

Изображение записи

Кейс будет полезен для компаний в следующих сферах:

  • MarTech
  • интернет-сервисы
  • высоконагруженные сервисы

Задачи:

  • Обеспечить максимальную производительность
  • Организовать обработку и надежное хранение входящих данных
  • Гарантировать быстрый сетевой отклик и отказоустойчивость

О компании

MoeVideo – это независимая рекламная сеть для веб-мастеров, СМИ и владельцев сайтов. К ней подключено свыше 90 000 сайтов Рунета с общей ежемесячной аудиторией в 150 миллионов пользователей.

Вызовы и решения

Обеспечить максимальную производительность платформы 

Платформа МоеVideo является высоконагруженной: ежедневно она обрабатывает более 120 Тбит входящего трафика — это входящие коннекты, данные о пользователях, подбор рекламы под заданные рекламодателем параметры и другие. Чтобы гарантировать высокую скорость обработки запросов, необходимо использовать серверы с большим количеством производительных CPU. 

Кроме того, команде сервиса важно иметь возможность быстро добавлять новые серверы в инфраструктуру. Например, бывают ситуации, когда отдел продаж подключает к платформе MoeVideo крупную медиаплощадку, и чтобы успешно обрабатывать и показывать рекламу ее пользователям, нужно оперативно подключить десяток серверов.

Подобрали оптимальные конфигурации серверов под отдельные задачи

Основа инфраструктуры платформы, отвечающей за обработку трафика, — выделенные серверы произвольной конфигурации.

На старте построения инфраструктуры в Selectel образовался «зоопарк» серверов с разными комплектующими, что с течением времени стало приводить к проблемам балансировки трафика между серверами и усложнило управление ими. С опытом команда сервиса подобрала оптимальную конфигурацию сервера, к которой унифицировала всю инфраструктуру. Сегодня кластер для обработки трафика состоит из 80 серверов в следующей конфигурации: процессор AMD EPYC 7443P, 64GB RAM, 2 x NVMe 500GB. Серверы объединены в единый Kubernetes-кластер, который управляется через скрипты и плейбуки. 

При подключении новых клиентов к рекламной платформе команда, при необходимости, дозаказывает вычислительные ресурсы. Серверы необходимой конфигурации собираются и вводятся в эксплуатацию в течение 1-2 дней после заказа, в зависимости от количества серверов

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

Организовать обработку и хранение входящих данных

Другая, не менее важная часть платформы MoeVideo, — это инструменты аналитики рекламных кампаний.

В основе технологического стека аналитической платформы находятся:

  • ClickHouse для сбора общей статистики;
  • Redis, MongoDB, Tarantool для кэширования и работы сервисов в реальном времени;
  • Kafka и RabbitMQ для обработки потоковых данных; 
  • PostgreSQL для обработки реляционных данных и YugaByteDB как более отказоустойчивая альтернатива PostgreSQL со встроенной репликацией и балансировкой нагрузки.

Команде MoeVideo было важно организовать хранение входящих данных при высокой нагрузке и разнородных типах запросов. При этом аналитическая система должна поддерживать горизонтальное масштабирование, быстро обрабатывать большие объемы данных и гарантировать их сохранность.

Собрали произвольные конфигурации серверов под специфические требования СУБД

Например, для ClickHouse команда MoeVideo подобрала серверы в следующей конфигурации: процессор Intel Xeon E-2236, 32GB RAM, NVMe 1TB и 4 x SATA SSD 2TB. Она показывает наибольшую производительность с точки зрения чтения, записи, пропускной способности и объема данных. Кластер ClickHouse разбит на шарды — фрагменты данных, каждый из которых дублируется на двух серверах для отказоустойчивости. Это обеспечивает горизонтальное масштабирование и защиту от сбоев без использования RAID-контроллеров.

Для PostgreSQL, где объем данных меньше, используется более простая конфигурация с аппаратной отказоустойчивостью — RAID-контроллерами. Серверы под PostgreSQL обрабатывают критичные реляционные данные и биллинг, поэтому к ним предъявляются повышенные требования к сохранности информации.

Гарантировать быстрый сетевой отклик и отказоустойчивость 

Для MoeVideo критична высокая производительность и отказоустойчивость сервиса: реклама должна загружаться как можно быстрее, иначе слот займет конкурент.

Организовали геораспределенную сетевую связность

К серверам обработки трафика подключен интернет-канал со скоростью 1 Гбит/с — он обеспечивает высокую скорость передачи трафика между платформой и пользователями.

Нагрузка распределяется между серверами в нескольких дата-центрах в разных регионах. Серверы связаны локальной сетью через глобальный роутер. Геораспределенность обеспечивает отказоустойчивость инфраструктуры: в случае перегрузки или сбоя одного компонента трафик мгновенно перенаправляется на другой узел.

Результаты

  • 120 Тбит/с

    входящего трафика платформа MoeVideo обрабатывает ежедневно

  • 80+

    серверов используется для обработки входящего трафика 

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

Алексей Рыжов IT-директор платформы MoeVideo