Repolode
evrone

evrone/go-clean-template

REST、gRPC、AMQP RPC、NATS RPCの各トランスポートにまたがるコード構成を示す、Goサービス向けClean Architectureプロジェクトテンプレート。

スター
7,708
フォーク
665
未解決の Issue
3
最終コミット
11 日前

これは何?

go-clean-templateは、Clean Architectureの原則に沿ったGoマイクロサービスの出発点となるテンプレートです。ビジネスロジックを、データベースやWebフレームワーク、メッセージブローカーなどのインフラから分離し、中核となるユースケースがインターフェースと標準ライブラリだけに依存する構成にしています。サービスの成長に合わせて整理された構成を保てるよう設計されています。

このテンプレートには、JWTによるユーザー認証、ステータス遷移を伴うタスク管理、履歴追跡機能付きのテキスト翻訳という3つのサンプルドメインが含まれています。各ドメインは、FiberベースのREST API、gRPC、RabbitMQ(AMQP)およびNATSを使ったRPCという4つのトランスポートで公開されます。依存性注入にはNewコンストラクターを使用し、リポジトリにはPostgres、RabbitMQ、NATS、Jaegerを起動するDocker Composeの設定が含まれています。

また、4つすべてのトランスポート間でコンテキストを伝播するOpenTelemetryトレースをはじめ、Prometheusメトリクス、Swaggerドキュメント、結合テスト、データベースマイグレーションによる可観測性にも対応しています。

主な機能

  • 01Newコンストラクターによる依存性注入を備えたClean Architectureのレイヤー構成
  • 02swagでSwaggerドキュメントを生成する、FiberベースのREST API
  • 03protobufで定義されたgRPCサービス
  • 04RabbitMQ(AMQP)とNATSのリクエスト・リプライに対応するRPCサーバー
  • 05OpenTelemetryトレースとPrometheusメトリクス
  • 06Postgres、RabbitMQ、NATS、Jaegerを含むDocker Compose構成

ユースケース

  • 一貫性のあるプロジェクト構成でGoマイクロサービスを立ち上げる
  • Goでビジネスロジックをトランスポートやストレージから分離する方法を学ぶ
  • 同じロジックをREST、gRPC、メッセージキュー経由で公開する必要があるサービスを構築する

クイックスタート

  1. 1

    Docker ComposeでPostgres、RabbitMQ、NATSを起動する

    make compose-up
  2. 2

    マイグレーションを実行してアプリを起動する

    make run

使う前に知っておきたいこと

  • ローカル開発では、Postgres、RabbitMQ、NATSの実行にDocker Composeが必要です。

トピック

よくある質問

go-clean-template とは?
REST、gRPC、AMQP RPC、NATS RPCの各トランスポートにまたがるコード構成を示す、Goサービス向けClean Architectureプロジェクトテンプレート。 go-clean-templateは、Clean Architectureの原則に沿ったGoマイクロサービスの出発点となるテンプレートです。ビジネスロジックを、データベースやWebフレームワーク、メッセージブローカーなどのインフラから分離し、中核となるユースケースがインターフェースと標準ライブラリだけに依存する構成にしています。サービスの成長に合わせて整理された構成を保てるよう設計されています。
go-clean-template は無料で使えますか?ライセンスは?
go-clean-template は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
go-clean-template は今もメンテナンスされていますか?
活発にメンテナンス中。go-clean-template の最終コミットは 2026年10月11日 です。
go-clean-template は何に使えますか?
一貫性のあるプロジェクト構成でGoマイクロサービスを立ち上げる Goでビジネスロジックをトランスポートやストレージから分離する方法を学ぶ 同じロジックをREST、gRPC、メッセージキュー経由で公開する必要があるサービスを構築する
go-clean-template のインストール方法は?
Docker ComposeでPostgres、RabbitMQ、NATSを起動する: make compose-up マイグレーションを実行してアプリを起動する: make run
go-clean-template はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/evrone/go-clean-template

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト