Содержание курса
Модуль 1. От мидла к сеньору: что меняется
5 уроков
1.
О курсе: как проходить обучение и канал «Логово Дата-Инженера»
↗
2.
Кто такой сеньор в Go: не синтаксис, а решения и ответственность
↗
3.
Ревизия базы: интерфейсы, горутины и каналы за пять минут
↗
4.
Ревизия базы: контекст, ошибки и HTTP-сервер одним взглядом
↗
5.
Код, который живёт годами: проектируем под эволюцию, а не под…
↗
Модуль 2. Runtime Go
8 уроков
1.
Рантайм Go: что происходит от func main до выхода из программы
↗
2.
Планировщик G-M-P: горутины, машины и процессоры в деталях
↗
3.
Кооперативная многозадачность и вытеснение: как планировщик…
↗
4.
Сетевой поллер (netpoller): как Go обслуживает тысячи…
↗
5.
Сборка мусора: трёхцветный mark-and-sweep и барьер записи
↗
6.
GOGC и GOMEMLIMIT: управляем агрессивностью сборщика мусора
↗
7.
Трассировка рантайма: как читать go tool trace и видеть, что…
↗
8.
escape analysis: почему компилятор решает, что уходит в кучу…
↗
Модуль 3. Управление памятью
8 уроков
1.
Стек горутины: растёт динамически, стартует с 2 КБ
↗
2.
Куча: escape analysis и почему переменная убегает из стека
↗
3.
Профилирование аллокаций: go test -benchmem и pprof allocs
↗
4.
sync.Pool на глубину: когда кэш объектов спасает, а когда вредит
↗
5.
Арены (arena): экспериментальный механизм Go 1.20+ для…
↗
6.
Уменьшаем аллокации: переиспользование срезов…
↗
7.
Zero-cost в Go: мифы и реальность — за что платит…
↗
8.
Практика: профилируем, находим горячие аллокации и устраняем
↗
Модуль 4. Профилирование и оптимизация
9 уроков
1.
Дисциплина оптимизации: измерь → сформулируй гипотезу → проверь
↗
2.
CPU-профилирование через pprof: где программа тратит время
↗
3.
Memory-профилирование: что и сколько аллоцирует программа
↗
4.
Блокировки и профиль горутин: кто кого ждёт и почему
↗
5.
Бенчмаркинг по-взрослому: изоляция, прогрев, статистическая…
↗
6.
perf и flame graphs: системное профилирование Linux поверх Go
↗
7.
Оптимизация горячего пути: инлайнинг, bounds check…
↗
8.
Сравнение бенчмарков до и после: как не обмануть себя
↗
9.
Практика: берём реальный сервис и улучшаем его…
↗
Модуль 5. Продвинутая конкурентность
9 уроков
1.
Сложный select: приоритеты, default и таймауты в одном блоке
↗
2.
Широковещательная рассылка через закрытие канала
↗
3.
Семантический контекст отмены: как каскадно гасить горутины
↗
4.
errgroup с лимитом: контролируем параллелизм и собираем ошибки
↗
5.
Синхронизация без блокировок: CAS-циклы и lock-free структуры
↗
6.
Диагностика deadlock и гонок: go run -race и чтение трассировки
↗
7.
Паттерны реактивного программирования на каналах
↗
8.
Актёрная модель на горутинах: почтовый ящик и селект
↗
9.
Антипаттерны конкурентности: как не превратить код в кашу из…
↗
Модуль 6. unsafe, cgo и ассемблер
7 уроков
1.
Пакет unsafe: Sizeof, Alignof, Offsetof и арифметика указателей
↗
2.
unsafe.Pointer: мост между указателями Go и сырыми адресами
↗
3.
unsafe.Slice и unsafe.String: создаём срез и строку из сырой…
↗
4.
cgo: вызываем C-функции из Go-кода
↗
5.
Обратный вызов: передаём Go-функции в C-код
↗
6.
Цена cgo: почему вызов C — это не дешёвая операция
↗
7.
Go Assembly: читаем дизассемблированный вывод для понимания…
↗
Модуль 7. Кодогенерация
6 уроков
1.
go generate: директива, которая запускает кодогенерацию
↗
2.
Генерируем String() методы для перечислений через stringer
↗
3.
Генерируем моки для интерфейсов через mockgen
↗
4.
Генерируем JSON-сериализаторы быстрее стандартных через easyjson
↗
5.
Свой генератор кода: читаем AST, анализируем типы, генерируем…
↗
6.
Шаблоны в кодогенерации: пакеты text/template и html/template
↗
Модуль 8. Архитектура приложений
9 уроков
1.
Слоистая архитектура в Go: handler → service → repository
↗
2.
Чистая архитектура: сущности, use cases и внешние адаптеры
↗
3.
Инверсия зависимостей: интерфейсы принадлежат потребителю, а…
↗
4.
Доменный слой без фреймворков: чистая бизнес-логика на голом Go
↗
5.
Feature-based структура проекта: группируем код по…
↗
6.
Монолит против микросервисов: когда и как разделять
↗
7.
Проектирование ошибок в большой системе: слои и маппинг ошибок
↗
8.
Event-driven подход: события как способ ослабить связность
↗
9.
Рефакторинг живого проекта к чистой архитектуре: стратегия и…
↗
Модуль 9. Сетевое программирование
7 уроков
1.
net.Conn и net.Listener: TCP-сервер с нуля
↗
2.
Мультиплексирование соединений и тысячи клиентов в одной…
↗
3.
Кастомный протокол поверх TCP: фрейминг, кодирование и таймауты
↗
4.
WebSocket на gorilla/websocket или nhooyr.io/websocket
↗
5.
gRPC на Go: protobuf, генерация кода и стриминг
↗
6.
Производительность сети: буферы, TCP_NODELAY и пулы буферов
↗
7.
Graceful shutdown сетевого сервера: не теряем запросы при…
↗
Модуль 10. gRPC и Protocol Buffers
6 уроков
1.
Protocol Buffers: язык описания данных и кодогенерация в Go
↗
2.
Сервис gRPC на Go: определяем .proto и генерируем клиент и…
↗
3.
Unary RPC, Server-side streaming, Client-side streaming и…
↗
4.
Middleware в gRPC: интерсепторы для логирования…
↗
5.
Управление версиями protobuf: обратная совместимость без…
↗
6.
gRPC Gateway: HTTP/JSON поверх gRPC сервиса через grpc-gateway
↗
Модуль 11. Наблюдаемость
7 уроков
1.
Observability: метрики + трассировка + логи = полная картина
↗
2.
Трассировка через OpenTelemetry: спаны, контекст и propagation
↗
3.
Инструментируем HTTP и gRPC автоматически через otelhttp и…
↗
4.
Метрики через Prometheus: счётчики, гистограммы и дашборды
↗
5.
RED-метрики: Rate, Errors, Duration для каждого сервиса
↗
6.
Алертинг: какие метрики должны вызывать будильник ночью
↗
7.
Связываем логи с трейсами: trace_id в каждой строке лога
↗
Модуль 12. Тестирование в production
7 уроков
1.
Пирамида тестов: сколько каких тестов должно быть и почему
↗
2.
Интеграционные тесты с реальной базой: testcontainers-go
↗
3.
Контрактное тестирование между микросервисами
↗
4.
Property-based тестирование: fuzzing и rapid-библиотеки
↗
5.
Chaos engineering: как тестировать устойчивость системы к…
↗
6.
Load testing через vegeta: сколько запросов выдерживает ваш…
↗
7.
Smoke и canary тесты в CI/CD пайплайне
↗
Модуль 13. CI/CD и деплой
6 уроков
1.
Dockerfile для Go: multi-stage сборка и минимальный образ
↗
2.
Кросс-компиляция: GOOS и GOARCH для любых платформ
↗
3.
CI-пайплайн: линтинг, тесты, проверка гонок и сборка
↗
4.
CD-стратегии: rolling update, blue-green и canary деплой
↗
5.
Kubernetes для Go-сервиса: манифесты, пробы и ограничения…
↗
6.
Секреты, конфигурация и переменные окружения в production
↗
Модуль 14. Open source и экосистема
5 уроков
1.
Читаем исходники стандартной библиотеки: net/http изнутри
↗
2.
Читаем популярные проекты: структура кода, паттерны и…
↗
3.
Свой вклад в open-source: issue, PR, код-ревью и культура…
↗
4.
Публикуем Go-библиотеку: документация, примеры и версионирование
↗
5.
Дорожная карта после сеньора: экосистема, специализации и рост
↗
Модуль 15. Итоговый проект: production-ready микросервис
9 уроков
1.
Проект: архитектура сервиса — требования и ключевые решения
↗
2.
Проектируем protobuf-контракты и доменную модель
↗
3.
Реализуем gRPC-сервер с интерсепторами и graceful shutdown
↗
4.
Слой доступа к данным: PostgreSQL и паттерн Repository
↗
5.
Бизнес-логика: чистая, тестируемая, без утечки абстракций
↗
6.
Наблюдаемость: Prometheus-метрики и OpenTelemetry-трассировка
↗
7.
Нагрузочное тестирование и оптимизация горячего пути
↗
8.
Docker, Kubernetes-манифесты и CI/CD пайплайн
↗
9.
Финальный код-ревью и дорожная карта дальнейшего развития
↗