- credit-executor - основное приложение
- credit-adm-executor - приложение управления и контроля
- credit-shared-module - модуль для хранения общей логики или объектов
- credit-library - библиотека для унификации работы с системными утилитами или общих технических методов (что бы не копировать каждый раз), в реальном мире это отдельный репозиторий
https://github.com/alfssobsd/notes/blob/main/golang/arch/golang_arch_description.md
- Любой UseCase,Entrypoint, Dataprovider, Util должно быть легко замокать через конструктор для тестирования
- Использование singleton нужно избегать
- Если объект делят несколько gorutines (каждый запрос в echo рождает новую gorutine), то нужно, что бы объект был в монопольном доступе или же использовать мьютексы.
- Исключения - объекты которые не изменяются после старта приложения, стоит их передавать по значению (пример appconfig)
- в Dataprovider слое может быть Provider, Gateway, Repository, ServiceAdapter и тд, главное, что бы точно было понятно для чего используется
credit-executor/http_app_server.go
credit-adm-executor/entrypoints/http_controllers/loan_customer_adm_http_controller_dto.go
credit-shared-module/dataproviders/main_db_provider
credit-executor/entrypoints/background/heavyprocessor_watcher_bg_task.go
credit-adm-executor/utils/appconfig/config.go
credit-executor/utils/appconfig/config.go
Так же стоит обратить внимание как сделан фасад
credit-shared-module/utils/heavyprocessor