Skip to content

KlimenkoKayot/auth-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Реализация Clean Architecture + DDD для микросервиса на Go с поддержкой OpenAPI документации.

Структура проекта

.
├── api/                    # Контракты API
│   └── openapi/            # Спецификации OpenAPI
│       ├── generate_dto.sh # Скрипт генерации DTO
│       ├── paths/          # Определения эндпоинтов
│       ├── schemas/        # Схемы данных
│       └── spec.yaml       # Основная спецификация API
│
├── cmd/                   # Точки входа
│   └── main.go            # Главный вход сервиса
│
├── config/                # Управление конфигурацией
│   ├── config.go          # Структура конфигурации
│   ├── config.yaml        # Конфигурация
│   └── loader.go          # Загрузчик конфигурации
│
├── internal/              # Внутренняя логика приложения
│   ├── app/               # Сборка приложения
│   │
│   ├── domain/            # Ядро бизнес-логики
│   │   ├── models/        # Доменные сущности
│   │   ├── ports/         # Определения интерфейсов
│   │   │   ├── http/      # Контракты HTTP (server & handlers)
│   │   │   ├── repository # Контракты хранилищ данных
│   │   │   └── service/   # Контракты сервисов
│   │   ├── rules/         # Бизнес-правила
│   │   └── service/       # Реализации доменных сервисов
│   │
│   ├── infrastructure/    # Реализации инфраструктуры
│   │   ├── http/          # HTTP реализация
│   │   │   ├── middleware # Промежуточные слои
│   │   │   ├── router/    # Адаптеры роутеров
│   │   │   └── server/    # Реализация сервера
│   │   └── repository/    # Реализация хранилищ данных
│   │
│   └── interfaces/        # Внешние интерфейсы
│       └── http/          # HTTP интерфейс
│           ├── dto/       # Объекты передачи данных
│           └── handlers/  # Обработчики запросов
│
└── pkg/                   # Вспомогательные утилиты
    └── testutils/         # Утилиты для тестирования
        ├── mocks/         # Мок-объекты
        └── openapi/       # Утилиты для тестов OpenAPI

Принципы архитектуры

  1. Domain слой:

    • Содержит чистую бизнес-логику.
    • Включает модели, правила и интерфейсы.
    • Не зависит от внешних слоев.
  2. Infrastructure слой:

    • Реализует технические детали.
    • Адаптеры для баз данных.
    • Реализация внутренней инфрастуктуры.
    • Зависит только от domain.
  3. Interfaces слой:

    • Точки входа (HTTP handlers).
    • Преобразует внешние запросы к доменным моделям.
    • Зависит только от domain.
  4. App слой:

    • Используется для сборки DI-контейнера.
    • Зависит от domain, infrastructure, interfaces.

Комментарии от разработчика

Правильный процесс для OpenAPI-first (Design-first)

Как сохранить гибкость API и не нарушить чистоту архитектуры?


./api/openapi

Документация API

Описание DTO

./internal/interfaces/http/dto

Только генерируемые DTO (by openapi)

Так как API прописывается в самом начале разработки, то DTO объекты будут определены однозначно. Используются они только в слое interface. Следовательно, все изменения будут ограничены реализацией handlers.

Попытка реализовать микросервис по заданным правилам начата 21.06.2025.


About

Микросервис авторизации на OpenAPI.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages