
Привет, меня зовут Анатолий, я ведущий разработчик в ITFB Group. Наш ключевой микросервис со временем превратился в настоящего монстра. Разросшийся, медленный и перегруженный лишними функциями, он тормозил весь продукт и усложнял жизнь разработчикам. Любая правка превращалась в квест: чтобы внести изменение в одном месте, приходилось разбираться ещё в десятке несвязанных процессов.
Мы решили провести «хирургическую операцию»: за один месяц силами выделенной команды из 10 человек полностью расчистить сервис, вынести из него 40 процессов и вернуть архитектуре прозрачность. В этой статье я расскажу, как мы поставили диагноз, спланировали операцию и справились с самыми болезненными моментами — от войны с конфигами до разрыва общих DTO.
Главный спойлер: результат превзошёл ожидания. Сервис стал быстрее, команды — автономнее, а система наконец-то обрела масштабируемость.
Диагноз: микросервис, захваченный процессами-паразитами
Сервис стал жертвой собственной востребованности. Каждая новая фича добавляла «всего пару классов», но в итоге он оброс десятками побочных процессов, которые к его основной задаче имели лишь косвенное отношение.
Мы столкнулись с классическими симптомами:
Когнитивная перегрузка. Чтобы поправить один процесс, нужно было вникать ещё в десять.
Медленный цикл разработки. Запуск сотен несвязанных тестов занимал огромное время.
Архитектурная гниль. Сервис стал «точкой связывания» для всей системы, нарушая принципы слабой связанности.
Пример: в сервис платежей зачем-то встроили генерацию отчётов, а в сервисе уведомлений жили свои утилиты для расчёта метрик. Смешение ответственности стало нормой.
Операция «Расщепление»: план и вызовы
Мы выделили dedicated-команду из 10 разработчиков и поставили амбициозную цель: за один месяц провести полный рефакторинг.
План выглядел так:
Инвентаризация и маркировка. Мы каталогизировали всё: процессы, делегаты, DTO, фикстуры, конфигурации.
Пошаговое «выпиливание». Выносили по 2–3 процесса в неделю, проверяя, что продакшен не ломается.
Отслеживание зависимостей. Следили, чтобы за процессом уходили все его хвосты: DTO, утилиты, фикстуры, настройки в pom.xml и application.yaml.
Самые болезненные моменты:
Мусор, который легко забыть. Один «забытый» dependency мог свести на нет всю работу.
Война конфигов. Вырезание конфигураций из pom.xml и application.yaml оказалось самым кропотливым: неверный dependency — и сервис не встаёт. Несколько раз у нас реально падали стенды.
Разделение DTO и API. Мы раскладывали общие DTO и интерфейсы feign-клиентов по тематическим библиотекам, чтобы новые сервисы оставались независимыми.
Это было похоже на хирургическую операцию: каждый «разрез» должен быть точным, иначе вся система начинала «кровоточить».
Результат: не только чистота, но и скорость
Через месяц мы вынесли около 40 процессов. Но главная ценность была не в цифрах, а в качественных изменениях.
Чистая архитектура. Каждый сервис теперь выполняет только свою основную задачу. Ответственности перестали пересекаться.
Скорость запуска стендов. Ушла необходимость поднимать и настраивать лишние компоненты. Время подготовки окружения сократилось в разы.
Быстрее ответы на запросы. Бывший монстр перестал тратить ресурсы на посторонние задачи.
Скорость разработки. Команды, работающие с выделенными сервисами, стали полностью автономными: меньше координации, больше результата.
Что мы вынесли для себя
Главный урок прост: рефакторинг монолита в микросервисы — это не только про бизнес-логику. Это ещё и война с конфигурациями, зависимостями и «мусором», который копится годами.
Успех обеспечили три вещи:
тщательное планирование,
выделенная команда,
и фокус на полном цикле — от кода до конфигов.
Теперь наша система не просто чище. Она быстрее, масштабируемее и готова к новым фичам без страха превратиться в очередного монстра.
Комментарии (3)

bossalex
25.12.2025 14:01Это получается у вас в команде системный аналитик был плохой или он схалтурил. Или вым написали монолит микро сервис потом нашли его монструозным но всё равно обозвали микросервисом хотя он был макро сервисом и решили нормализовать его микросервисов и в итоге ваш сервис расплодился с 1 го до 41го и кто оркестра цию писал? И сколько денег потратили, а ну если в среднем у вас 10 человек а это минимум 100тр на чела, то вы по сути за месяц потратили 1 млн рублей, то вы молодцы(. И теперь бизнесу надо будет эти затраты заработать, а это наверное минимум 1 год. А потом вы поймете что ваши микро сервисы надо опять нормализовать так как нормализацией много) , и придётся или какие-то сервисы слить или наоборот раздробить и это будет вечно! Классное решение ваша команда всё время будет в процессе, пока не пройдёт какой нибудь тимлид, тех, фул, ай, ... Лид, стек, чар или AI который всё переделает и оптимизирует - вечный двигатель! Напишите кто был инициатором и распишите продукт согласно роадмапа или истории проекта. А то мы все в в измыслимах) Или вся суть а у нас системного аналитика то и небыло сервис написали 2чела за месяц или за год, но вот пошла новая команда и всё переделала по фэн-шуй!
Apoheliy
По-моему, присутствует некоторый когнитивный диссонанс (и по главному уроку в том числе):
Пардонь-те, но у вас ИЗНАЧАЛЬНО был МИКРОСЕРВИС.
И тогда: а куда вы рефакторились? Тем более, что:
Ключевые слова: "... не затрагивающий её внешнего поведения ...". Т.е. если вы что-то распилили на независимые части, то как-бы внешнее поведение поменялось.
Щепотка сарказма: Если вы ушли от одного микросервиса ... то, возможно, вы переписали один микросервис в 40 архитектурно-прозрачных монолитов?
---
В результате, из вашей статьи напрашивается один "Главный урок": хочешь добавить пару классов в микросервис - сделай другой микросервис и будет тебе счастье!
Только почему-то такое не было озвучено :((
tkutru
Всё верно. Только почему-то они свой раздувшийся сервис продолжили называть "микро".