nautible-app-ms-payment

module
v0.0.0-...-c41c7e3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 3, 2023 License: Apache-2.0

README

nautible-app-ms-payment

概要

本プロジェクトは決済サンプルアプリケーションになります。アプリケーションは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

クレジット決済を行うダミーサービス
決済手段がCREDITの場合、paymentサービスから内部的に呼び出される

Payment

外部のサービスが決済サービスを呼び出すためのエンドポイント
代引き決済の場合は本サービスのみで処理を完結する

補足事項

DaprのServiceInvocationの技術サンプルのため、サービスをCreditとPaymentの2つに分け、別プロセスで実行するようにしています。

ディレクトリ構成

Standard Go Project Layoutを参考に構成

サンプルアプリ利用手順

アプリケーション依存サービスの起動

manifestリポジトリでマニフェストを適用する

kubectl apply -k overlays/(aws|azure)/local-dev/dependencies
skaffoldによるアプリケーション起動
cd scripts
./skaffold.sh (aws|azure)

※wslなどのLinux環境で実行することを前提としています

アプリ構築手順

Golangバージョン

1.18

OpenAPI
  • 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
go mod init github.com/nautible/nautible-app-ms-payment
go mod tidy

Directories

Path Synopsis
cmd
pkg
generate/creditclient
Package creditclient provides primitives to interact with the openapi HTTP API.
Package creditclient provides primitives to interact with the openapi HTTP API.
generate/creditserver
Package creditserver provides primitives to interact with the openapi HTTP API.
Package creditserver provides primitives to interact with the openapi HTTP API.
generate/orderclient
Package orderclient provides primitives to interact with the openapi HTTP API.
Package orderclient provides primitives to interact with the openapi HTTP API.
generate/paymentserver
Package paymentserver provides primitives to interact with the openapi HTTP API.
Package paymentserver provides primitives to interact with the openapi HTTP API.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL