Bank in a Box のセットアップ

はじめに

本稿について

本稿は、Cordaを用いた銀行アプリケーション「Bank in a Box」の概要と初期セットアップについて説明したものです。

英語のドキュメントはこちらをご覧ください。

※今回、外部のデータベースの設定は行わなず、H2DBを使用します。

 

Bank in a Boxの概要

Bank in a Boxとは

Bank in a Boxは、Cordaをベースに構築された銀行アプリケーションです。実際に実装するときの、アイデアやベストプラクティスを提供します。
※「Bank in a Box」はサンプルプロジェクトのため、Corda EnterpriseやCorda Enterprise Network Managerが提供するパッケージには含まれていません。

以下のような銀行業務アプリケーションを実装しています。

  • 口座管理
  • 入出金
  • ローン
  • 既存のクレジット残高に対する定期的な支払い
  • 当座貸越設備
  • イントラバンクでの支払い
  • 毎日の引き出しと振込限度額

Bank in a Boxには以下のようなCordaの機能を実装しています。

  • Flows
  • Accounts SDK
  • Scheduled states
  • Oracles
  • 外部システムとの CorDapp の統合

Bank in a Boxのセットアップ

前提条件

Bank in a Boxを実行する場合は、以下のセットアップが必要です。

  • ローカルまたはクラウドプロバイダー環境でホストされる、構成された基本的なKubernetesクラスター。 Bank in a Box Dockerイメージを取得するには、KubernetesクラスターがプライベートDockerリポジトリにアクセスできる必要があります。(Kubernetesのバージョンは1.16.9以上)
  • 展開ではBashスクリプトを使用するため、ローカルオペレーティングシステムはLinux、macOS、またはWindows用のUnix互換環境(Cygwinなど)である必要があります。
  • Docker Desktop for Windows / Docker Desktop for Mac
  • kubectl
  • Docker
  • Helm (3.2以上)
  • https://github.com/corda/bank-in-a-boxのclone

実行基盤要件は以下の通りです。

  • Memory: 6 GB以上
  • CPU: 2コア以上

※Kubernetesでの作業が初めての方には、Docker Desktopを使用してローカルのKubernetesクラスタで実行することを推奨します。

 

デプロイ構成

Bank in a Boxは単一の専用Kubernetesネームスペース(default name:default)内で実行されます。各サービスは、専用の Kubernetes ポッドで実行されます。
以下デプロイされるサービスの一覧です。

  • Bank Node
  • Oracle Node
  • Notary Node
  • シミュレート用信用格付サーバー
  • Web API サーバー
  • ウェブブラウザからアクセスできるフロントエンドサービス

 

Jarファイルのビルド

Bank in a Boxをデプロイするには、「https://github.com/corda/bank-in-a-box」をcloneし、配下のプロジェクトをビルドする必要があります。

  • workflows
  • contracts
  • credt-rating-oracle
  • clients
  • webservices

ビルドは「bank-in-a-box」のプロジェクトルートディレクトリにて、以下のコマンドを実行します。

./gradlew workflows:jar
./gradlew contracts:jar
./gradlew credit-rating-oracle:jar
./gradlew clients:bootJar
./gradlew webservices:bootJar

各コマンドが成功すると以下のようなメッセージが出力します。

mceclip0.png

 

イメージファイルの作成

上記で生成したJarファイルを用いて、Dockerイメージを構築します。

こちらも「bank-in-a-box」のプロジェクトルートディレクトリにて、以下のコマンドを実行します。

docker build -t bank-in-a-box:0.0.1 -f docker/corda-node/Dockerfile .
docker build -t credit-rating-server:0.0.1 -f docker/credit-rating-server/Dockerfile .
docker build -t web-api-server:0.0.1 -f docker/web-api-server/Dockerfile .
docker build -t front-end:0.0.1 clients/FrontEnd/bank-in-a-box/.

各コマンドが成功すると以下のようなメッセージが出力します。

mceclip0.png

また、docker imageを実行すると以下のように表示されます。

mceclip1.png

 

helm installを使用してKubernetesへデプロイする。

「Bank in a Box」には、生成したイメージファイルを元に、Kubernetesへデプロイするためのyamlが用意されています。それをhelm installコマンドに渡すことで、簡単にKubernetesクラスターに環境を構築することができます。こちらは「bank-in-a-box」配下の「helm」ディレクトリに移動して以下のコマンドを実行します。

helm install bank bank-in-a-box -f bank-in-a-box/values-bank.yaml
helm install notary bank-in-a-box -f bank-in-a-box/values-notary.yaml
helm install oracle bank-in-a-box -f bank-in-a-box/values-oracle.yaml
helm install credit-rating-server web-server -f web-server/values-credit-rating.yaml
helm install web-api-server web-server -f web-server/values-web-api.yaml
helm install front-end frontend -f frontend/values.yaml

各コマンドが成功すると以下のようなメッセージが出力します。

mceclip2.png

また、helm listを実行すると以下のように表示されます。

mceclip3.png

 

Kubernetesのpodが起動していることを確認

kubectl get podsを実行して、各サービスのステータスがRunningしていることを確認します。

mceclip4.png

 

フロントエンドサービスにアクセス

フロントエンドサービスにアクセスするために、kubectl get svcを実行して、「front-end-service」の割り当てポートを確認します。下記例の場合31951が該当します。

mceclip5.png

 

「http://localhost:31951」にアクセスすると「Bank in a Box」の画面が出力します。

mceclip8.png

 

「LOG IN」メニューに遷移します。

mceclip10.png

 

デフォルトのユーザー名とパスワードを入力して「SAVE」ボタンをクリックします。

User name: admin
Password: password1!

mceclip11.png

 

Customers画面に遷移することを確認

mceclip12.png

 

終わりに

いかがでしょうか?割と簡単にデプロイまでできたのではないでしょうか?
Bank in a Boxの具体的な機能については、また別の記事でご紹介します。

 

Created by: Kazuto Tateyama

Last edited by: Kazuto Tateyama

Updated: 2020/12/24

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています