Computer Science

Учебник Микросервисы для начинающих

17 уроков · 6 разделов · бесплатно, без регистрации

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

Курс «Микросервисы: архитектура распределённых систем» состоит из 6 разделов и 17 уроков: Монолит и микросервисы, Взаимодействие сервисов, Данные, Инфраструктура, Отказоустойчивость и Практика. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Монолит и микросервисы

    1. Монолит против микросервисов

      Что монолит делает лучше микросервисов, сколько стоит каждый сетевой вызов, почему цепочка сервисов менее надёжна и зачем стартапу монолит.

    2. Когда микросервисы — плохая идея

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

    3. Границы сервисов и предметная область

      Как резать систему на сервисы: по бизнес-возможностям, а не по слоям. Bounded context из DDD и независимый деплой как проверка правильной границы.

  2. 2 Взаимодействие сервисов

    1. Синхронное взаимодействие: REST и gRPC

      Запрос-ответ между микросервисами: как REST и gRPC устроены изнутри, почему цепочка синхронных вызовов копит задержку и роняет доступность, и как этим управлять.

    2. Асинхронное взаимодействие и события

      События вместо вызовов: как брокер сообщений развязывает сервисы, чем событие отличается от команды, и что eventual consistency означает для бизнеса и пользователя.

    3. Контракты и версионирование API

      Как менять API микросервиса, не ломая потребителей: обратная совместимость, стратегии версионирования, contract testing и автоматическая проверка breaking changes в CI.

  3. 3 Данные

    1. База данных на сервис

      Почему общая база превращает микросервисы в распределённый монолит, зачем осознанно дублировать данные и чем заменить JOIN между сервисами.

    2. Распределённые транзакции и Saga

      Почему двухфазный коммит не используют в микросервисах, как устроена Saga с компенсациями и чем хореография отличается от оркестрации.

    3. CQRS и Event Sourcing (обзор)

      CQRS: зачем разделять модель записи и модель чтения. Event Sourcing: событие как источник истины, аудит и машина времени — и когда это оверинжиниринг.

  4. 4 Инфраструктура

    1. API Gateway и BFF

      Зачем нужен API Gateway: единая точка входа, аутентификация и rate limiting на границе, паттерн Backend for Frontend и риск превратить gateway в новый монолит.

    2. Service Discovery и балансировка

      Как сервисы находят друг друга в динамике: реестр сервисов, client-side и server-side discovery, DNS в Kubernetes, балансировка нагрузки и health-checks (liveness, readiness).

    3. Конфигурация и секреты

      Конфигурация микросервисов: принцип 12-factor «конфиг вне кода», централизованные хранилища, feature flags, секреты, Vault и ротация. Почему переменных окружения не всегда хватает.

  5. 5 Отказоустойчивость

    1. Таймауты, ретраи и Circuit Breaker

      Почему отказ соседнего сервиса — норма, зачем таймаут обязателен всегда, как ретраи вызывают лавину запросов и как работает Circuit Breaker и его три состояния.

    2. Идемпотентность и повторная доставка

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

    3. Наблюдаемость: логи, метрики, трейсинг

      Три столпа наблюдаемости микросервисов: метрики, логи и трейсинг. Сквозной trace-id, формат traceparent, что логировать и чего не логировать никогда.

  6. 6 Практика

    1. Как разрезать монолит пошагово

      Паттерн Strangler Fig: как душить монолит по кусочку, что выносить первым, как жить с общей базой на переходный период и переключать трафик без риска.

    2. Антипаттерны микросервисов

      Пять антипаттернов микросервисов: распределённый монолит, общая база, наносервисы, длинная синхронная цепочка и жизнь без трейсинга — признаки и лечение.