PRO

Что такое микросервисная архитектура? Чем отличается от монолита?

Микросервисная архитектура делит систему на небольшие независимо развёртываемые сервисы вокруг бизнес-возможностей. Монолит обычно развёртывается как единое приложение; он проще для старта, а микросервисы дают независимое масштабирование и релизы, но существенно повышают операционную и распределённую сложность.
Подробный ответ

Что такое монолит

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

Что такое микросервисы

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

Сравнение

КритерийМонолитМикросервисы
ДеплойЕдиный артефактНезависимый деплой сервисов
МасштабированиеЧасто масштабируется всё приложениеМожно масштабировать отдельный сервис
ДанныеЧасто общая БДЖелательно владение данными каждым сервисом
Сложность разработкиНиже на стартеВыше из-за сети и распределённых систем
НаблюдаемостьПроще собирать логи и debuggingНужны tracing, централизованные логи и метрики
СбоиСбой модуля может затронуть весь процессМожно изолировать сбои, но появляются каскадные отказы

Преимущества микросервисов

  • независимое масштабирование горячих компонентов;

  • автономные команды и релизы;

  • разделение больших доменов на bounded contexts;

  • возможность выбирать технологию для конкретной задачи.

Недостатки

  • сетевые задержки, частичные отказы, retries и timeouts;

  • распределённые транзакции и eventual consistency;

  • сложнее тестирование, локальная разработка и отладка;

  • выше требования к CI/CD, мониторингу, безопасности и инфраструктуре.

Как ответить на собеседовании

Монолит проще разрабатывать и эксплуатировать на старте, поэтому часто это правильный первый выбор. Микросервисы дают независимый deploy и масштабирование вокруг бизнес-доменов, но добавляют сложности распределённой системы: сеть, consistency, observability и эксплуатацию. Я выбираю микросервисы только при реальных границах домена, масштабе команды и готовности поддерживать эту инфраструктуру.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге