eventsourcing go
1.0.0
あなたが、亜麻の花からインスピレーションを得たFairflax Mediaという大手ニュース出版社で働いていると想像してください (もちろん、Fairfax Media と間違えないでください)。
あなたには、巨大なモノリス システムをマイクロサービスに分割し、すべてを Kuberentes に移行するという任務が与えられています。あなたはドメイン駆動設計を好み、各データベースは単一のアプリケーションによってのみ所有されるべきだと考えています。しかし、時間が経つにつれて、多くのサービスが共通のデータを必要としていることに気づきます。すべてのサービスにわたってデータの一貫性があり、クエリのパフォーマンスが妥当であることを確認する必要があります。
master
ブランチには初期状態 (密結合サービス) が含まれています。event-sourcing
ブランチには、独立していてテストが簡単な非同期サービスを含むイベント ソーシング + CQRS 実装が含まれている必要があります。このプロジェクトは、Golang を使用した非同期マイクロサービス アーキテクチャに切り替えたい人を対象としています。
Go 1.9 以降
$GOPATH
設定されています
依存関係を管理するためのdep
Mac OSX ではbrew
使用して...
$ brew install dep
$ brew upgrade dep
他のプラットフォームでは、install.sh スクリプトを使用できます。
$ curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
PATH に $GOPATH/bin が含まれていることを追加します。
$ go help gopath
$ export PATH=$PATH:$GOPATH/bin
$ go get -u github.com/pavelnikolov/eventsourcing-go/demo-articles
$ go get -u github.com/pavelnikolov/eventsourcing-go/demo-graph
$ go get -u github.com/pavelnikolov/eventsourcing-go/demo-sitemap
$ go get -u github.com/pavelnikolov/eventsourcing-go/demo-rss
どちらか:
$ go get -u github.com/pavelnikolov/eventsourcing-go/...
または:
$ mkdir -p $GOPATH/github.com/pavelnikolov
$ cd $GOPATH/github.com/pavelnikolov
$ git clone github.com/pavelnikolov/eventsourcing-go
次に、依存関係をインストールします。
$ dep ensure
4 つの異なるターミナル ウィンドウで実行します。
go install ./cmd/demo-articles && demo-articles
go install ./cmd/demo-graph && demo-graph
go install ./cmd/demo-rss && demo-rss
go install ./cmd/demo-sitemap && demo-sitemap
ブラウザでアプリに移動します。
protobuf コンパイラをインストールする
protoc Go プラグインをインストールする
$ go get -u github.com/golang/protobuf/protoc-gen-go
生成された Go コードを再ビルドする
$ go generate github.com/pavelnikolov/eventsourcing-go/...
または、 protoc
コマンドを実行します (grpc プラグインを使用)
$ protoc -I publishing/ publishing/publishing.proto --go_out=plugins=grpc:publishing