Как построить отказоустойчивую платформу в частном облаке
В панель
Изображение записи

Как создать платформу для управления 50 000 сотрудниками в ритейле при помощи частного облака

Совместно с Imredi

  • Локальные NVMe-диски, чтобы обеспечить высокую скорость работы платформы

  • Быстрая миграция от зарубежного провайдера

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

Задача

Реализовать IT-инфраструктуру, в которой будет возможность быстро масштабировать вычислительные мощности, чтобы избежать перегрузок и простоев.

Решение поможет:

Компаниям, которые работают с разными типами нагрузки и имеют большую геораспределенность.

Как отслеживать эффективность сотрудников по всей стране, хранить терабайты данных и поддерживать доступность сервиса на высочайшем уровне? Платформа Imredi пять лет назад выбрала в качестве облачного провайдера Selectel и в 2022 году вышла на выручку в 200 млн в год. Рассказываем, какие решения использовались при построении платформы, и как организована ее техническая часть.

О компании

Команда Imredi с 2016 г. разрабатывает решение для контроля и развития  розничных сетей. Продукты компании помогают контролировать стандарты и управлять операциями и сотрудниками. Запускать промоакции и обеспечивать доступность товаров. Все они объединены единой технологической платформой, обеспечивающей модульную архитектуру, сквозные процессы, горизонтальное масштабирование, открытое REST API и интерфейсы интеграции данных. 

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

  • Вызов

    Миграция от зарубежного провайдера.

    Решение

    Оптимизировали бюджет, предоставили кастомные серверы и возможность быстрого масштабирования инфраструктуры.

  • Вызов

    Построить IT-инфраструктуру, способную быстро обрабатывать большой объем информации.

    Решение

    Предоставили условия для комфортной реализации архитектуры проекта с возможностью поднятия быстрого поднятия десятков ВМ.

Почему выбрали Selectel

Imredi искали провайдера, который позволяет быстро поднимать десятки виртуальных машин под запрос заказчика. В соответствии с принципом мультитенантной архитектуры, логическое разделение внутри ВМ позволяет изолированно работать с разными клиентами в рамках единой платформы и сервисных подсистем. 

В Selectel можно добавлять любое количество ВМ в разных конфигурациях. Компания начинала со стандартных 16 CPU, 32 RAM серверов, а сейчас пришла к базовой Node для application-серверов и серверов баз данных в виде кастомной конфигурации на 32 ядра и 64 ГБ RAM, а также терабайтного локального NVMe диска c нулевой сетевой задержкой. Для обслуживающих сервисов, тестовых сред, конвейеров CI/CD и мониторинга используются машины с меньшей мощностью — 4 CPU, 16 ГБ/24 Гб RAM.

«‎‎‎‎‎‎Первый кластер виртуальных машин удалось поднять за пару часов. Отдельным плюсом стало то, что в панели управления IT-инфраструктурой Selectel была возможность отслеживать загрузку серверов и потребление трафика. Для стартапа в период активного роста это очень важный момент»‎.

Вячеслав Кинзерский Технический директор Imredi

Федеральный уровень клиентов платформы предполагает работу с большим количеством данных: отчеты, фотографии, статистика. Облачное хранилище, которое использует Imredi, не ограничено в объеме. На платформе есть возможность по разному организовывать хранение медиа-данных:

  • Стандартное — для данных, с которыми постоянно работают пользователи.
  • Холодное — для данных, которые запрашиваются редко, поэтому стоимость хранения ниже.

Распределение по типу хранения оптимизирует расходы на инфраструктуру. Таким образом, еще на старте проекта были видны преимущества миграции из Microsoft Azure.

Далее мы рассмотрим архитектурные особенности Imredi, которые напрямую связаны с особенностями продуктов Selectel и принципами разработчиков платформы.

Решение

Структура платформы состоит из трех ферм: application-серверы, базы данных и серверы аналитики. Вокруг это используется обвязка из сетевой инфраструктуры и вспомогательных сервисов.

Application-серверы распределяют нагрузку и реализуют отказоустойчивые кластера, чтобы нивелировать пиковые нагрузки заказчиков. Есть отдельные серверы, привязанные к аналитике. Есть собственное встроенное внутреннее хранилище на PostgreSQL с витринами данных. Все вместе это выглядит следующим образом:

Есть также серверы мониторинга, которые следят за всеми обращениями и ошибками, как происходит отклик между ними. На их ресурсах собирается вся статистика, пишутся логи. 

Кроме этого, Imredi использует два подхода к резервированию: 

  • Для создания отказоустойчивой инфраструктуры используется сразу две зоны доступности. 
  • Платформа реализует собственное резервирование за счет регулярных бэкапов данных, которые находятся в файловом хранилище в Selectel. 

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

Облако

Новые виртуальные машины поднимаются в облачной платформе Selectel только в тех случаях, когда ферма упирается в ресурсы и возникает риск спада производительности. Система при этом настроена так, чтобы узнавать об этом заранее. Это помогает не выделять под каждого клиента отдельный сервер и оптимизировать затраты на инфраструктуру.

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

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

Imredi масштабируется в рамках всей фермы как сервиса, а не в каждом отдельном сервере, потому что преодолеть лимиты одной виртуалки очень легко. В кластере же происходит распределение пиковой нагрузки между серверами, оптимизация профиля нагрузки и алгоритмов работы в рамках каждого сервера.

