Go Service Architect
Курс 3: Go Service Architect
Добро пожаловать в мир архитектурного проектирования!
Вы умеете строить сервисы. Теперь научитесь их проектировать. Этот курс для тех, кто хочет вырасти из разработчика в архитектора. Здесь нет места магии — только проверенные паттерны, инженерные компромиссы и системное мышление.
О курсе
Цель: научить проектировать, масштабировать и эксплуатировать продакшен-системы уровня крупных компаний.
Подход: каждый модуль погружает в конкретный аспект архитектуры. Вы не просто изучаете паттерны — вы учитесь принимать решения и защищать их перед командой.
Результат: после курса вы сможете самостоятельно спроектировать распределённую систему, выбрать платформу деплоя, обеспечить надёжность и задокументировать решения.
Для кого этот курс
| Аудитория | Что получит |
|---|---|
| Middle-разработчики | Путь к уровню Senior |
| Сильные backend-инженеры | Архитектурное мышление |
| Тимлиды | Навыки системного проектирования |
Предварительные требования
Обязательные
- ✅ Завершённый Курс 2: Go Backend Developer
- ✅ Опыт построения и поддержки продакшен-сервисов
- ✅ Понимание Clean Architecture
- ✅ Практика работы с PostgreSQL и тестированием
Желательные
- Базовое понимание распределённых систем
- Опыт работы с Docker и CI/CD
- Понимание наблюдаемости (логи, метрики, трейсы)
Программа курса
Модуль 1: Архитектура уровня Senior
Файл: 01-senior-go-architecture.md
- Границы сервисов
- Модульный монолит vs микросервисы
- Домен-ориентированное проектирование
- Инверсия зависимостей в Go
- Поддерживаемость и расширяемость
Практика: спроектировать границы сервисов для домена
Модуль 2: Продвинутый дизайн API
Файл: 02-advanced-api-design.md
- Contract-first подход
- Версионирование и обратная совместимость
- Пагинация, фильтрация, сортировка
- Управление жизненным циклом API
Практика: спроектировать API с версионированием
Модуль 3: Паттерны распределённых систем
Файл: 03-distributed-systems-patterns.md
- Eventual consistency
- Паттерны Saga и Outbox
- Идемпотентность
- Компенсационные транзакции
- Обработка ошибок в распределённых системах
Практика: реализовать Saga оркестрацию
Модуль 4: Платформенное мышление и деплой
Файл: 04-platform-deployment-thinking.md
- Serverless vs VDS vs Kubernetes
- Единый бинарник
- Канареечные деплои
- Инфраструктура как код
- Терраформ и Ансибл
Практика: подготовить инфраструктуру для деплоя
Модуль 5: Наблюдаемость в масштабе
Файл: 05-observability-at-scale.md
- Метрики, логи, трейсы
- Корреляция запросов
- Дашборды и алерты
- Профилирование в продакшене
Практика: настроить наблюдаемость для сервиса
Модуль 6: Безопасность и секреты
Файл: 06-security-and-secrets.md
- Управление секретами
- Ротация ключей
- Шифрование данных
- Аудит безопасности
Практика: реализовать ротацию секретов
Модуль 7: Хранение данных и стратегия
Файл: 07-storage-data-strategy.md
- Выбор хранилища данных
- Репликация и шардирование
- Миграции без даунтайма
- Стратегии бэкапов
Практика: спроектировать стратегию хранения данных
Модуль 8: Надёжность и эксплуатация
Файл: 08-reliability-operations.md
- Graceful degradation
- Таймауты и отмена
- Инцидент-менеджмент
- Планирование восстановления (DR)
- Хаос-инжиниринг
Практика: написать runbook для инцидента
Модуль 9: Производительность и нагрузочное тестирование
Файл: 09-performance-load-testing.md
- Профилирование (pprof, trace)
- Нагрузочное тестирование
- Оптимизация производительности
- Планирование мощности
Практика: провести нагрузочное тестирование сервиса
Модуль 10: CI/CD и доставка
Файл: 10-ci-cd-delivery.md
- Пайплайны сборки и тестирования
- Безопасное сканирование
- Стратегии деплоя
- GitOps
Практика: настроить CI/CD пайплайн
Модуль 11: Архитектурная документация
Файл: 11-architecture-documentation.md
- ADR (Architecture Decision Records)
- Диаграммы (C4, sequence)
- Операционные процедуры
- Защита технических решений
Практика: написать ADR для архитектурного решения
Практический проект курса
На протяжении курса вы работаете над архитектурой продакшен-сервиса:
Неделя 1-2: Проектирование
- Определение границ сервисов
- Выбор архитектурных паттернов
- Проектирование API
Неделя 3-4: Распределённые системы
- Реализация Saga и Outbox
- Обработка ошибок
- Идемпотентность
Неделя 5-6: Платформа и деплой
- Выбор платформы
- Подготовка инфраструктуры
- Стратегии деплоя
Неделя 7-8: Надёжность и эксплуатация
- Наблюдаемость
- Безопасность
- Планирование восстановления
Неделя 9-10: Финализация
- Производительность
- Документация
- Подготовка к защите
Итог: полная архитектурная документация сервиса, готовая к реализации и защите
Структура проекта курса
course-3-go-service-architect/
├── README.md # Этот файл
├── 01-senior-go-architecture.md
├── 02-advanced-api-design.md
├── 03-distributed-systems-patterns.md
├── 04-platform-deployment-thinking.md
├── 05-observability-at-scale.md
├── 06-security-and-secrets.md
├── 07-storage-data-strategy.md
├── 08-reliability-operations.md
├── 09-performance-load-testing.md
├── 10-ci-cd-delivery.md
└── 11-architecture-documentation.md
Как проходить курс
Шаг 1: Изучите теорию
Прочитайте материал модуля. Обратите внимание на компромиссы.
Шаг 2: Проанализируйте примеры
Изучите примеры из реальных проектов. Поймите, почему выбраны именно такие решения.
Шаг 3: Спроектируйте решение
Примените знания к вашему проекту. Нарисуйте диаграммы.
Шаг 4: Задокументируйте решение
Напишите ADR или другой документ, фиксирующий решение.
Шаг 5: Обсудите с командой
Защитите решение перед коллегами. Получите обратную связь.
Рекомендации по обучению
Делайте
✅ Проектируйте перед реализацией ✅ Рисуйте диаграммы для каждого решения ✅ Ведите журнал архитектурных решений (ADR) ✅ Обсуждайте решения с коллегами ✅ Читайте постмортемы крупных компаний
Не делайте
❌ Не принимайте решения без анализа альтернатив ❌ Не игнорируйте компромиссы ❌ Не пропускайте документирование ❌ Не бойтесь ошибаться — это часть обучения
Инструменты
Обязательные
- Go — последняя стабильная версия
- Docker — для контейнеризации
- Терраформ — для инфраструктуры как код
Рекомендуемые
- Ансибл — для конфигурации (если VDS)
- Прометеус + Графана — для наблюдаемости
- k6 — для нагрузочного тестирования
- Jaeger — для трейсинга
Оценка прогресса
Критерии успеха
| Модуль | Критерий |
|---|---|
| 1 | Определены границы сервисов |
| 2 | Спроектирован API с версионированием |
| 3 | Реализована Saga или Outbox |
| 4 | Выбрана платформа и подготовлена инфраструктура |
| 5 | Настроена наблюдаемость |
| 6 | Реализована ротация секретов |
| 7 | Спроектирована стратегия хранения |
| 8 | Написан runbook для инцидента |
| 9 | Проведено нагрузочное тестирование |
| 10 | Настроен CI/CD пайплайн |
| 11 | Написаны ADR для ключевых решений |
Финальная проверка
После завершения всех модулей вы должны:
- Уметь проектировать распределённые системы
- Понимать компромиссы архитектурных решений
- Уметь выбирать платформу деплоя
- Обеспечивать надёжность и наблюдаемость
- Документировать архитектурные решения
- Защищать решения перед командой
Что дальше?
После успешного завершения курса вы будете готовы к:
Capstone Project
Финальный проект, объединяющий все знания трека.
Два варианта реализации:
- Serverless — облачные функции, автоскейлинг
- VDS — виртуальный сервер, полный контроль
Что включено:
- Полный цикл разработки
- Обязательные компоненты (API, БД, наблюдаемость, безопасность)
- Документация (ADR, runbooks)
- Защита проекта
FAQ
Сколько времени занимает курс? ~70 часов теории и практики. При темпе 7 часов в неделю — 10 недель.
Нужен ли опыт работы с облачными платформами? Желателен, но не обязателен. В курсе рассматриваются оба варианта: Serverless и VDS.
Что делать, если не понимаю распределённые системы?
- Перечитайте теорию
- Начните с простых паттернов (Outbox)
- Постепенно усложняйте (Saga, идемпотентность)
- Обсуждайте с коллегами
Нужна ли облачная платформа для курса? Для модулей 1-8 достаточно локальной разработки. Для модулей 9-11 и Capstone понадобится доступ к облачной платформе.
Как проверить, что я готов к Capstone? Вы должны уверенно:
- Проектировать распределённые системы
- Выбирать платформу деплоя
- Обеспечивать надёжность и наблюдаемость
- Документировать решения
Готовы стать архитектором? Приступим! 🏗️