Skip to content

Что такое 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 — первый шаг: подготовить инструментарий