Wildberries: Оптимизация ТСО за счет Tarantool
Wildberries logo

Оптимизация ТСО
за счет надежного кэша Tarantool

Wildberries — это самый популярный российский онлайн-магазин. Компания работает в 7 странах и четыре года подряд признается крупнейшим интернет-ритейлером России. Более 30 миллионов человек являются клиентами Wildberries, 7 миллионов посетителей совершают 780 тысяч заказов в сутки.

Задача
и требования

В середине 2010-х технически Wildberries существовал в виде .NET-приложения и MS SQL-серверов. Это была пара монолитов — back и front — и один потолок для них, к которому производительность медленно, но верно приближалась. С выходом на рынок Беларуси нагрузка на процессор не опускалась ниже 90%. В период акций «Черная пятница» запросы увеличивались в три раза.

Техническая команда понимала, что с ростом нагрузки затраты на MS SQL становятся неприемлемыми. Тогда приняли решение распилить монолиты и перейти к микросервисной архитектуре. При выборе решения команда опиралась на следующие требования.

  • Нужен надежный кэш для критически важных систем.
  • Надежность важнее скорости
  • Экономия на оборудовании и лицензиях в сравнении с MS SQL.
  • Готовы поступиться функциональной мощностью, т.е. когда речь идет о простых операциях не нужен навороченный PostgreSQL.
  • Важна персистентность данных.
  • Автопереключение с одного дата центра на другой.
  • Горизонтальное масштабирование.

Решение

На первом же этапе разработчики откинули платные технологии из-за стоимости решений и производительности: при нужных показателях стоимость выходила за рамки ИТ-бюджета. Тогда и появилась схема с Tarantool. В первую очередь стали переносить сервисы с высокой нагрузкой, где текущая MS SQL база требовала много экземпляров.

Сегодня у технической команды Wildberries есть свой подход, как создавать надежные распределенные системы. Tarantool для них — это хорошее универсальное хранилище для работы с востребованными данными: пользовательскими профилями, баннерами, скидками и т.п. Всего на Tarantool работают 12 микросервисов.

Solutions scheme
Solutions scheme
Solutions scheme
Solutions scheme
  • Самый критичный сервис сайта — Мастер-хранилище профилей пользователей — содержит данные 50 миллионов пользователей. Для его работы полностью отказались от MS SQL.
  • Самый объемный сервис Wildberries, где используют Tarantool — это Сервис отложенных товаров. В памяти он занимает около 120 ГБ, и 3-4 экземпляра есть в каждом дата-центре.
  • По RPS самые нагруженные сервисы — Промотайзер и Мастер-хранилище профилей — примерно 6 тысяч и 12 тысяч запросов в секунду соответственно.
  • Tarantool также используют для быстрых справочников в складской системе, чтобы оперативно перепроверять информацию в некоторых случаях.

Схема работы с Tarantool выглядит следующим образом. В каждом дата-центре на виртуальных или аппаратных машинах стоит несколько мастеров. Соединения сделаны по схеме мастер-мастер. Есть интерфейсы или синхронизаторы, которые скачивают информацию, например, о скидочных купонах и условиях по ним и пишут в мастеры. К этим мастерам подключаются реплики на виртуалках или в Kubernetes. Сверху находятся приложения, которые обращаются к репликам.

Каждое приложение работает с двумя кластерами. В случае сбоев в работе дата-центра оно может обратиться к другому кластеру. Есть прослойка, которая сохраняет интерфейс Go-драйвера Tarantool и скрывает логику. Прослойка видит все реплики и может работать с мастером на чтение и запись.

Результаты

  • 12
    микросервисов

    Tarantool основная база данных для 12 микросервисов

  • профили
    пользователей

    Самый критичный сервис сайта — мастер-хранилище профилей пользователей хранит данные в Tarantool

  • 12 000
    rps

    12 000 RPS для мастера-хранилища профилей

Другие
истории успеха

Запуск нового канала продаж и ускорение существующей инфраструктуры
Magnit Logo
Sticker
Как Yota изменили архитектуру с кэшированием на Tarantool
Yota Logo

Получить
консультацию

Заказать
демонстрацию

Спасибо за обращение

Специалисты Tarantool свяжутся с вами по оставленным контактам

Thanks
Thanks