То есть, когда виртуальные машины объединены в кластеры по типу серверов и по типу нагрузки, оптимизацию можно вести по двум направлениям.

Оптимизация программного кода, в которой по-разному выделяются воркеры и по-разному ведется работа с ними на разных виртуальных машинах.

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

В облачной платформе Selectel размещаются тестовые серверы для ведения пилотов и серверы для dev, то есть для разработчиков.

Облачная инфраструктура проекта устроена так, чтобы не переплачивать за ресурсы, а выделять их поэтапно, когда в них действительно есть необходимость. Эта гибкость позволяет клиентам Imredi работать в комфортной среде с любыми данными. Облако также помогает поддерживать консистентность версий у всех пользователей платформы.

Возможность отстроить и автоматизировать часть процессов помогла компании определиться с планами по развитию и сохранить ресурсы для инноваций.

Imredi самостоятельно разворачивает базы данных PostgreSQL на виртуальных машинах. Не использовать облачные базы данных как сервис — стратегический выбор компании, которая пока не готова делегировать поддержу control plane провайдеру.

Серверы macOS на М1

Команда Imredi занимается кроссплатформенной мобильной разработкой и создает нативное мобильное приложение, которое используется как единое мобильное рабочее место для заказчиков. Чтобы разработчики могли запускать ВМ и Xcode, тестировать приложение, нужен был доступ к macOS.

Решением стал облачный сервер с процессором М1 и последними версиями macOS. Разработчики и QA-специалисты получили удобный и отзывчивый инструмент для удаленной работы команды, а компания смогла сократить расходы на покупку оборудования.

Локальные NVMe-диски

Чтобы работать с большим объемом данных в виртуальных машинах, Imredi использует локальные NVMe-диски. Они напрямую подключаются к серверам, что снижает задержки и обеспечивает быстродействие платформы. Локальные диски используются также для таких чувствительных зон, как application-серверы и серверы баз данных. Решение Selectel оказалось дешевле альтернативных предложений на рынке.

Балансировщик нагрузки

Облачный балансировщик нагрузки Selectel реализован комплексом OpenStack Octavia. Компонент Amphorae (амфора) запускается на облачном сервере и выполняет балансировку нагрузки, используя HAProxy для проксирования трафика.

Application-серверы, которые обрабатывают запросы пользователей и на которых крутится система. Далее расположены серверы баз данных, соединенные между собой. Это отдельные виртуалки, которые отдельно резервируются, реплицируются и работают.
Серверы для аналитики и мониторинга.

Балансировщик нагрузки Selectel работает с запросами заказчиков и установленными лимитами. Imredi использует базовый балансировщик с резервированием и возможностью аварийного переключения (Active-Standby Failover) на резервную амфору в одном пуле. Используются алгоритмы Last Connection, когда новые запросы распределяются на серверы в пуле с наименьшим количеством активных соединений, вес сервера не учитывается и последующим Sticky Sessions, когда новые запросы распределяются на сервер по Least Connections, а последующие запросы этой сессии будут распределяться на тот же сервер, не учитывая алгоритм.

Все это позволяет гибко управлять нагрузкой, обеспечивать консистентность данных в рамках обработки запросов пользователей, и использовать в Облаке Selectel уже готовые сервисы с резервированием и отказоустойчивостью на уровне дата-центров.

Файловое хранилище

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

  • какие задачи выполняются сотрудниками,
  • какая точка не выполняет KPI,
  • что мешает процессу,
  • где произошли изменения.

Эти данные собираются в масштабируемое облачное файловое хранилище Selectel. Там хранятся аналитические данные — они привязаны к медиа-данным (фото-отчетам), к результатам работы и выполнения задач, отчетности, к коммуникациям между точками. Кроме этого, сами данные могут быть в любой момент выгружены из облака по запросу администратора. Для такого объема данных нужно много места и гибкое масштабирование.

Imredi использует для этого файловое хранилище Selectel. Хранилище может быть привязано к любому серверу в любой зоне через многоуровневый VPN. Это обеспечивает отказоустойчивость и георезервирование. Платформа может хранить много копий данных, не затрачивая на это дополнительных ресурсов в плане обработки медиа- и файловых серверов. Все данные хранятся в трех копиях, чтобы минимизировать риск их потери.

Результат

Нагрузка на платформу увеличивается каждый день, поэтому решения должны быть не только технологичными, но и отказоустойчивыми. В рамках сотрудничества с Selectel удалось достичь необходимой гибкости платформы для работы с большим количеством ВМ и новыми пользователями. 

  • Платформа разграничивает заказчиков по доступным ресурсам, которые они могут взять от конкретных ферм. 
  • Архитектура проекта позволяет органично использовать Data Lake на выделенных серверах, поскольку для работы с этими данными не требуется высокая скорость.
  • В 2 раза сократилось время релизов.

Что в итоге

Опыт совместной работы Imredi и Selectel показывает, что провайдер для стартапа — это не только источник ресурсов или поставщик решений. Это полноценный бизнес-партнер. Высокая эффективность сотрудничества достигается за счет одинаковых ценностей двух компаний: идти от задач своих клиентов и предоставлять необходимую функциональность для решения их проблем.

Хотите таких же результатов?

Мы знаем, как этого достичь. Оставьте заявку на консультацию, и мы свяжемся с вами в ближайшее время.

Вы всегда можете получить бесплатную консультацию по телефону, 8 800 555 06 75, почте sales@selectel.ru или в Telegram.

Читайте также: