Мониторинг, логирование и микросервисы против монолита
Систему, которую не видишь, нельзя ни чинить, ни развивать осознанно.
Наблюдаемость (observability) — свойство системы, позволяющее по её внешним сигналам (метрики, логи, трейсы) понять, что происходит внутри.
Три столпа наблюдаемости
| Сигнал | Что это | Отвечает на вопрос |
| Метрики | числа во времени: QPS, latency, ошибки, CPU | «насколько здорова система прямо сейчас?» |
| Логи | текстовые записи событий | «что именно произошло в этом запросе?» |
| Трейсы | путь одного запроса через все сервисы | «где в цепочке потерялось время?» |
Алерты поверх метрик предупреждают раньше пользователей: «доля ошибок > 1%», «p99 > 500 мс». Базовый набор для слежки — «golden signals»: задержка, трафик, ошибки, насыщение ресурсов.
Монолит и микросервисы
Монолит — всё приложение единым процессом и кодовой базой. Микросервисы — набор маленьких независимых сервисов, общающихся по сети, каждый со своей базой и релизным циклом.
| Критерий | Монолит | Микросервисы |
| Разработка на старте | проще и быстрее | сложнее, больше инфраструктуры |
| Деплой | всё разом | каждый сервис независимо |
| Масштабирование | целиком | точечно — только узкое место |
| Отказ части | может уронить всё | изолирован (при правильной развязке) |
| Команды | мешают друг другу в одном коде | работают независимо |
| Отладка | проще: один процесс | сложнее: сеть, распределённые трейсы |
| Транзакции | простые, локальные | распределённые, сложные |
Когда что
Микросервисы — не «лучше», а «другой набор компромиссов». Они решают организационную проблему: много команд, которым тесно в одном коде и релизе. Но добавляют сетевую сложность, распределённые транзакции и тяжёлую эксплуатацию. Маленькому проекту они приносят боль без выгоды.
- Монолит: старт, маленькая команда, неясные границы домена. Почти всегда правильное начало.
- Микросервисы: много команд, разная нагрузка на части системы, нужны независимые релизы и точечное масштабирование.
Здравый путь — начать с монолита (часто «модульного») и выделять сервисы по мере роста, когда границы прояснились. Дробить раньше времени — частая дорогая ошибка.
Итог
- Наблюдаемость стоит на трёх столпах: метрики (здоровье), логи (детали), трейсы (путь запроса); поверх — алерты.
- Микросервисы решают организационную проблему ценой сетевой сложности и распределённых транзакций.
- Разумно начинать с монолита и выделять сервисы, когда границы домена прояснились.