Почему монолиты падают целиком

Главная проблема монолита — это огромный Blast Radius (Радиус поражения). Из-за сильной связности ошибка в некритичном модуле может вызвать каскадный сбой всей системы. Разберем реальный кейс.

  1. Контекст: Все модули (лента, профили, сообщения) живут в одном репозитории и ходят в общую базу данных.
  2. Изменение: Команда «Ленты» добавляет новое обязательное поле в таблицу users для нужд ML-ранжирования.
  3. Катастрофа: Модуль «Сообщений» ничего не знает о новом поле. Его ORM-слой (например, Hibernate или SQLAlchemy) при попытке прочитать данные ловит ошибку Schema Mismatch и падает.
  4. Урон: Несмотря на то, что «Лента» работает, пользователи не могут отправить сообщения. SLA нарушено, бизнес теряет деньги из-за плохой изоляции данных.
Интеграция микросервисов
Подход Плюсы Минусы Когда применять
Sync REST / gRPC Легко отлаживать, строгие контракты. Каскадные тайм-ауты (если один тормозит — тормозят все). CRUD, где важна мгновенная свежесть данных.
Async Messaging Низкая связность, устойчивость к пикам нагрузки. Сложно отслеживать путь запроса (трейсинг), нужна идемпотентность. События (заказ оплачен), рассылки, биллинг.
Общая БД (Shared DB) Очень быстро в разработке (PoC). Антипаттерн! Schema Drift рушит систему (см. кейс выше). Только как временное решение при миграции.
Инфраструктурный стек

Чтобы не утонуть в сотне сервисов, тебе обязательно понадобятся:

  • Service Discovery: Инструмент, который знает актуальные IP-адреса всех сервисов (Consul, Eureka). Его будем разбирать уже совсем скоро.
  • Distributed Tracing (Jaeger/Zipkin): Позволяет увидеть путь запроса через 20 микросервисов и понять, какой из них тормозит. Подробнее посмотри в рамках «Неделя 6».
  • OpenAPI/Swagger: Живая документация. Если спецификация не лежит рядом с кодом — её не существует. Разбирали в рамках «Неделя 2»
Советы при распиле
  • Не делай «идеально» сразу: Если выпиливаешь кусок из огромного монолита малым числом людей — делай Lift and Shift (перенос логики 1-в-1). Сначала изолируй данные, а рефакторингом займешься потом.
  • Канареечные релизы: Никогда не раскатывай новый микросервис на 100% трафика. Начни с 1-5%, проверь логи, и только потом открывай кран.