
О чем статья?
В статье Создание собственной системы F&R в «Магните»: функциональный дизайн было рассказано о том, что компания «Магнит» столкнулась с ограничениями существующих решений класса Forecast & Replenishment, по производительности, гибкости и скорости реакции.
Так мы решили создать собственное решение.

Я Алексей Соболеков, ИТ-архитектор в Magnit Tech, расскажу о ключевых архитектурных принципах и решениях Magnit F&R. Будет полезно Архитекторам, Техлидам, CTO, и всем, кто проектирует архитектуру высоконагруженных облачных решений на базе Open Source технологий.
Где место F&R в ИТ ландшафте компании?

F&R – это выделенная система в ИТ-ландшафте. Она:
Загружает мастер-данные из корпоративных систем и систем планирования цепочек поставок;
Загружает транзакции из учетных систем;
Рассчитывает прогноз спроса и предложения по пополнению;
Выгружает результаты в системы исполнения цепочек поставок – ERP, Backend магазинов, WMS.
F&R выступает в роли «мозгового центра» цепочек поставок, анализирует текущие запасы, прогнозирует будущий спрос и формирует заказы на закупку и распределение товаров по сети.
Какие принципы лежат в архитектуре?

Мы в «Магните» используем фреймворк TOGAF, согласно которому архитектура начинается с формирования видения, или принципов.
Как указатели на перекрестке, они направляют все команды проекта в едином направлении. Мы выделили четыре группы архитектурных принципов.
1. Полнота функционального покрытия
Система должна полностью охватывать задачи операционного планирования цепочек поставок Магнита, без разрывов в данных и бизнес-процессах.
Архитектурные принципы:
Унифицированный интерфейс – единая точка входа с поддержкой совместной работы пользователей.
Комплексная модель данных – полное отражение состояния цепочки поставок с возможностью расширения.
Модульная полнота – исчерпывающий набор функций с открытой архитектурой для масштабирования.
Magnit F&R полностью заменит унаследованные системы автозаказа и обеспечит сквозное управление товарными запасами «Магнита».
2. Гибкость и адаптивность системы
Для сокращения time-to-market платформа должна предоставлять широкие настройки интерфейса и бизнес-логики.
Ключевые решения:
Создание платформы UI, настраиваемой пользователями.
Модульная архитектура UI на базе микросервисов и микро фронтендов.
Реализация self-service аналитики на базе готовых BI-решений с интеграцией в ClickHouse.
Применение Low-Code для расчета плана пополнения и рекомендаций заказов.
Такая архитектура обеспечивает гибкость бизнес-процессов без модификации ядра системы.
3. Производительность
Для обслуживания сети из 35 000 магазинов система должна обрабатывать экстремальные объемы данных в реальном времени.
Архитектурные принципы обеспечения производительности:
Выбор технологий только совместимых с облачными сервисами. Возможность гибкой утилизации ресурсов облака.
Поддержка кластеризации, шардирования и многопоточности. Отказ от технологий, не способных горизонтально масштабировать свою производительность.
Доменная организация модулей и данных решения. Низкая связанность модулей решения, деление продуктовых команд на стримы согласно модулям.
Централизованное управление бизнес-процессами и мониторинг всех технологических процессов Magnit F&R.
Платформа в себе сочетает:
Возможности BigData-платформ для обработки больших объемов
Характеристики операционных систем реального времени
Гибкость облачных решений
Подобные системы только начинают появляться на мировом рынке, что позиционирует Magnit F&R как технологического лидера в области планирования товарных запасов.
4. Отзывчивость
Система обеспечивать реакцию на события в цепочке поставок:
Реал-тайм мониторинг логистических событий по цепочке поставок, таких как приход товара, отгрузка, приемка, продажа и прочих;
Оперативный и точечный ad-hoc пересчет прогноза спроса и плана пополнения;
Детализация параметров пополнения и расчетов до уровня конкретного товара, магазина и дня.
Архитектурные принципы:
Модель данных и расчеты на уровне Товар-Локация-Период (день, час);
Возможность выборочного запуска модулей для произвольных товарных групп и магазинов;
Интеграция данных в Stream и Micro-batch режимах.
Совмещение событийного режима работы и пакетного привносит в решение высокую сложность, но и дает бизнес-выгоду. Например, возможность уточнения заказов по поставкам и продажам в тот же день.
Это позволяет перевести систему в класс Intelligent Control Tower, где система управляет цепочкой поставок как диспетчерская вышка аэропорта движением самолетов.
Какие технологии и паттерны применяем?
Архитектуру Магнит F&R можно представить как несколько взаимосвязанных архитектурных слоев.
1. Бизнес-архитектура

Слой бизнес-архитектуры описывает как будет работать бизнес на еще не созданной системе. Это сложно. Город (система) еще не построен, но надо уже определить как люди должны в нем жить и работать.
Была определена целевая оргструктура и верхнеуровневые бизнес процессы. Специфичные процессы «Магнита» разделены на целевые ноу-хау и нецелевые, подлежащие замене на отраслевые. Сформировано 560+ функциональных и 150+ нефункциональных требований.
Это создало «конституцию» системы — четкие требования и стандарты для дальнейшей разработки.
2. Интерфейс пользователя

Для интерфейса пользователя выбрали архитектуру микро фронтендов на базе Webpack и Module Federation с общими библиотеками.
Она гибкая, функциональная и расширяемая. Можно разрабатывать и обновлять модули интерфейса независимо друг от друга, без остановки основного приложения.
Для обмена данным применяются протоколы REST, GraphQL и WebSocket.
Выделены основные библиотеки UI:
Основное окно решения – это контейнер, отвечающий за общую разметку, стили, загрузку других модулей, навигацию и маршрутизацию запросов.
Библиотека компонентов содержит «кирпичики» системы, из которых строится приложение.
UI-конструктор интерфейса позволяет пользователям настраивать свои дашборды.
Конструктор процессов выполняет бизнес-процессы и генерирует уведомления.
-
Блок исключений выполняет фоновую работу по уведомлению пользователей.
3. Бизнес – логика

Система поддерживает пользовательские правила расчетов, уведомлений, проверок. Правила описываются в стиле Low Code, далее они интерпретируются в соответствующих модулях системы.
Low Code применяется в тех модулях системы, где требуется максимальная гибкость, и при этом не критична для стабильности и производительности основных расчетов.
К таким модулям относятся:
уведомления пользователей,
первичное наполнение открываемых магазинов,
закупки под промоакции,
настройки методов и параметров расчетов,
валидация вводимых пользователями данных,
-
методики оптимизации запасов (страховые запасы, округление под под квант отборки, распределения, пополнение под промо и прочие, вариативные алгоритмы).
4. Расчетные слои

Система имеет три основных расчетных модуля – Интеграция, Прогнозирование и Пополнение. При этом профиль их нагрузки и методики расчетов различаются.
Интеграция и Прогнозирование считаются крупными пакетами и последовательно обрабатывают данные.
Пополнение имеет как линейную логику расчетов, так и небольшие оптимизационные алгоритмы, например: расчет пополнения промо или точечные пересчеты товаров одного поставщика.
5. Слой данных

В решении применяется несколько архитектурных стилей и технологий для организации данных.
Разнообразные системы-источники предоставляют данные, которые забираются различными ETL/ELT конвейерами. Они реализованы при помощи Debezium, Airtflow, SparkSQL, DBT, Kafka.
Далее данные обрабатываются по слоям согласно Data Lake архитектуре с использованием технологий Parquet, Delta.io, S3, Trino.
Для обеспечения совместной пакетной и потоковой обработки применяется Lambda-архитектура на базе Apache Flink.
А что с единой платформой?

Изначально планировали сделать единую технологическую платформу, на которой потом создать нужную функциональность. Однако, со временем в этом подходе выявились несколько слабых позиций:
Сроки
Бизнес хочет получать выгоду от системы как можно скорее, не дожидаясь создания платформы. В итоге вся платформа становится огромным тех. долгом.
Требования
Платформа не функциональна сама по себе, к ней неприменимы бизнес-требования. Ее заказчиком выступают функциональные разработчики, которые не могут появляться без наличия платформы. Получается замкнутый круг.
Технологии
Разработка универсальной высокопроизводительной платформы предъявляет высокие требования к технологиям. Не получается использовать готовые технологии, так как они узкоспециализированы.
Компетенции
Довольно легко найти разработчика на PySpark или Java, который сможет доработать код в известном фреймворке. Создавая решение на своей платформе, мы ступаем на путь создания своего фреймворка, компетенций по которому на рынке нет.
Подходы
Процесс разработки платформы принципиально отличается от продуктового подхода. Платформы делаются для множества заказчиков (внутренних или внешних), продукт – обычно под одного заказчика (возможно коллективного). Бизнесу «Магнита» нужен продукт.
В итоге, эволюционным путем мы пришли к тому, что Magnit F&R является не единой платформой, а модульным решением, где есть платформенные модули: Платформа UX/UI и Общих сервисов, Платформы расчетов Пополнения и Прогнозирования и Платформа Общих данных (Интеграции).
Что в итоге получилось?

Решение представляет собой комплекс архитектурных решений, основанных на принципах облачности, горизонтального масштабирования, низкой связанности и гибридной обработки данных.
Каждая технология и паттерн выбраны из нескольких вариантов, рассмотрены альтернативы, проведены исследования Proof of Concept (PoC).
В итоге, применяется очень широкий набор современных технологий, подобранных для решения конкретных задач.
Ключевые советы:
1) Четкие архитектурные принципы, основанные на бизнес-требованиях, — это фундамент для масштабирования. Они помогают новым членам команды оценивать свои предложения через призму общих целей и решений. Это позволяет сохранять архитектурную целостность, избежать бесконечного перепроектирования и быстро достигать консенсуса.
2) Выбор технологического стека критически важен для высоконагруженных систем, так как напрямую определяет их производительность и масштабируемость. При этом не стоит избегать разнообразия технологий — ключевой принцип заключается в использовании готовых проверенных решений вместо разработки собственных с нуля, что позволяет сэкономить ресурсы и снизить риски.
3) Не создавайте платформу с нуля. Начните с отдельных сервисов под конкретные бизнес-задачи. Набрав критическую массу, выявите общие технологические компоненты и соберите из них платформу. Это ускорит выход на рынок и сохранит архитектуру чистой.
Комментарии (2)
Ak-47
04.09.2025 22:30Подобные системы только начинают появляться на мировом рынке, что позиционирует Magnit F&R как технологического лидера в области планирования товарных запасов.
А технологический лидер не зазнался, не выдумал сам себе, что он технологический лидер? Или "мировой" синоним "дружественным", тогда точно да!!!
stranger_shaman
как же так вышло, что в Магните декларируется общедоступная сеть WiFi MT_FREE, но подключится к ней решительно невозможно?