Go
Go-стек UCP-сервиса: структура и проводка зависимостей, net/http и chi, JSON, валидация, middleware, context, ошибки, auth, sqlc+pgx, конкурентность, тесты, наблюдаемость. Примеры на Go.
Зачем для UCP. Go-стек (
net/http+ chi + курированные библиотеки) — механика Go-биндинга UCP-сервиса, как Spring для Java, но явная: зависимости проводятся руками, ошибки передаются значением,context.Contextидёт сквозь весь вызов. Без понимания этого нельзя осознанно писать Handler-ы и интегрировать инфраструктуру на Go. Часть пути продукт-инженера.
Раздел разбит на 12 статей. Можно читать подряд (фундамент → граница и сквозная логика → данные → конкурентность и эксплуатация) или точечно.
Фундамент
- Структура проекта и проводка зависимостей — раскладка, явная проводка в
main, конфиг из env. - Роутинг: net/http и chi — роутер chi, группы, URL-параметры.
- Обработчики и JSON —
http.HandlerFunc, decode/encode JSON.
Граница и сквозная логика
- Валидация — явная проверка на границе.
- Middleware — цепочка обёрток: логи, recovery, request ID.
- Context и отмена —
context.Context: значения, дедлайны, отмена. - Ошибки и HTTP — явные ошибки,
%w, перевод в HTTP-коды. - Аутентификация и авторизация — JWT в middleware, пользователь в
context, роли.
Данные
- Персистентность: sqlc и pgx — типобезопасные запросы, транзакции, миграции.
Конкурентность и эксплуатация
- Конкурентность и graceful shutdown — goroutines,
errgroup, остановка по сигналу. - Тестирование —
testing,httptest, table-driven, testcontainers. - Наблюдаемость —
slog, OpenTelemetry, метрики, health.
Связанное
- Продукт-инженер — карта специализаций и путь.
- Use Case Pattern (обзор) — методология, которую реализует этот стек.