Перейти к содержанию

Начало урока

Архитектура микросервисов

Разделение одного крупного Node-приложения на маленькие, независимо развёртываемые сервисы

Главная идея: Архитектура микросервисов разбивает единое развёртываемое приложение (монолит) на набор небольших сервисов, каждый из которых владеет одной бизнес-возможностью, своими данными и своим циклом развёртывания. Сервисы общаются по сети - синхронно (HTTP/gRPC) или асинхронно (сообщения/события). Вы меняете простоту одного процесса на независимое масштабирование и развёртывание ценой настоящей сложности распределённых систем.
К концу урока вы сможете:
  • объяснить, что такое граница сервиса и как её найти (ограниченные контексты, а не слои);
  • выбирать между синхронной (запрос/ответ) и асинхронной (событие/сообщение) коммуникацией;
  • применять правило «база данных на сервис» и понимать, почему общая база ломает микросервисы;
  • честно взвешивать компромиссы микросервисов против хорошо построенного монолита;
  • распознавать, когда монолит - верный ответ, а микросервисы преждевременны.

1. От монолита к сервисам

Монолит - это одна развёртываемая единица. В мире Node это единое Express-приложение: маршрутизация, бизнес-логика и доступ к базе данных живут в одном процессе и выкатываются вместе. Это вполне хорошая архитектура - её просто запускать, легко отлаживать по одному стеку вызовов, а транзакция базы данных может охватывать весь домен. Большинству систем стоит начинать именно отсюда.

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

Аналогия. Монолит - это одна большая кухня ресторана, где все повара делят один набор столов, один холодильник и один блокнот заказов. Это эффективно, пока команда маленькая. Микросервисы - как фуд-корт: у каждого прилавка (гриль, суши, пекарня) свой стол, свой холодильник, свой персонал, и он может открыться, закрыться или расшириться, не останавливая остальные. Координация теперь идёт через «билеты», передаваемые между прилавками, а не через крик через один зал - больше подвижных частей, но каждый прилавок масштабируется и отказывает сам по себе.

Ключевой сдвиг в мышлении: микросервисы - это меньше технический паттерн и больше организационный. Их принимают, чтобы независимые команды могли независимо разрабатывать, развёртывать и масштабировать. Если такого давления нет, лишняя машинерия - это чистые издержки.

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя