Go言語のディレクトリ構成
Goにはディレクトリ構成のスタンダードがあるらしい。 - Qiita
Internal package については把握しておきたい
ディレクトリ
cmd -- main.go を置く
cmd/server/main.go, cmd/batch/mail.go のように分ける方法と、
一般的にはこっちが多そう
分けるデメリットは、コマンドごとにビルドが必要なこと
ただ、デプロイするサーバーが別の場合は分けていいと思う
cmd/main.go として、引数で分ける方法がある
小さいアプリであればこっちでもいいかも
internal -- ライブラリとして外部に公開しない場合、アプリケーションの本体はほぼここに入る
presentation
response
controller
application
internal
service
usecase
domain
ドメイン概念ごとのディレクトリ名やファイル名
infrastructure
internal
model
database
api -- OpanAPI の仕様とかがここに入る
web -- 静的アセットとか、HTMLのテンプレートとかがここに入る
configs
init -- systemd の設定など
build -- ビルド関係のものを配置
deployments -- docker-compose とか kubernetes, terraform などを配置する