Skip to content

kuramapommel/cqrs-es-example

Repository files navigation

CQRS + ES サンプルプロジェクト

環境構築

git hooks で lefthook を使うように設定する

lefthook install

動作確認

curl コマンド

  1. 予約情報の登録
curl -X POST http://localhost:8080/api/reservation \
  --cookie "userId=test-user-id" \
  -H "Content-Type: application/json" \
  -d '{"tableId": "test-table-id"}'
  1. 予約情報の参照
curl http://localhost:3080/api/reservations

Gauge による e2e

web-frontend が起動している状態で実行する

cd specs/web

npm run test

docker compose

  1. 各プロジェクトで docker build を実施する
  1. docker compose を立ち上げる
docker compose up

kubernetes

  1. 各プロジェクトで docker buildPreparing for Kubernetes を実施する
  1. minikube を起動する
minikube start --driver=docker
minikube mount ${PWD}/write-api-server/scripts:/scripts
minikube mount ${PWD}/read-api-server/database:/database
minikube tunnel
  1. kubernetes マニフェストを適用する
kubectl apply -f ./kubernetes/namespace.yml
kubectl apply -f ./kubernetes/read-model-data-store.yml
kubectl apply -f ./kubernetes/write-model-data-store.yml
kubectl apply -f ./kubernetes/read-model-updater.yml
kubectl apply -f ./kubernetes/read-api-server.yml
kubectl apply -f ./kubernetes/write-api-server.yml

停止

kubectl delete -f ./kubernetes/read-api-server.yml
kubectl delete -f ./kubernetes/write-api-server.yml
kubectl delete -f ./kubernetes/read-model-updater.yml
kubectl delete -f ./kubernetes/read-model-data-store.yml
kubectl delete -f ./kubernetes/write-model-data-store.yml
kubectl delete -f ./kubernetes/namespace.yml

リポジトリ構成

本リポジトリは CQRS + ES 構成の実装例です.

.
└── cqrs-es-example/
    ├── read-api-server/ # read model
    ├── read-model-updater/ # read model updater
    ├── specs/ # Gauge による仕様
    ├── web-frontend/ # web フロントエンド
    └── write-api-server/ # write model
%%{init: {'theme':'forest'}}%%
  block-beta
  columns 1
    WebFrontend["web-frontend"]
    space
    block
      WriteApiServer["write-api-server"]
      ReadApiServer["read-api-server"]
    end
    space
    block
      block:WriteModel
        DynamoDB["DynamoDB"]
        block:tables
          Journal[("journal")]
          Snapshot[("snapshot")]
        end
      end
      ReadModel[("MySQL")]
    end
    WebFrontend --> WriteApiServer
    WebFrontend --> ReadApiServer
    WriteApiServer --> WriteModel
    WriteModel space:2 ReadModel
    WriteModel --> ReadModel
    ReadApiServer --> ReadModel
    style WriteModel fill:#cde498,stroke:#13540c
    style tables fill:#cde498,stroke:#cde498
    style DynamoDB fill:#cde498,stroke:#cde498
Loading

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors