はじめまして。本リポジトリをご覧いただきありがとうございます。
このリポジトリはバックエンド編でのサンプルコードとなっています。Stripeに限らず、決済代行会社のSDKは似たようなAPIになっているため、本実装が参考になると思います。
ロードバランサの章は、ほとんどがGCP上のUIで完結することが多いため、本リポジトリで紹介をしています。更新があれば、図も合わせて更新する意気込みです。
以下の目次でREADME.md
は構成されています。
まず、Computer Engineタブの"Instance Template"の中から"Create Instance Template"ボタンを押します。Instance Templateとはロードバランサに紐づくサーバーのクラスタの雛形になるものです。
押すと、以下のような画面へ遷移をします。
主な設定項目は以下の通りです。
- テンプレートの名前
- マシンタイプ
- コンテナイメージ
ここでは、作成したGCRのコンテナイメージを使って、作成をします。他の2つの項目は、ご自身で決めてください。
実際のサーバーのクラスタを雛形であるInstance Templateから作成します。
主な設定項目は以下の通りです。
- インスタンスグループの名前
- クラスタのロケーション
- オートスケールするかの可否
これらの項目は必要に応じて設定をしてください。ここまでで、クラスタを作成することはできました。
ロードバランサはGoogle Load Balancerを使って、設定をします。
サイドバーの"Network Services"から"Load Balancing"を選択し、"Create Load Balancer"を選択します。すると、次の画面へ遷移します。
決済サーバーの決済サーバーは、他のサーバーからのアクセスを想定して"Only between my VMs"を選択します。
すると、以下の画面へ遷移し、3つの項目を設定することになります。
- Backendの設定
- Host情報の設定
- Frontendの設定
基本的にはBackendの設定は、先程作成したInstance Groupを設定するだけです。以下の画面で設定をしてください。
「どのパスでアクセスしたら許可・拒否するのか、またどのBackendへ転送するのか」を設定することになります。
今回は複数のBackendがあるわけではないので、指定をする必要があります。
Frontendの設定は、「どのようにこのロードバランサがアクセスするか」を設定します。
主要な設定項目はInternal IP(内部IP)を設定するのみです。決済を行うときは、このIPを通してアクセスすることになります。
主要なディレクトリと、その実行内容です。
ディレクトリ | 実行内容 | 何ができるのか |
---|---|---|
cmd/ |
決済サーバーを構成する機能ごとの実行スクリプト | APIの挙動の参考 |
server/ |
簡単な決済サーバー | どのようなサーバーになるかの参考 |
それ以外のディレクトリ、およびファイルはドキュメントのためにあります。
以下の項目で実行スクリプトディレクトリcmd/
は構成されています。
ディレクトリ | 実行内容 |
---|---|
charge/charge.go | Charge APIを呼び、請求を行う |
customer/customer.go | Customer APIを呼び、顧客オブジェクトを作成 |
plan/plan.go | Productオブジェクトに対してPlanオブジェクトを作成 |
product/product.go | Productオブジェクトを作成 |
refund/refund.go | Refund APIを呼び、返金を行う |
subscription/subscription.go | Subscription APIを呼び、定期払いを作成を作成 |
簡単な決済サーバーを実装しているので、参考までにご覧ください。MySQLがたった状態を前提状態にしています。
以下のコマンドで起動をすることができます。xxx_xxx_xxx_xxx_xxx=
はGoogle Cloud KMSでエンコードした秘密鍵に置き換えてください。
$ ENCODED_STRIPE_SECRET_KEY=xxx_xxx_xxx_xxx= KEY=key go run server/server.go
起動すると以下のように出力を確認することができます。
2019/09/16 03:17:47 server started on port 5050
以下のアクセスポイントへリクエストを行って、サーバーの死活確認をしてください。
curl localhost:5050/healthz
HTTP Status Codeが200
であればサーバーが実行されている状態です。
Dockerコンテナを使ってサーバーを立てることもできます。
まず、コンテナイメージをビルドします。
$ make docker
もしくは、以下のコマンドを実行してビルドをすることもできます。
$ docker build . -t payment-server
以下のコマンドを実行して、サーバーを起動します。
$ docker run -p 5050:5050 payment-server
このようにしてサーバーを立ち上げることができました。
以下のIssueを通してお問い合わせお願いいたします。
できる限り、対応させていただきますので気軽によろしくお願いいたします。