docs: golang architecture v2
This commit is contained in:
parent
393ed9a03b
commit
d3520edc13
@ -5,16 +5,26 @@
|
||||
```
|
||||
├── cmd - Основные приложения проекта
|
||||
├── deployments - Директория для деплоя сервиса
|
||||
├── docs - Директория с документация
|
||||
├── docs - Директория с документацией
|
||||
├── internal - Директория с внутренним кодом приложения
|
||||
├── pkg - Директория с общими модулями приложения
|
||||
├── .gitignore - Файл для перечисления игнорирования гита
|
||||
├── migrations - Директория с миграциями изменений БД
|
||||
├── pkg - Директория с общими пакетами приложения
|
||||
├── proto - Директория с описанием прототипа интерфейса gRPC
|
||||
├── tests - Директория с тестами проекта (integration/e2e)
|
||||
├── .dockerignore - Файл для перечисления игнорирования докером файлов/директорий
|
||||
├── .gitignore - Файл для перечисления игнорирования гитом файлов/директорий
|
||||
├── .gitlab-ci.yml - Файл настройки Gitlab CI
|
||||
├── Makefile - Набор команд
|
||||
├── .golangci.yaml - Файл настройки линтера для Golang
|
||||
├── .mockery.yaml - Файл настройки пакета mockery для генерации моков на Golang
|
||||
├── .buf.gen.yaml - https://buf.build/docs/configuration/v1/buf-gen-yaml
|
||||
├── .buf.work.yaml - https://buf.build/docs/configuration/v1/buf-work-yaml/
|
||||
├── .buf.yaml - https://buf.build/docs/configuration/v1/buf-yaml/
|
||||
├── Dockerfile - Файл контейнеризации сервиса
|
||||
├── README.md - Общий файл документации (путеводитель)
|
||||
├── go.mod - Корень управления зависимостями в GoLang
|
||||
├── go.sum - Файл содержащий хеши для нескольких версий модуля
|
||||
├── Makefile - Набор команд
|
||||
├── openapi.yaml - Файл описания REST документации в формате OpenAPI (swagger)
|
||||
├── README.md - Общий файл документации (путеводитель)
|
||||
```
|
||||
|
||||
## Структура `/cmd`:
|
||||
@ -33,28 +43,39 @@
|
||||
|
||||
## Структура `/internal`:
|
||||
|
||||
Здесь хранится внутренний код приложения и библиотек. Это код, который не должен быть применен в других приложениях и библиотеках. Стоит отметить, что этот шаблон навязан самим компилятором Golang. Ознакомьтесь с release notes Go 1.4. Также, вы вольны использовать internal директорию на разных уровнях своего проекта.
|
||||
Здесь хранится внутренний код приложения и библиотек. Это код, который не должен быть применен в других приложениях и библиотеках. Стоит отметить, что этот шаблон использования internal навязан самим компилятором Golang. Ознакомьтесь с release notes Go 1.4. Также, вы вольны использовать internal директорию на разных уровнях своего проекта.
|
||||
|
||||
```
|
||||
├── app - Пакет приложений
|
||||
│ ├── [app name].go - Приложение
|
||||
│ ├── [other helpers].go - Различные функции/утилиты для запуска приложений (graceful shutdown)
|
||||
├── client - Пакет клиента для взаимодействия с другими сервисами
|
||||
│ ├── [name].go - Сам клиент
|
||||
│ controller - Пакет контроллеров для хранящий обработчики по каждому роуту
|
||||
│ ├── [name].go - Сам контроллер
|
||||
├── errors - Пакет, хранящий обобщённые ошибки в отдельном файле
|
||||
│ ├── [name].go - Группа ошибок, например: ошибки репозитория (repository.go)
|
||||
├── initialize - Пакет для инициализации разных сущностей (контроллеров, репозиториев, клиентов)
|
||||
│ ├── [name].go - Инициализция сущности, например: композита репозиториев (repository.go)
|
||||
├── models - Пакет моделей данных
|
||||
│ ├── [name].go - Набор моделей, например: user.go
|
||||
├── repository - Пакет репозиториев для взаимодействия с базой данных
|
||||
│ ├── [name].go - Методы репозитория, например: user.go
|
||||
├── server - Пакет хранящий инициализации серверов (http/tcp/grpc)
|
||||
│ ├── [name].go - Файл инициализации сервера (http/tcp/grpc)
|
||||
├── utils - Пакет внутренних функций/утилит приложения
|
||||
│ ├── [name].go - Утилита
|
||||
├── app - Пакет приложения
|
||||
│ ├── [app name].go - Приложение
|
||||
├── dto - Data Transfer Object
|
||||
│ ├── [group] - Группа DTO объектов
|
||||
│ ├── [name].go - Название файла, содержащий структуры для DTO объектов
|
||||
├── errors - Пакет для обработки и создания ошибок приложения (желательно вынести в pkg)
|
||||
├── initialize - Пакет для инициализации модулей (контроллеров, репозиториев, клиентов)
|
||||
├── interface - Данная директория хранит адаптеры для взаимодействия с внешними сервисами
|
||||
│ ├── client - Пакет клиента для взаимодействия с другими приложениями (REST, gRPC)
|
||||
│ ├── [name].go - Сам клиент
|
||||
│ ├── controller - Директория контроллеров
|
||||
│ ├── [name] - Директория контроллера
|
||||
│ ├── [name].go - Сам контроллер. Хранит в себе обработчики внешних запросов
|
||||
│ ├── [name]_test.go - Файл тестов для контроллера
|
||||
│ ├── mocks - Директория, которая хранит сгенерированные моки для контроллера
|
||||
│ ├── repository - Директория репозиториев для взаимодействия с базой данных
|
||||
│ ├── [name].go - Файл репозитория (user.go)
|
||||
├── models - Пакет моделей данных
|
||||
│ ├── [name].go - Файл структур, которые относятся к определённой модели (user.go)
|
||||
├── proto - Директория, содержащая сгенерированные proto файлы
|
||||
├── server - Пакет хранящий инициализации серверов (http/tcp/grpc)
|
||||
│ ├── [name].go - Файл инициализации сервера (http/tcp/grpc)
|
||||
├── utils - Пакет внутренних функций/утилит приложения
|
||||
│ ├── [name].go - Утилита
|
||||
│ ├── [name]_test.go - Тесты утилиты
|
||||
├── worker - Пакет, для запуска и инициализации воркеров
|
||||
│ ├── [name] - Пакет воркера
|
||||
│ ├── [name].go - Файл воркера
|
||||
│ ├── [name]_test.go - Файл тестов воркера
|
||||
│ ├── run.go - Файл запуска воркеров
|
||||
```
|
||||
|
||||
## Структура `/pkg`:
|
||||
@ -73,9 +94,11 @@
|
||||
В каждом пакете присутствует файл, хранящий выполняемый код, рядом с этим файлом должен находится файл тестов, которые будет содержать имя этого файла и постфикс `_test`.
|
||||
|
||||
```
|
||||
│ controller - Пакет контроллеров для хранящий обработчики по каждому роуту
|
||||
│ ├── [name].go - Сам контроллер
|
||||
│ ├── [name]_test.go - Файл тестов контроллера
|
||||
│ controller - Директория контроллеров
|
||||
│ ├── [name] - Пакет контроллера
|
||||
│ ├── mocks - Пакет сгенерированных моков для тестов контроллера
|
||||
│ ├── [name].go - Сам контроллер
|
||||
│ ├── [name]_test.go - Файл тестов контроллера
|
||||
├── utils - Пакет внутренних функций/утилит приложения
|
||||
│ ├── [name].go - Утилита
|
||||
│ ├── [name]_test.go - Файл тестов утилиты
|
||||
|
Loading…
Reference in New Issue
Block a user