本プロジェクトは決済サンプルアプリケーションになります。アプリケーションはGolangで実装しており、以下の技術要素を含みます。
- oapi-codegenを利用したOpenAPIサーバー(chi)/クライアントの生成
- Dapr同期通信(ServiceInvocation)
- oapi-codegenで生成したHTTPクライアントからのDapr同期通信(DaprSDKは未使用)
- Dapr非同期通信
- net/httpパッケージで作成したHTTPサーバーでCloudEvents(application/octet-stream)の受信処理(DaprSDKは未使用)
- AWSSDKを利用したDynamoDBアクセス
- MongoDBクライアントを利用したCosmosDBアクセス
クレジット決済を行うダミーサービス
決済手段がCREDITの場合、paymentサービスから内部的に呼び出される
外部のサービスが決済サービスを呼び出すためのエンドポイント
代引き決済の場合は本サービスのみで処理を完結する
DaprのServiceInvocationの技術サンプルのため、サービスをCreditとPaymentの2つに分け、別プロセスで実行するようにしています。
Standard Go Project Layoutを参考に構成
manifestリポジトリでマニフェストを適用する
kubectl apply -k overlays/(aws|azure)/local-dev/dependencies
cd scripts
./skaffold.sh (aws|azure)
※wslなどのLinux環境で実行することを前提としています
1.18
- oapi-codegenを導入
go get github.com/deepmap/oapi-codegen/cmd/oapi-codegen@v1.9.0
-
YAMLファイルを準備
- 参考:api/内のYAMLファイル
-
PaymentからOrderサービスへ接続するクライアントコード生成
oapi-codegen -package orderclient -generate "types" -o pkg/generate/orderclient/payment_types.go api/order.yaml
oapi-codegen -package orderclient -generate "client" -o pkg/generate/orderclient/http_client.go api/order.yaml
- 外部からの接続用サーバーコード生成
oapi-codegen -package paymentserver -generate "types" -o pkg/generate/paymentserver/types.go api/payment.yaml
- Paymentから内部API(credit)へ接続するクライアントコード生成
oapi-codegen -package creditclient -generate "types" -o pkg/generate/creditclient/payment_types.go api/credit.yaml
oapi-codegen -package creditclient -generate "client" -o pkg/generate/creditclient/http_client.go api/credit.yaml
- 内部接続用(paymentからcredit)のサーバーコード生成
oapi-codegen -package creditserver -generate "types" -o pkg/generate/creditserver/types.go api/credit.yaml
oapi-codegen -package creditserver -generate "chi-server" -o pkg/generate/creditserver/server.go api/credit.yaml
oapi-codegen -package creditserver -generate "spec" -o pkg/generate/creditserver/spec.go api/credit.yaml
go mod init github.com/nautible/nautible-app-ms-payment
go mod tidy