Что такое High Cohesion применительно к микросервисной архитектуре?

«Что такое High Cohesion применительно к микросервисной архитектуре?» — вопрос из категории Архитектура, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

High Cohesion (высокая связность) в контексте микросервисной архитектуры означает, что каждый микросервис должен быть сфокусирован на выполнении одной четко определённой бизнес-возможности (business capability) или поддомена (bounded context). Все его компоненты (код, данные, конфигурация) тесно связаны между собой и работают для достижения этой единой цели.

Принцип на практике:

  • Сервис "Заказы" (Order Service) отвечает только за жизненный цикл заказа: создание, изменение статуса, история.
  • Сервис "Оплата" (Payment Service) отвечает только за обработку платежей и взаимодействие с платёжными шлюзами.
  • Сервис "Доставка" (Shipping Service) отвечает только за логистику и отслеживание посылок.

Преимущества High Cohesion в микросервисах:

  1. Упрощение понимания и разработки: Разработчик работает в чётко очерченном контексте.
  2. Независимое развёртывание: Изменения в сервисе "Заказы" не требуют пересборки и перезапуска сервиса "Оплата".
  3. Гранулярное масштабирование: Можно масштабировать только тот сервис, который испытывает высокую нагрузку (например, "Оплата" в час пик).
  4. Повышение отказоустойчивости: Сбой в одном сервисе не обязательно приводит к падению всей системы.

Как достичь High Cohesion? Применяя Domain-Driven Design (DDD) для выявления bounded context и следуя Принципу единственной ответственности (SRP) на уровне сервиса. Сервис должен меняться только по одной причине — из-за изменений в его конкретном бизнес-домене.