Простая, но эффективная организация папок для микросервисов Golang.
cmd: Содержит основные файлы ввода для ваших микросервисов. Здесь у каждого микросервиса должен быть свой собственный подкаталог, например, cmd/service1, cmd/service2 и т.д. Каждый подкаталог может содержать файл main.go, который инициализирует соответствующий микросервис.
pkg: Здесь вы размещаете код, который используется совместно различными микросервисами или обычно используется в рамках всего проекта. Этот пакет может содержать утилиты, вспомогательные функции, общие типы данных и так далее.
internal: Эта папка похожа на pkg, но ее содержимое относится только к вашему проекту и не импортируется другими внешними модулями. Вы можете поместить сюда код, относящийся к внутренней реализации ваших микросервисов.
api: Ваши службы предоставляют API для взаимодействия с другими службами или клиентами. У вас может быть папка api, содержащая определения API, такие как файлы protobuf для gRPC или файлы OpenAPI для RESTful API.
config: Здесь вы можете разместить файлы конфигурации для ваших микросервисов. Это могут быть файлы YAML, JSON-файлы или даже файлы окружения.
scripts: Если у вас есть вспомогательные скрипты для создания, тестирования или развертывания ваших сервисов, вы можете разместить их здесь.
docs: Эта папка может содержать документацию по вашему проекту, такую как спецификации API, руководства по установке, примеры использования и т.д.
test: Здесь вы размещаете свои тесты. Вы можете придерживаться соглашения о размещении модульных тестов и интеграционных тестов в отдельных подкаталогах.
Более подробную информацию по структуре папок Golang, смотрим: https://github.com/golang-standards/project-layout/blob/master/README_ru.md
Интересная статья о структуре с Хабр: https://habr.com/ru/companies/inDrive/articles/690088/
#golang #folders #structure