Как устроена наша инфраструктура, и почему мы не боимся пожаров | Блог Mindbox об автоматизации маркетинга

Как устроена наша инфраструктура, и почему мы не боимся пожаров

3 Фев ‘20

Mindbox — платформа автоматизации маркетинга, собирает данные о покупательской активности со всех каналов (сайт, мобильное приложение, офлайн) и использует эти данные в персонализированных маркетинговых механиках. Сервис разрабатывают 50 программистов в московской штаб-квартире.

Платформой пользуются более 300 различных бизнесов. Среди них есть небольшие интернет-магазины и федеральные гиганты: Citilink, «Детский мир», ПИК и другие. Такие объемы данных требуют серьезного подхода к хранению и обработке.

В статье: на каком железе работает облачная платформа, как мы выкупили все приличные SSD в России, автоматизировали закупки серверных стоек и масштабируем рост с помощью облачных технологий. Особенно интересно будет IT-директорам, специалистам по ИБ и разработчикам.

Немного цифр:

  • Отправляем 1,3 млрд email-сообщений в месяц, до 70 миллионов в день
  • Обрабатываем более 5 млрд запросов к нашему API в месяц
  • На нашей программе лояльности работает более 5000 онлайн и офлайн-магазинов по всей России и СНГ
  • Храним более 350 млн профилей
  • 25 млрд фактов о клиентах суммарно по всем БД
  • 47 тысяч сегментов
  • Общий объем БД — 41TB
  • Ежедневно рассчитываем более 1 млрд персональных рекомендаций
  • Пересчитываем рекомендации в реальном времени в течение 5 секунд

Как устроены передача и хранение клиентских данных

Данные попадают к нам через единый API шлюз. В среднем мы обрабатываем 150 тысяч запросов в минуту в дневное время.

Количество запросов в минуту и за сутки
Количество запросов в минуту и за сутки

Данные распределяются по раздельным клиентским базам данных (БД). Из соображений безопасности у каждого клиента база данных изолирована, и данные одного клиента никак не пересекаются с данными других клиентов. Так мы гарантируем безопасное хранение.

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

После внедрения платформы «Флорист.ру» снизил затраты IT на поддержку рассылок до нуля — маркетолог всё делает сам
После внедрения платформы «Флорист.ру» снизил затраты IT на поддержку рассылок до нуля — маркетолог всё делает сам

С технической точки зрения, активности маркетолога сводятся к тому, чтобы прочитать данные из БД, каким-то образом их обработать и записать результат обработки обратно в БД. Таким образом, типы нагрузки можно разделить на два: хранение данных и их обработка. Не случайно Федеральный закон №152-ФЗ «О Федеральных данных» и GDPR (General Data Protection Regulation) оперируют именно этими двумя категориями.

Что за железо использует платформа, и где оно находится физически

Физически данные располагаются на наших собственных серверах на территории РФ в ЦОДе Data Line. Это дата-центр уровня Tier III: в России нет более высокоуровневых коммерческих ЦОДов, чем этот. Для всех ресурсов, включая питание и охлаждение, обеспечивается резерв по схеме N+1, есть два ввода электропитания от разных подстанций. Данные передаются по 10-гигабитной оптической сети на оборудовании Dell.

Здание расположено отдельно, территория изолирована и охраняется. Data Line аттестован на соответствие Федеральному закону №152-ФЗ. Mindbox также отвечает требованиям ФЗ: летом 2019 года компания прошла первичный аудит корпоративной безопасности в Group-IB и получила положительное заключение. Также компания успешно выдержала тесты на проникновение.

Машинные залы и инженерные помещения размещаются в гермозонах, которые защищают оборудование от протечек и пыли и сдерживают распространение огня в течение 45 минут
Машинные залы и инженерные помещения размещаются в гермозонах, которые защищают оборудование от протечек и пыли и сдерживают распространение огня в течение 45 минут

Мы работаем с Data Line 11 лет, почти с момента основания компании, и за всё это время по вине ЦОД было всего два инцидента. Про них расскажет CIO Mindbox, Игорь Кудрин.

Игорь Кудрин
CIO Mindbox, Игорь Кудрин

«Первый инцидент был очень давно, лет 7 или 8 назад. Ветром с крыши соседнего здания на крышу нашего ЦОДа сдуло металлоконструкции и повредило чиллеры, промышленные устройства для охлаждения. Температура поползла вверх. Мы приняли волевое решение: выключили только резервные серверы, примерно треть. Нас упрашивали потушить и активные серверы, но мы рискнули и «проехали». А недавно был пожар. После этого мы задумались о том, что нам нужен второй ЦОД».

CIO Игорь Кудрин не боится пожаров

Какие серверы мы закупаем

Для хранения данных мы используем серверы бренда Dell. Типовая конфигурация сервера выглядит так:

  • Процессор 2x CPU Intel Xeon Gold 6146 3.2 Ghz
  • Оперативная память 192GB RAM
  • Жесткий диск 6,4TB NVME SSD

Эта самая эффективная конфигурация под MS SQL Server Standard — ПО баз данных, которое мы используем, — с точки зрения производительности и стоимости лицензий.

При этом нужные нам диски SSD с большой производительностью IOPS на чтение данных — большая редкость, и на рынке появляются по одной-две штуки. Мы выкупаем все доступные диски в РФ и встаем на очередь за следующими, поэтому у наших поставщиков («Никс», Regard) всегда дефицит.

Всего у нас 50 серверов БД. Используем автоматическую модель закупок, которая отслеживает актуальное потребление серверов, а также смотрит планы продаж и заранее, за 3 месяца, ставит закупку в бюджет.

Фрагмент автоматической модели закупок
Фрагмент автоматической модели закупок. Начиная с июня планируем закупать по 2 сервера в месяц

Иными словами, мы всегда имеем запас по производительности и вовремя реагируем на изменения в планах.

Обработка данных — другая задача, поэтому под неё покупается другое оборудование. Оперативной памяти гораздо больше, а накопительные диски — меньше:

  • Процессор 2x Intel Xeon Gold 6154 CPU
  • Оперативная память 384 GB RAM
  • Жесткий диск 256GB SSD

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

Как обеспечивается бесперебойность работы

Mindbox использует стандартные метрики: CPU (количество миллисекунд процессора, которое потрачено на задачу) и wall-clock time (календарное время, которое потрачено на задачу).

Игорь Кудрин
CIO Mindbox, Игорь Кудрин

«Оба типа нагрузки у нас подробно покрыты метриками. Недавно мы оптимизировали и переписали текущую инфраструктуру рассылок, чтобы поддерживать кратно бóльшие скорости, и отдельно выгрузили каждое узкое место. Тестировали с тем расчетом, чтобы через них проходило 500 тысяч писем в минуту. Таким образом, с ростом количества клиентов и рассылок мы сможем всё это “переварить”».

За бесперебойную работу серверов отвечают двое SRE (Server Reliability Engineer). Они не отключают телефоны на ночь и получают SMS при возникновении проблем, например, в случае превышения нагрузки на CPU сервера. Если затронута какая-то важная часть продукта уровня рекомендаций или программы лояльности, SMS приходит и архитекторам этой фичи — сейчас таких людей в компании шесть человек.

CTO Никита Прудников — один из тех, кому приходят ночные SMS
CTO Никита Прудников — один из тех, кому приходят ночные SMS

На все потенциально узкие места также настроены алерты, а разработчики проектируют систему так, чтобы она переживала отказы.

Игорь Кудрин
CIO Mindbox, Игорь Кудрин

«Изначально наша задача была — расти, и старая архитектура была рассчитана на то, что мы резервируемся на уровне железа: если первый сервер откажет, то второй вступит в работу. А сейчас мы проектируем нашу архитектуру таким образом, что, даже если оба сервера откажут, большая часть продукта продолжит функционировать. Например, если у нас перестанут работать персональные рекомендации, мы просто покажем популярные или скроем весь блок».

«Когда у тебя растет количество стоек, а ты ещё хочешь гео-распределенные приложения (то есть такие, которые работают сразу в нескольких ЦОДах), нагрузка на инфраструктуру и требования к надежности этого узла, к сети растут геометрически. Облако решит эту проблему. Мы планируем переезд в Яндекс.Облако, но проектируем архитектуру таким образом, чтобы не быть привязанными к конкретному облаку».

Что будет дальше

Сейчас в Mindbox более 300 клиентов, завершивших интеграцию. В этом году мы планируем увеличить их количество на 160: плюс 60% нагрузки. Чтобы улучшить масштабирование и снизить риск ошибок, планируем переехать со своих серверов в облако. Это повлечет за собой увеличение расходов на железо, но избавит от необходимости обслуживания сети.

Сейчас разработчики Mindbox трудятся над тем, чтобы разделить монолитное приложение, которое подвержено отказам и остро на них реагирует, на микросервисы, которые менее подвержены отказам. По словам Игоря, смена парадигмы поможет Mindbox обслуживать и тысячу, и три тысячи клиентов.

Материал подготовили

Авторы

Марианна Любарова
Филипп Вольнов

Эксперты

Игорь Кудрин
CIO
Никита Прудников
CTO

Пожалуйста, оставьте информацию о вас

Свяжемся в течение
рабочего дня

Заявка на партнерство

Свяжемся в течение
рабочего дня

Обратная связь

Мы используем файлы cookie
Отказаться от обработки данных