Что такое GOROCK
Go минималистичен. Бэкенд шаблонен. GOROCK соединяет эти две идеи — даёт стандарт там где он нужен, и оставляет свободу там где она важна.
Работает для любого Go-приложения: HTTP-сервер, consumer, worker, scheduler, CLI.
GOROCK предоставляет готовые решения из библиотеки gorock-kit, в ней вы можете найти интерпретацию работы с определенными технологиями, реализацию работы отдельных приложений и удобный инструментарий, о для внедрения их в свой проект рекомендуем ознакомиться с концептом архитектуры
Слои
GOROCK делит проект на три слоя. Каждый слой — это папка в корне проекта с конкретной ответственностью.
Когда знаешь слои — знаешь где искать любой код в любом GOROCK-проекте.
Engine — cmd/
Запуск и оркестрация. Здесь живёт всё что связано с тем, как и какое приложение стартует и останавливается.
cmd/
├── main/ — точка входа: main(), загрузка конфигов, инициализация всех слоев, оркестрация приложений, очистка при завершении
└── apps/ — приложения: HTTP-сервер, consumer, scheduler и др., функции для их запуска и остановкиEngine не содержит бизнес-логики — только управление жизненным циклом.
Realm — internal/
Бизнес-логика и всё уникальное для этого проекта. Здесь живёт что происходит при запросе или событии.
internal/
├── delivery/ — обработчики: что делать при HTTP-запросе, сообщении, событии, могут быть реализованы как самоописывающие структуры для упрощения масштабируемости проекта
├── models/ — сущности предметной области
└── utils/ — вспомогательные функции, специфичные для проектаinternal/ в Go — специальное слово: компилятор запрещает импортировать эти пакеты снаружи модуля.
Toolkit — pkg/
Переиспользуемый инструментарий. Не знает о бизнес-логике — можно перенести в другой проект без изменений.
pkg/
├── services/ — обёртки над внешними системами: БД, очереди, внешние API
├── infra/ — инфраструктурные примитивы: логирование, трейсинг, eventbus
└── libs/ — библиотечный код: HTTP-сервер, загрузка конфигов, парсинг параметровСледующий шаг
- Toolkit — первый шаг: подготовить инструментарий