ЛентаСтатьиЗаметкиКурсы
Рецепты
← Все курсы

Архитектура распределённых систем

GoArchitectureDistributed SystemsSagaOutboxResilienceSLOYandex CloudTerraformOpenTelemetryKafkaYDB

Курс по архитектуре распределённых систем для Senior-разработчиков на Go. Одно-трековый: только Go. Студент проходит путь от прототипа до production-ready системы, применяя каждый паттерн как ответ на конкретную боль роста.

Философия курса

Паттерн — это ответ на боль роста, а не самоцель. Мы не изучаем Outbox ради Outbox. Мы изучаем Outbox, когда проект дорос до интеграций, и события начали теряться. Мы не изучаем Saga ради Saga — мы изучаем Saga, когда шаги распределённого процесса начали зависать на полпути.

Один проект растёт сквозь все модули. Каждый модуль — это новая стадия зрелости одного и того же проекта. Студент не переключается между разрозненными примерами, а наблюдает, как растёт и усложняется система.

Четыре архетипа проектов. Один и тот же паттерн проявляется по-разному в разных типах систем:

  • Финтех (P2P) — основной сквозной пример (CP, идемпотентность, Saga, аудит)
  • Git-хостинг — практический курс-территория (POSIX, стриминг, bulkhead, saga-merge)
  • Мессенджер — real-time, доставка, офлайн (AP, очереди)
  • Лента / чтение — AP, кэш, шардирование, eventual consistency

Цель курса

Вырастить инженера, который:

  • Осознанно выбирает компромиссы (trade-offs) и фиксирует их в ADR с количественными метриками
  • Понимает, когда нужен паттерн (признаки боли роста), а не только как его реализовать
  • Проектирует отказоустойчивые распределённые системы на Go поверх Yandex Cloud
  • Управляет распределёнными транзакциями (Outbox, Saga), гарантирует идемпотентность
  • Планирует деградацию и эволюцию инфраструктуры
  • Измеряет качество системы через SLO, Error Budget и алерты

Формат

Модульный, проектный, с Code Review и защитой архитектуры. Каждый модуль: инцидент → теория → практика → антипаттерн → чек-лист → мостик.

Длительность

3–6 месяцев, 15–25 часов в неделю.

Результат

  • Production-ready система (Capstone)
  • Набор из 8+ ADR с количественными Trade-offs
  • Отчёт по SLO, Error Budget и стоимости
  • Стратегия миграции и эволюции
  • Защита архитектуры перед «комитетом» (CTO/техлид/финдиректор)

Стек

Только Go 1.22+ (без альтернативных треков).

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

Yandex Cloud (Managed PostgreSQL, YDB Serverless, ALB, Lockbox, Message Queue / Kafka, Object Storage, NFS, Cloud Functions), Terraform (IaC), OpenTelemetry, Prometheus, Jaeger.

Сквозные требования

  • Clean Architecture & DDD (Handler → Use Case → Repository → Adapter)
  • Интеграционные тесты с Toxiproxy (сбои сети/БД)
  • Нагрузочные тесты k6 (p99 latency, error rate, throughput)
  • Структурированные логи с trace_id и tenant_id
  • API-контракты с NFR (SLO, RTO, допустимая деградация)
  • Явная fallback-стратегия для каждого внешнего вызова

Место в экосистеме курсов

КурсРольСвязь
Git Hosting: Serverless MVPВходная точка: практика, cost-first, ~50₽/месИспользует паттерны из этого курса на упрощённом стеке
Этот курсКарта мира: паттерны как ответы на боли ростаТеория и практика на полном стеке
Git Hosting: от 10k до 100k RPSТерритория на масштабеПрименяет паттерны к Git-хостингу при росте

Рекомендуемый порядок (по желанию, курс самодостаточен): Serverless MVP → этот курс → Highload.

Модули: стадия роста → боль → паттерн

#Стадия ростаБольПаттерн-лекарствоСигнал «пора изучать»
1Идея / прототип«как не нагородить»Trade-offs, ADR, CAP/PACELCПроект ещё не написан
2MVP / первые юзеры«дубли при ретраях»Идемпотентность, Idempotency-KeyКлиент присылает один запрос дважды
3Интеграции«события теряются»Transactional Outbox, Dual-WriteСобытие не дошло до соседа
4Сложные процессы«шаги зависают на полпути»Saga, компенсацииДеньги списаны, товар не зарезервирован
5Внешние сервисы тормозят«сосед тормозит — мы легли»CB, Bulkhead, кэшp99 вырос из-за чужого таймаута
6Продакшен 24/7«не видно, что ломается»OTel, SLO, Error BudgetИнцидент расследуется > 1 часа
7Публичный API«атаки, утечки»JWT, RBAC, HMAC, секретыУтечка секрета / данных
8Рост нагрузки ×10«как это всё развернуть»IaC, Docker, K8s vs Serverlessp99 > SLO при росте
9Рост нагрузки ×10«БД и диск упираются»PgBouncer → CQRSwrite CPU > 80% на мастере
10Зрелость«как доказать надёжность»Chaos, Cost AwarenessCFO спрашивает: «почему так дорого?»
11Защита«обосновать перед комитетом»Capstone, ROI, миграцияКомитет задаёт «почему не Y»
12Приложение—Инструменты архитектора—

Сквозные требования к ADR

Каждый ADR в курсе содержит:

  • Контекст и альтернативы (мин. 2)
  • Решение с количественными метриками (₽/мес, p99, RTO, % риска)
  • План миграции / отката
  • Связь с другими модулями

Критерий сдачи курса: студент заполняет сводную таблицу Trade-offs своими цифрами и защищает каждое решение перед комитетом — без единого «потому что так принято».

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

1

Модуль 1: Trade-offs и принятие архитектурных решений

→
2

Модуль 2: Идемпотентность и Exactly-once Processing

→
3

Модуль 3: Transactional Outbox и борьба с Dual-Write

→
4

Модуль 4: Распределённые транзакции: Saga

→
5

Модуль 5: Resilience и Highload (отказоустойчивость и кэширование)

→
6

Модуль 6: Observability и SLO (Наблюдаемость и Целевые Уровни Сервиса)

→
7

Модуль 7: Безопасность и IAM (Identity & Access Management)

→
8

Модуль 8: IaC + Compute — Terraform, K8s vs Serverless

→
9

Модуль 9: Эволюция БД — от PgBouncer до CQRS

→
10

Модуль 10: Chaos Engineering и Cost Awareness

→
11

Модуль 11: Рефлексия и защита проекта (Capstone Defense)

→
12

Модуль 12: Инструменты архитектора

→
Начать обучение