Проект "architecture_golang" на GitHub, представляет собой реализацию архитектуры "Чистая архитектура" на языке программирования Golang. В этом проекте использованы принципы и структура, представленные в репозитории "golang-standards/project-layout", чтобы обеспечить хорошую организацию кода.
Основной идеей проекта является разделение приложения на четко определенные слои с явно выраженными зависимостями между ними. Это способствует облегчению поддержки и расширения приложения, а также повышает его чистоту и понимание.
- Структура каталогов:
- Проект использует структуру каталогов, определенную в репозитории "golang-standards/project-layout". Это помогает упорядочить код и логически разделить различные компоненты проекта.
- Main-пакет:
- В корневом каталоге проекта будет находиться main-файл, откуда начинается выполнение приложения.
- Пакеты слоев:
- В проекте реализованы различные пакеты, представляющие различные слои архитектуры Clean Architecture. Каждый слой имеет свою ответственность и взаимодействует только с ближайшими соседями.
- Entity (Сущности):
- В этом пакете определены основные сущности приложения, представляющие основные бизнес-объекты и правила.
- Use Cases (Использование случаев):
- Этот пакет содержит реализацию различных use cases (использование случаев), предоставляя основные бизнес-сценарии и операции над сущностями.
- Repositories (Репозитории):
- Здесь определены интерфейсы репозиториев, которые служат для взаимодействия с хранилищами данных. Реализация репозиториев находится в более низких уровнях, чтобы соблюдать принцип инверсии зависимостей.
- Delivery (Доставка):
- Этот пакет представляет собой слой доставки, который обрабатывает внешние запросы и преобразует их в операции use cases. Это могут быть HTTP-обработчики или другие механизмы взаимодействия с пользователем.
- Frameworks & Drivers (Фреймворки и драйверы):
- В этом каталоге находятся различные инструменты и библиотеки, используемые для взаимодействия с фреймворками и внешними системами.
- Тесты:
- В проекте также предусмотрены тесты, которые проверяют корректность работы компонентов приложения.
- Документация:
- Чтобы облегчить понимание проекта и его компонентов, проект содержит документацию, описывающую структуру, функциональность и примеры использования.
Обратите внимание, что вся структура проекта и его компоненты разработаны с учетом принципов чистой архитектуры, что делает его легко расширяемым, модульным и поддерживаемым.
Для разработки этого проекта использовал следующие ссылки:
- Статья на Хабре от компании Олега Бунина, где рассматривается подход к построению Clean Architecture в Go (https://habr.com/ru/company/oleg-bunin/blog/516500/).
- Проект go-clean-template от evrone, который также предоставляет примеры реализации Clean Architecture на Go (https://github.com/evrone/go-clean-template).
- Проект go-clean-arch от bxcodec, который демонстрирует применение чистой архитектуры в Go (https://github.com/bxcodec/go-clean-arch).
- Проект go-clean-architecture от zhashkevych, представляющий пример Clean Architecture на Go (https://github.com/zhashkevych/go-clean-architecture).
- Проект golang-clean-architecture от theartofdevel, предоставляющий пример применения чистой архитектуры в Go (https://github.com/theartofdevel/golang-clean-architecture).
- Проект wild-workouts-go-ddd-example от ThreeDotsLabs, демонстрирующий использование Domain-Driven Design (DDD) в Go (https://github.com/ThreeDotsLabs/wild-workouts-go-ddd-example).
Кроме того, использовал видеоресурсы которые помогли составить архитектуру проекта:
- Видео с YouTube о Clean Architecture in Golang (https://www.youtube.com/watch?v=PTE4VJIdHPg).
- Видео с YouTube о Building Scalable Web Services with Go (https://www.youtube.com/watch?v=oL6JBUk6tj0).
- Видео с YouTube о Go and Clean Architecture (https://www.youtube.com/watch?v=3gQa1LWwuzk).