Привет, меня зовут Анатолий, я ведущий разработчик в ITFB Group. Наш ключевой микросервис со временем превратился в настоящего монстра. Разросшийся, медленный и перегруженный лишними функциями, он тормозил весь продукт и усложнял жизнь разработчикам. Любая правка превращалась в квест: чтобы внести изменение в одном месте, приходилось разбираться ещё в десятке несвязанных процессов.

Мы решили провести «хирургическую операцию»: за один месяц силами выделенной команды из 10 человек полностью расчистить сервис, вынести из него 40 процессов и вернуть архитектуре прозрачность. В этой статье я расскажу, как мы поставили диагноз, спланировали операцию и справились с самыми болезненными моментами — от войны с конфигами до разрыва общих DTO.

Главный спойлер: результат превзошёл ожидания. Сервис стал быстрее, команды — автономнее, а система наконец-то обрела масштабируемость.

Диагноз: микросервис, захваченный процессами-паразитами

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

Мы столкнулись с классическими симптомами:

  • Когнитивная перегрузка. Чтобы поправить один процесс, нужно было вникать ещё в десять.

  • Медленный цикл разработки. Запуск сотен несвязанных тестов занимал огромное время.

  • Архитектурная гниль. Сервис стал «точкой связывания» для всей системы, нарушая принципы слабой связанности.

Пример: в сервис платежей зачем-то встроили генерацию отчётов, а в сервисе уведомлений жили свои утилиты для расчёта метрик. Смешение ответственности стало нормой.

Операция «Расщепление»: план и вызовы

Мы выделили dedicated-команду из 10 разработчиков и поставили амбициозную цель: за один месяц провести полный рефакторинг.

План выглядел так:

  1. Инвентаризация и маркировка. Мы каталогизировали всё: процессы, делегаты, DTO, фикстуры, конфигурации.

  2. Пошаговое «выпиливание». Выносили по 2–3 процесса в неделю, проверяя, что продакшен не ломается.

  3. Отслеживание зависимостей. Следили, чтобы за процессом уходили все его хвосты: DTO, утилиты, фикстуры, настройки в pom.xml и application.yaml.

Самые болезненные моменты:

  • Мусор, который легко забыть. Один «забытый» dependency мог свести на нет всю работу.

  • Война конфигов. Вырезание конфигураций из pom.xml и application.yaml оказалось самым кропотливым: неверный dependency — и сервис не встаёт. Несколько раз у нас реально падали стенды.

  • Разделение DTO и API. Мы раскладывали общие DTO и интерфейсы feign-клиентов по тематическим библиотекам, чтобы новые сервисы оставались независимыми.

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

Результат: не только чистота, но и скорость

Через месяц мы вынесли около 40 процессов. Но главная ценность была не в цифрах, а в качественных изменениях.

  • Чистая архитектура. Каждый сервис теперь выполняет только свою основную задачу. Ответственности перестали пересекаться.

  • Скорость запуска стендов. Ушла необходимость поднимать и настраивать лишние компоненты. Время подготовки окружения сократилось в разы.

  • Быстрее ответы на запросы. Бывший монстр перестал тратить ресурсы на посторонние задачи.

  • Скорость разработки. Команды, работающие с выделенными сервисами, стали полностью автономными: меньше координации, больше результата.

Что мы вынесли для себя

Главный урок прост: рефакторинг монолита в микросервисы — это не только про бизнес-логику. Это ещё и война с конфигурациями, зависимостями и «мусором», который копится годами.

Успех обеспечили три вещи:

  • тщательное планирование,

  • выделенная команда,

  • и фокус на полном цикле — от кода до конфигов.

Теперь наша система не просто чище. Она быстрее, масштабируемее и готова к новым фичам без страха превратиться в очередного монстра.

Комментарии (3)


  1. Apoheliy
    25.12.2025 14:01

    По-моему, присутствует некоторый когнитивный диссонанс (и по главному уроку в том числе):

    Наш ключевой микросервис со временем превратился в настоящего монстра

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

    Главный урок прост: рефакторинг монолита в микросервисы — это не только про бизнес-логику

    Пардонь-те, но у вас ИЗНАЧАЛЬНО был МИКРОСЕРВИС.

    И тогда: а куда вы рефакторились? Тем более, что:

    Рефа́кторинг (англ. refactoring), или перепроекти́рование кода, перерабо́тка кода, равноси́льное преобразова́ние алгоритмов — процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её работы

    Ключевые слова: "... не затрагивающий её внешнего поведения ...". Т.е. если вы что-то распилили на независимые части, то как-бы внешнее поведение поменялось.

    Щепотка сарказма: Если вы ушли от одного микросервиса ... то, возможно, вы переписали один микросервис в 40 архитектурно-прозрачных монолитов?

    ---

    В результате, из вашей статьи напрашивается один "Главный урок": хочешь добавить пару классов в микросервис - сделай другой микросервис и будет тебе счастье!

    Только почему-то такое не было озвучено :((


    1. tkutru
      25.12.2025 14:01

      Всё верно. Только почему-то они свой раздувшийся сервис продолжили называть "микро".


  1. bossalex
    25.12.2025 14:01

    Это получается у вас в команде системный аналитик был плохой или он схалтурил. Или вым написали монолит микро сервис потом нашли его монструозным но всё равно обозвали микросервисом хотя он был макро сервисом и решили нормализовать его микросервисов и в итоге ваш сервис расплодился с 1 го до 41го и кто оркестра цию писал? И сколько денег потратили, а ну если в среднем у вас 10 человек а это минимум 100тр на чела, то вы по сути за месяц потратили 1 млн рублей, то вы молодцы(. И теперь бизнесу надо будет эти затраты заработать, а это наверное минимум 1 год. А потом вы поймете что ваши микро сервисы надо опять нормализовать так как нормализацией много) , и придётся или какие-то сервисы слить или наоборот раздробить и это будет вечно! Классное решение ваша команда всё время будет в процессе, пока не пройдёт какой нибудь тимлид, тех, фул, ай, ... Лид, стек, чар или AI который всё переделает и оптимизирует - вечный двигатель! Напишите кто был инициатором и распишите продукт согласно роадмапа или истории проекта. А то мы все в в измыслимах) Или вся суть а у нас системного аналитика то и небыло сервис написали 2чела за месяц или за год, но вот пошла новая команда и всё переделала по фэн-шуй!