Микросервисы
Что это такое
Архитектура микросервисов делит систему на сервисы, которые развёртываются независимо, каждый владеет своими данными и общается с остальными по сети. Определяющее свойство — не размер, а независимость: команда может изменить и выпустить один сервис, не согласовывая выпуск остальных, а небольшие сервисы, отдельные репозитории и контейнеры — всего лишь следствие, а не само определение.
Почему это важно
Выгода здесь организационная не меньше, чем техническая: когда несколько команд должны выпускать релиз вместе, выпуск превращается в совещание, и темп самой медленной команды задаёт темп всем, тогда как раздельное развёртывание убирает эту связанность. Цена — в том, что сетевой вызов заменяет вызов функции, поэтому задержка, частичный отказ и версионирование приходят сразу, а операции, которые были неявными внутри процесса, становятся явной инфраструктурой; однако небольшая команда с одним продуктом обычно платит эту цену за выгоду, которую никто не получает, поэтому умение вовремя не делить систему и есть половина этой записи.
Что в этом треке
- Границы и владение (05-backend-data/12-microservices/01-boundaries-and-ownership) — где проводить линии между сервисами и кто чем владеет.
- Операционная стоимость (05-backend-data/12-microservices/02-the-operational-cost) — развёртывание, версионирование и изоляция отказов после того, как система стала распределённой.
Предварительные требования
- RESTful API (05-backend-data/06-restful-api)
Что читать дальше
- RESTful API (05-backend-data/06-restful-api) — стиль интерфейса, который эти сервисы обычно выставляют, поэтому читайте его первым.
- Очереди сообщений (Kafka / RabbitMQ) (05-backend-data/17-message-queues-kafka-rabbitmq) — асинхронная альтернатива прямому вызову другого сервиса.
- Архитектура программного обеспечения (01-cs-fundamentals/25-software-architecture) — общая дисциплина границ и связанности, частным случаем которой является эта запись.