Перевели систему, с которой каждый день работают полевая команда и дистрибьюторы, со снятого с поддержки стека на .NET 10 и Linux. Платформа выдерживает пиковую нагрузку и снова готова к развитию.
«Пивоварни Бочкарёв» (ранее — Heineken в России и «Объединённые пивоварни») — третий по объёму производитель пива в стране: 8 пивоваренных заводов и более 20 брендов. Продажи компании держатся на цифровой платформе, которую GROTEM развивает с 2012 года: мобильное SFA-приложение, веб-панель для супервайзеров, портал дистрибьюторов, системы управления оборудованием и контрактами.
У клиента расписан план развития системы почти на три года вперёд. Но выполнить его на старой платформе было невозможно — сначала её нужно было привести в порядок.
Перевести платформу на современный поддерживаемый стек и сделать её надёжной основой для новых бизнес-функций — без остановки ежедневной работы полевой команды и дистрибьюторов.
Синхронизация должна проходить быстро, даже когда вся торговая команда начинает день одновременно.
Дорабатывать систему без обходных решений и постоянного переписывания legacy-кода.
Единый мониторинг и алерты по всем сервисам.
Актуальный стек с регулярными патчами и уход от зависимости от Windows.
GROTEM провела глубокий рефакторинг платформы: объединила разрозненный код в монорепозиторий, перевела сервисы на .NET 10 и Linux, внедрила единую авторизацию и мониторинг. Ключевой блок работ команда выполнила за три месяца, чтобы как можно раньше перейти к бизнес-задачам.
Разрозненные репозитории объединили в монорепозиторий с модульной сервисной архитектурой и убрали дублирующийся код:
Сервисы перевели в Docker-контейнеры на Linux. Единый CI/CD сам определяет, какие сервисы пересобрать при изменении общих библиотек, а тестовая, демо- и продуктивная среды разделены физически и логически.
Самописный движок фоновых процессов под Windows заменили на Temporal. Распределённые операции выполняются как саги с компенсацией: если шаг не прошёл, процесс корректно откатывается или перезапускается.
Метрики, логи и трейсы сервисов и мобильного приложения собираются в Grafana. Алерты приходят команде, и о масштабных проблемах она узнаёт раньше, чем пользователи.
Платформу меняли изнутри, пока ею каждый день пользовались торговые представители, супервайзеры и дистрибьюторы.
Около 1,8 млн строк кода с учётом дублей, неочевидные связи между сервисами и настройки, которые не менялись годами.
Новая авторизация не должна была отключить сотрудников, которые ещё работали в старой версии приложения.
Обмен данными с учётными системами дистрибьюторов должен был продолжаться без перерыва.
Бизнесу нужны были новые функции, а не «невидимый» рефакторинг. Поэтому ключевой блок работ уложили в три месяца.
Объём данных на продуктивной среде заметно больше, чем на тестовой. Часть особенностей проявилась только после релиза — команда разбирала их в режиме гиперопеки, в постоянной связи с клиентом.
Главный принцип — модернизировать платформу так, чтобы пользователи и партнёры клиента не почувствовали переход.
Платформа переведена на актуальный стек и снова развивается: на ней уже выходят новые бизнес-функции. Синхронизация мобильного приложения занимает меньше 5 минут даже на территориях с 700+ торговыми точками.
синхронизация на территории с 700+ торговыми точками
репозиторий вместо разрозненной кодовой базы
проекта после очистки и объединения кода
версия runtime — все сервисы на .NET 10
Разберём задачу, предложим архитектуру решения и оценим сроки реализации — на первой консультации, бесплатно.