Repolode
evrone

evrone/go-clean-template

Шаблон проекта на Clean Architecture для Go-сервисов: примеры организации кода с REST, gRPC, AMQP RPC и NATS RPC.

Звёзды
7,708
Форки
665
Открытые issues
3
Последний коммит
11 дней назад

Что это?

go-clean-template — отправная точка для Go-микросервисов, построенных по принципам Clean Architecture. Бизнес-логика отделена от инфраструктуры — баз данных, веб-фреймворков и брокеров сообщений, — поэтому основные сценарии использования зависят только от интерфейсов и стандартной библиотеки. Шаблон помогает поддерживать порядок в сервисе по мере его развития.

В шаблоне есть три примера предметных областей: аутентификация пользователей с JWT, управление задачами с переходами между статусами и перевод текста с отслеживанием истории. Каждая область доступна через четыре транспорта: REST API на Fiber, gRPC и RPC через RabbitMQ (AMQP) и NATS. Зависимости внедряются с помощью конструкторов New, а в репозитории есть конфигурация Docker Compose для Postgres, RabbitMQ, NATS и Jaeger.

Проект также охватывает наблюдаемость: трассировки OpenTelemetry с передачей контекста через все четыре транспорта, метрики Prometheus, документацию Swagger, интеграционные тесты и миграции базы данных.

Ключевые возможности

  • 01Слои Clean Architecture и внедрение зависимостей через конструкторы New
  • 02REST API на Fiber с документацией Swagger, сгенерированной с помощью swag
  • 03Сервисы gRPC, описанные с помощью protobuf
  • 04RPC-серверы на RabbitMQ (AMQP) и NATS с моделью запрос-ответ
  • 05Трассировки OpenTelemetry и метрики Prometheus
  • 06Стек Docker Compose с Postgres, RabbitMQ, NATS и Jaeger

Сценарии использования

  • Создание нового Go-микросервиса с единообразной структурой проекта
  • Изучение способов отделения бизнес-логики от транспорта и хранилища в Go
  • Создание сервиса, который предоставляет одну и ту же логику через REST, gRPC и очереди сообщений

Быстрый старт

  1. 1

    Запустите Postgres, RabbitMQ и NATS с помощью Docker Compose

    make compose-up
  2. 2

    Запустите приложение вместе с миграциями

    make run

Что важно знать

  • Для локальной разработки требуется Docker Compose, чтобы запускать Postgres, RabbitMQ и NATS.

Темы

Частые вопросы

Что такое go-clean-template?
Шаблон проекта на Clean Architecture для Go-сервисов: примеры организации кода с REST, gRPC, AMQP RPC и NATS RPC. go-clean-template — отправная точка для Go-микросервисов, построенных по принципам Clean Architecture. Бизнес-логика отделена от инфраструктуры — баз данных, веб-фреймворков и брокеров сообщений, — поэтому основные сценарии использования зависят только от интерфейсов и стандартной библиотеки. Шаблон помогает поддерживать порядок в сервисе по мере его развития.
go-clean-template можно использовать бесплатно? Какая у него лицензия?
go-clean-template распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
go-clean-template всё ещё поддерживается?
Активно поддерживается. Последний коммит в go-clean-template — 11 окт. 2026 г..
Для чего можно использовать go-clean-template?
Создание нового Go-микросервиса с единообразной структурой проекта Изучение способов отделения бизнес-логики от транспорта и хранилища в Go Создание сервиса, который предоставляет одну и ту же логику через REST, gRPC и очереди сообщений
Как установить go-clean-template?
Запустите Postgres, RabbitMQ и NATS с помощью Docker Compose: make compose-up Запустите приложение вместе с миграциями: make run
Где скачать go-clean-template?
Исходный код и инструкции по установке — на GitHub: https://github.com/evrone/go-clean-template

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Реализация WebRTC API на чистом Go для создания одноранговых соединений с передачей аудио, видео и данных в реальном времени.

16,9 тыс.1,9 тыс.GoMITОбновлён 9 часов назад