Микросервисная архитектура в продакшен разработке [Тариф Стандарт] [Станислав Клоков]

ALL DAR Bot

🛡 МОДЕРАТОР 🛡
Регистрация
26 Март 2018
Сообщения
89.786
Автор: Станислав Клоков
Название: Микросервисная архитектура в продакшен разработке [Тариф Стандарт] [Станислав Клоков]

skoro-1.jpg


Описание:
Складчина: Микросервисная архитектура в продакшен разработке [Тариф Стандарт] [Станислав Клоков]

Научись проектировать системы, которые можно развивать, масштабировать и поддерживать.



Кому будет полезно


  • Middle-разработчикам

    научишься видеть систему целиком, определять границы модулей и учитывать сценарии отказа.
  • Senior-разработчикам

    систематизируешь знания о распределённых данных, очередях, контрактах и устойчивости сервисов.
  • Тимлидам и техлидам

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

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

Это курс для действующих разработчиков

Тебе нужно знать:

  • Python
  • HTTP / API
  • SQL
  • Тестирование

Программа:

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

  • Научишься проводить границы сервисов по бизнес-возможностям
  • Определишь владельцев данных и единые источники истины
  • Измеришь "налог на микросервисы": задержки, доступность цепочки и количество мест отказа
  • Разберёшь влияние процессов Python, uvicorn и asyncio на развёртывание сервиса
  • Разделишь учебный интернет-магазин на сервисы, составишь карту владельцев данных и измеришь стоимость сетевых вызовов

Домашнее задание

Определишь владельцев данных бонусной системы и её взаимодействие с остальными сервисами. Обоснуешь архитектурное решение: выделять склад в отдельный сервис или оставить модулем монолита

Результат недели

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

Синхронное взаимодействие и проектирование API

  • Спроектируешь контракт с помощью канвы целей API
  • Научишься проектировать и обрабатывать ошибки при взаимодействии между сервисами
  • Разберёшь совместимое развитие API и терпимое чтение
  • Добавишь таймауты, повторы с jitter, общий дедлайн и предохранитель
  • Защитишь повторные POST-запросы ключом идемпотентности
  • Проверишь, почему таймаут или потерянный ответ не означают, что деньги не списались
  • Разработаешь API заказов на FastAPI и устойчивый клиент сервиса оплаты, который корректно работает при задержках, отказах и потерянных ответах

Домашнее задание

Добавишь отмену заказа и изменение адреса с проверкой состояния заказа. Найдёшь ломающие изменения контракта и предложишь совместимые альтернативы. Доработаешь идемпотентность создания заказа и проверишь повторные и конкурентные запросы

Результат недели

Научишься проектировать API вокруг задач потребителя и учитывать частичные отказы при взаимодействии между сервисами.

Асинхронное взаимодействие на Kafka

  • Сравнишь Kafka, RabbitMQ, Redis Pub/Sub и NATS, разберёшь их отличия и критерии выбора
  • Изучишь топики, партиции, смещения и группы потребителей
  • Научишься выбирать ключ события и учитывать гарантии порядка сообщений внутри партиции
  • Оформишь событие как публичный контракт сервиса
  • Решишь проблему двойной записи с помощью Transactional Outbox
  • Реализуешь идемпотентного потребителя и разберёшь обработку ядовитых сообщений через DLQ
  • Проведёшь событие OrderCreated через Kafka, настроишь outbox и добьёшься того, чтобы уведомление создавалось один раз даже при повторной доставке события

Домашнее задание

Добавишь обработку невалидных сообщений через DLQ и проверишь совместимость нового поля события со старым потребителем. Создашь отдельного потребителя для подсчёта заказов покупателей с защитой от дублей

Результат недели

Разберёшься, как Kafka помогает развязать сервисы во времени и какие гарантии приходится обеспечивать на стороне приложения.

Данные и транзакции между сервисами

  • Воспроизведёшь потерянное обновление и защитишь остатки атомарным условным UPDATE, проверишь решение на параллельных резервах
  • Разберёшь паттерн Database per service и сохранение изменений вместе с событиями в одной локальной транзакции
  • Изучишь оркестровку, хореографию и компенсации
  • Построишь сагу как сохраняемую машину состояний
  • Проверишь восстановление саги после перезапуска и разберёшь, почему отмена требует подтверждения компенсаций
  • Воспроизведёшь и исправишь гонки в PostgreSQL, а затем реализуешь сагу оформления заказа с оплатой, резервированием товара и компенсациями

Домашнее задание

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

Результат недели

Научишься защищать данные от конкурентных изменений и проводить бизнес-операции через несколько сервисов без общей ACID-транзакции.

Запросы, BFF и переход к микросервисам

  • Разберёшь устройство API Gateway и реализуешь BFF для клиентского приложения
  • Разберёшь аутентификацию и авторизацию: проверку JWT на шлюзе, создание подписи закрытым ключом, её проверку открытым и проверку прав на заказ в сервисе
  • Соберёшь данные нескольких сервисов через API Composition
  • Настроишь осознанную деградацию необязательных частей экрана
  • Построишь CQRS-проекцию из событий Kafka
  • Разберёшь устранение N+1 через батч-запросы и защиту проекции от повторных и запоздавших событий
  • Научишься пересобирать проекцию из журнала событий
  • Разберёшь постепенный переход от монолита по схеме Strangler Fig
  • Создашь BFF для экрана "Мой заказ", проекцию истории заказов и измеришь, во что обошлось разделение системы на сервисы

Домашнее задание

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

Результат недели

Разберёшься, чем заменить JOIN после разделения данных между сервисами и как скрыть внутреннюю структуру системы от клиента.

Микросервис в продакшене: тесты, наблюдаемость и выкатка

  • Разберёшь юнит-, интеграционные, компонентные и контрактные тесты
  • Настроишь логи и распределённую трассировку
  • Разберёшь метрики частоты запросов, ошибок и задержек, целевые показатели надёжности и условия для оповещений
  • Передашь контекст трассы через HTTP, Kafka и outbox
  • Добавишь liveness- и readiness-пробы
  • Реализуешь корректную остановку сервиса
  • Разберёшь rolling update, blue-green, canary и постепенное обновление БД, API и событий с сохранением совместимости старых и новых версий сервисов
  • Напишешь тесты на границах сервиса, соберёшь в Jaeger единую трассу от HTTP-запроса до уведомления, свяжешь её с логами и проверишь поведение проб и корректной остановки

Домашнее задание

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

Результат недели

Подготовишь сервис к работе в распределённой системе: от тестирования границ до безопасного обновления версий.

Тариф Стандарт

Цена 40700 руб.

Скрытая ссылка

Материал «Микросервисная архитектура в продакшен разработке [Тариф Стандарт] [Станислав Клоков]», возможно, скоро появится на All-DAR.

Пройдите регистрацию и оформите Premium подписку, чтобы первым получить доступ, и воспользуйтесь поиском — может быть, он уже опубликован.
​
 

Присоединяйтесь, чтобы открыть полный доступ

Комментарии и материалы этой темы доступны только зарегистрированным участникам

Новый участник?

Регистрация занимает меньше минуты

Уже с нами?

Войдите в свой аккаунт

Сверху