Мониторинг, логирование и микросервисы против монолита

Систему, которую не видишь, нельзя ни чинить, ни развивать осознанно.

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

Три столпа наблюдаемости

СигналЧто этоОтвечает на вопрос
Метрикичисла во времени: QPS, latency, ошибки, CPU«насколько здорова система прямо сейчас?»
Логитекстовые записи событий«что именно произошло в этом запросе?»
Трейсыпуть одного запроса через все сервисы«где в цепочке потерялось время?»

Алерты поверх метрик предупреждают раньше пользователей: «доля ошибок > 1%», «p99 > 500 мс». Базовый набор для слежки — «golden signals»: задержка, трафик, ошибки, насыщение ресурсов.

Монолит и микросервисы

Монолит — всё приложение единым процессом и кодовой базой. Микросервисы — набор маленьких независимых сервисов, общающихся по сети, каждый со своей базой и релизным циклом.

КритерийМонолитМикросервисы
Разработка на стартепроще и быстреесложнее, больше инфраструктуры
Деплойвсё разомкаждый сервис независимо
Масштабированиецеликомточечно — только узкое место
Отказ частиможет уронить всёизолирован (при правильной развязке)
Командымешают друг другу в одном кодеработают независимо
Отладкапроще: один процесссложнее: сеть, распределённые трейсы
Транзакциипростые, локальныераспределённые, сложные

Когда что

Микросервисы — не «лучше», а «другой набор компромиссов». Они решают организационную проблему: много команд, которым тесно в одном коде и релизе. Но добавляют сетевую сложность, распределённые транзакции и тяжёлую эксплуатацию. Маленькому проекту они приносят боль без выгоды.

  • Монолит: старт, маленькая команда, неясные границы домена. Почти всегда правильное начало.
  • Микросервисы: много команд, разная нагрузка на части системы, нужны независимые релизы и точечное масштабирование.

Здравый путь — начать с монолита (часто «модульного») и выделять сервисы по мере роста, когда границы прояснились. Дробить раньше времени — частая дорогая ошибка.

Итог

  • Наблюдаемость стоит на трёх столпах: метрики (здоровье), логи (детали), трейсы (путь запроса); поверх — алерты.
  • Микросервисы решают организационную проблему ценой сетевой сложности и распределённых транзакций.
  • Разумно начинать с монолита и выделять сервисы, когда границы домена прояснились.
Проверьте себя
1. Какой сигнал наблюдаемости отвечает на вопрос «где в цепочке сервисов потерялось время?»
AМетрики
BРаспределённые трейсы
CЛоги
DАлерты
2. Какую главную проблему по-настоящему решают микросервисы?
AОни всегда работают быстрее монолита
BОрганизационную: много команд могут разрабатывать и релизить независимо
CОни убирают необходимость в базе данных
DОни упрощают отладку
3. Что обычно разумно для старта нового продукта маленькой командой?
AСразу десяток микросервисов
BНачать с монолита и выделять сервисы по мере роста и прояснения границ
CВообще не использовать базу данных
DСразу мультирегиональное развёртывание
Поддержать проект