Как собрать полноценный REST/gRPC сервис на Go?
Хендлер на Go, который отдаёт JSON, пишется за вечер. Проблемы начинаются, когда этот код уезжает в Kubernetes.
При деплое под получает SIGTERM и обрывает запросы на середине. Клиент уже закрыл соединение, а запрос к PostgreSQL продолжает работать и грузить базу. В логах тысячи строк, и по ним не понять, какие относятся к упавшему запросу. Тесты на моках зеленые, а с реальной базой сервис ломается. Образ собран плносью на golang и весит сотни мегабайт, из-за чего деплой идёт дольше.
Для каждой из этих проблем есть решение: Graceful Shutdown, context.Context на всех слоях, slog с Request ID, интеграционные тесты с настоящей базой и сборка на scratch. Под всем этим нужна архитектура, в которой одну бизнес-логику можно подключить и к REST, и к gRPC без копирования кода.
Всё это мы собрали в новом практикуме «Golang: полноценный REST/gRPC сервис на Go». В нём 14 уроков, уровень Middle. В каждом модуле есть задание, и сервис собирается из них по шагам.
Что в программе:
🟢Проектирование структуры Go-приложения по слоям Clean Architecture
🟢Реализация gRPC-серверов и Unary RPC методов на Go
🟢Создание RESTful эндпоинтов с использованием роутера go-chi
🟢Управление таймаутами и отменой запросов с помощью context.Context
🟢Написание интеграционных тестов с реальной БД через testcontainers-go
Итог - микросервис каталога продуктов с REST и gRPC, валидацией, Graceful Shutdown, тестами и образом на scratch.
🎁 До 11 октября действует скидка 5000 рублей
↘️ Узнать подробности и записаться
Кому подойдёт: Go-разработчикам уровня Junior+, бэкендерам, которые переходят на Go с PHP, Python или Java, и DevOps/SRE-инженерам, которым нужно понимать, как устроены Go-сервисы. Для старта нужно знать базовый синтаксис Go (типы данных, структуры, интерфейсы, горутины), работать в командной строке Linux и иметь базовые навыки Docker.
Хендлер на Go, который отдаёт JSON, пишется за вечер. Проблемы начинаются, когда этот код уезжает в Kubernetes.
При деплое под получает SIGTERM и обрывает запросы на середине. Клиент уже закрыл соединение, а запрос к PostgreSQL продолжает работать и грузить базу. В логах тысячи строк, и по ним не понять, какие относятся к упавшему запросу. Тесты на моках зеленые, а с реальной базой сервис ломается. Образ собран плносью на golang и весит сотни мегабайт, из-за чего деплой идёт дольше.
Для каждой из этих проблем есть решение: Graceful Shutdown, context.Context на всех слоях, slog с Request ID, интеграционные тесты с настоящей базой и сборка на scratch. Под всем этим нужна архитектура, в которой одну бизнес-логику можно подключить и к REST, и к gRPC без копирования кода.
Всё это мы собрали в новом практикуме «Golang: полноценный REST/gRPC сервис на Go». В нём 14 уроков, уровень Middle. В каждом модуле есть задание, и сервис собирается из них по шагам.
Что в программе:
🟢Проектирование структуры Go-приложения по слоям Clean Architecture
🟢Реализация gRPC-серверов и Unary RPC методов на Go
🟢Создание RESTful эндпоинтов с использованием роутера go-chi
🟢Управление таймаутами и отменой запросов с помощью context.Context
🟢Написание интеграционных тестов с реальной БД через testcontainers-go
Итог - микросервис каталога продуктов с REST и gRPC, валидацией, Graceful Shutdown, тестами и образом на scratch.
🎁 До 11 октября действует скидка 5000 рублей
↘️ Узнать подробности и записаться
Кому подойдёт: Go-разработчикам уровня Junior+, бэкендерам, которые переходят на Go с PHP, Python или Java, и DevOps/SRE-инженерам, которым нужно понимать, как устроены Go-сервисы. Для старта нужно знать базовый синтаксис Go (типы данных, структуры, интерфейсы, горутины), работать в командной строке Linux и иметь базовые навыки Docker.