Go Backend Developer
Курс 2: Go Backend Developer
Добро пожаловать в мир реальной бэкенд-разработки!
Вы знаете основы Go. Теперь пора строить настоящие сервисы. Этот курс превращает знания языка в инженерные навыки: архитектура, тестирование, наблюдаемость, безопасность.
О курсе
Цель: научить строить поддерживаемые и надёжные сервисы с использованием проверенных архитектурных паттернов.
Подход: каждый модуль приближает вас к созданию продакшен-сервиса. Вы не просто пишете код — вы проектируете систему.
Результат: после курса вы сможете самостоятельно спроектировать и реализовать полноценный бэкенд-сервис с архитектурой, тестами и наблюдаемостью.
Для кого этот курс
| Аудитория | Что получит |
|---|---|
| Разработчики, знающие основы Go | Навыки построения реальных сервисов |
| Junior-разработчики | Путь к уровню Middle |
| Инженеры, начинающие с API | Системный подход к разработке |
Предварительные требования
Обязательные
- ✅ Завершённый Курс 1: Go Foundation
- ✅ Уверенное владение синтаксисом Go
- ✅ Понимание конкурентности
- ✅ Опыт написания юнит-тестов
Желательные
- Базовое знание SQL
- Понимание HTTP и REST
- Опыт работы с базами данных
Программа курса
Модуль 1: Основы проектирования API
Файл: 01-api-design-fundamentals.md
- Принципы REST
- Ресурсы и коллекции
- Версионирование
- Коды состояния
- Пагинация и фильтрация
Практика: спроектировать API для сервиса управления репозиториями
Модуль 2: Паттерны организации проекта
Файл: 02-project-organization-patterns.md
- Flat vs Layered vs Clean Architecture
- Hexagonal Architecture
- Выбор паттерна под задачу
- Структура папок
Практика: организовать проект с использованием слоистой архитектуры
Модуль 3: Clean Architecture Deep Dive
Файл: 03-clean-architecture-deep-dive.md
- Границы слоёв
- Зависимости между слоями
- Интерфейсы и абстракции
- Тестирование слоёв
Практика: реализовать сервис с разделением на слои
Модуль 4: Управление конфигурацией
Файл: 04-configuration-management.md
- Источники конфигурации
- Переменные окружения
- Файлы конфигурации
- Валидация при старте
Практика: реализовать загрузку конфигурации из разных источников
Модуль 5: Доступ к базам данных
Файл: 05-database-access.md
- PostgreSQL и pgx
- Пул соединений
- Репозитории
- Миграции
- Транзакции
Практика: реализовать слой доступа к данным с миграциями
Модуль 6: Слой бизнес-логики
Файл: 06-business-logic-layer.md
- Доменные модели
- Сервисы и use cases
- Валидация бизнес-правил
- Обработка ошибок
Практика: реализовать бизнес-логику для управления репозиториями
Модуль 7: Наблюдаемость
Файл: 07-observability.md
- Логирование
- Метрики
- Трейсинг
- Корреляция запросов
Практика: добавить логирование и метрики в сервис
Модуль 8: Фоновая обработка
Файл: 08-background-processing.md
- Воркеры и джобы
- Планировщики
- Паттерн Outbox
- Обработка ошибок
Практика: реализовать фоновый воркер для обработки событий
Модуль 9: Основы безопасности
Файл: 09-api-security.md
- Аутентификация
- Авторизация
- Валидация входных данных
- Защита от типовых атак
Практика: добавить аутентификацию и авторизацию в сервис
Модуль 10: Docker и контейнеризация
Файл: 10-docker-containerization.md
- Dockerfile для Go
- Многоступенчатая сборка
- Docker Compose
- Health checks
Практика: контейнеризировать сервис и настроить docker-compose
Модуль 11: Практический проект
Файл: 11-practical-project.md
Цель: закрепить навыки разработки в полноценном сервисе
Проект: Сервис управления репозиториями
Неделя 1-2: Архитектура и данные
- Проектирование структуры проекта
- Настройка конфигурации
- Подключение к базе данных
- Миграции
Неделя 3-4: Бизнес-логика
- Доменные модели
- Сервисы и use cases
- Валидация
- Обработка ошибок
Неделя 5-6: Инфраструктура
- Наблюдаемость (логи, метрики)
- Фоновая обработка
- Безопасность
Неделя 7-8: Финализация
- Тестирование
- Контейнеризация
- Документация
Критерии приёмки:
- Реализована чистая архитектура с разделением слоёв
- Подключена БД с миграциями
- Добавлена наблюдаемость
- Реализована фоновая обработка
- Сервис контейнеризирован
- Написаны тесты с покрытием > 70%
Структура проекта курса
course-2-go-backend-developer/
├── README.md # Этот файл
├── 01-api-design-fundamentals.md
├── 02-project-organization-patterns.md
├── 03-clean-architecture-deep-dive.md
├── 04-configuration-management.md
├── 05-database-access.md
├── 06-business-logic-layer.md
├── 07-observability.md
├── 08-background-processing.md
├── 09-api-security.md
├── 10-docker-containerization.md
└── 11-practical-project.md # Практический проект
Как проходить курс
Шаг 1: Изучите теорию
Прочитайте материал модуля. Обратите внимание на архитектурные паттерны.
Шаг 2: Спроектируйте решение
Перед написанием кода спроектируйте структуру. Нарисуйте диаграмму.
Шаг 3: Реализуйте
Напишите код, следуя выбранной архитектуре.
Шаг 4: Протестируйте
Напишите тесты для каждого слоя.
Шаг 5: Проверьте себя
Ответьте на вопросы в конце модуля.
Шаг 6: Выполните практический проект
После завершения всех модулей выполните практический проект для закрепления навыков.
Рекомендации по обучению
Делайте
✅ Проектируйте перед написанием кода ✅ Рисуйте диаграммы архитектуры ✅ Пишите тесты для каждого слоя ✅ Ведите заметки по архитектурным решениям (начало ADR) ✅ Используйте реальный проект как основу для практики ✅ Выполняйте практический проект в конце курса
Не делайте
❌ Не пишите код без проектирования ❌ Не смешивайте слои архитектуры ❌ Не пропускайте тестирование ❌ Не игнорируйте наблюдаемость ❌ Не пропускайте практический проект
Инструменты
Обязательные
- Go — последняя стабильная версия
- PostgreSQL — для работы с базой данных
- Docker — для контейнеризации
Рекомендуемые
- golangci-lint — агрегатор линтеров
- pgx — драйвер для PostgreSQL
- Prometheus — для метрик
- Grafana — для визуализации метрик
Оценка прогресса
Критерии успеха
| Модуль | Критерий |
|---|---|
| 1 | Спроектирован REST API |
| 2 | Выбрана и применена архитектура |
| 3 | Реализованы слои с разделением |
| 4 | Настроена конфигурация |
| 5 | Подключена БД с миграциями |
| 6 | Реализована бизнес-логика |
| 7 | Добавлена наблюдаемость |
| 8 | Реализована фоновая обработка |
| 9 | Добавлена безопасность |
| 10 | Сервис контейнеризирован |
| 11 | Выполнен практический проект |
Финальная проверка
После завершения всех модулей вы должны:
- Уметь проектировать REST API
- Понимать и применять архитектурные паттерны
- Уметь работать с базами данных
- Писать тесты для всех слоёв
- Настраивать наблюдаемость
- Реализовывать фоновую обработку
- Обеспечивать безопасность
- Контейнеризировать сервисы
- Выполнить практический проект
Что дальше?
После успешного завершения курса вы будете готовы к:
Курс 3: Go Service Architect
Что изучите:
- Проектирование для надёжности и масштаба
- Паттерны распределённых систем
- Выбор платформы (Serverless, VDS)
- Наблюдаемость в масштабе
- Планирование восстановления
Предварительные требования:
- ✅ Завершённый Курс 2
- ✅ Опыт построения реальных сервисов
- ✅ Понимание архитектуры и тестирования
Готовы строить реальные сервисы? Начнём! 💪