Скажу честно: иногда микросервисы похожи на детский утренник — все милые, но каждый кричит о своём и срочно хочет в прод. Мы тоже так жили — пока не поняли, что нам не праздник нужен, а результат.

Сначала всё было логично: один API принимает события, дальше очереди, рабочие тянут и разносят по десяткам интеграций. Но как только один “партнёр” закашляет, очередь раздувается, и внезапно всем становится нехорошо — классический head-of-line blocking. Мы разделили всё по сервисам и очередям “на каждого адресата” — стало спокойнее. Потом разнесли код по отдельным репозиториям — тесты изолировались, скорость разработки выросла.

С ростом числа направлений началась другая драма. Общие библиотеки разъехались по версиям, деплой правок означал “потрогать” десятки сервисов, автоскейлинг настраивался как барометр в лодке: держись курса и молись. А онколл — тот вообще переехал жить к ноутбуку.

Лекарство оказалось смелым: собрать 140+ сервисов в один. Чтобы не смотреть в сотни очередей, сделали концентратор (Centrifuge), который аккуратно подаёт события в монолит. Параллельно переехали в монорепозиторий и навели порядок в зависимостях — одна версия для всех, никаких догонялок.

Самым вкусным стал скачок по тестам. Мы прикрутили “рекордер трафика” поверх yakbak: первый прогон пишет запросы и ответы в файлы, дальше — мгновенное воспроизведение без интернета. Итог — стабильные, быстрые и воспроизводимые тесты для 140+ направлений. Честно, это выглядело как фокус.

Что получили:

  • Быстрые правки в общих библиотеках и один деплой вместо сотни.
  • Единые зависимости и прозрачное сопровождение.
  • Проще масштабировать: общий пул воркеров сглаживает пики.

Чем заплатили:

  • Сложнее изолировать фатальные баги — нужна дисциплина и защитные контуры.
  • Кэш в памяти реже “тёплый”.
  • Апгрейд библиотеки может затронуть несколько направлений — спасают тесты.

Вывод простой: не тренд выбирает вас, а ваши нагрузки и команда. Нам монолит вернул скорость — и, что важнее, сон.