ブロックチェーンアプリケーション開発におけるAzure活用について

akinama3
LayerX-jp
Published in
6 min readAug 5, 2019

はじめに

みなさん、楽しく開発されていますでしょうか?
ブロックチェーンアプリケーション開発において困ることとして、「みんなに触って欲しいけど、どこに公開するのが良いのかしら?」というものがあると思います。
現実的な解としては、Azure/AWS/GCPなどのクラウド・コンピューティング・プラットフォームを使うことになると思いますが、弊社はMicrosoft for Startupsとしてパートナーシップを結んでいることもあり、Azureをどんどん活用していこうということになっております。

社内でもAWS/GCPの使用経験はあるがAzureを利用したことがないというメンバーも多いので、先日Microsoft様にハンズオンを開いていただいたところAzureの全体像の理解が進みましたので、自身で調査・構築してみた知見も含め記事としてまとめていくことに致しました。

通常のWebアプリケーション開発との違い

そもそも、ブロックチェーンアプリケーションと通常のWebアプリケーション開発の違いとして、Blockchain関連のコンポーネントが加わることによる複雑性や、データの一貫性を保つために独特のハンドリングをしなければならない難しさがあります。

簡単に思いつく項目だけでも、

  • RPCコールを行うBlockchain Nodeについては、自分自身で立てるか、InfuraなどのBlockchainインフラサービスを利用する必要がある
  • Blockchain Nodeで発生したイベントを取得して処理を行うためのEventWatcherを構築する必要がある
  • Blockchain Nodeとそのデータを利用したApplication間でのデータ不整合が起きないように設計し、Fallbackを考えなければならない
  • ユーザがWalletを持つのか、通常のWebアプリケーションのようなログイン機構を持ち、Walletをサーバ側管理するのかを考える必要がある
  • Transaction実行と承認までのタイムラグをどのようにハンドリングして、UXを損なわないようにするかを考える必要がある

などなど、考慮しなければいけないことがたくさんあります。
構成管理からフルスクラッチで構築していくと非常に手間がかかったり、そもそも各種コンポーネント自体が未成熟なこともあり、思わぬところでバグを踏んでしまったりと開発遅延につながってしまうのがブロックチェーンアプリケーション開発の辛いところです。

Azureを利用した開発効率向上

そこで、弊社ではAzureを最大限に活用することによって開発負荷を下げられるのではと考え、下記のような取り組みを進めてみました。

  • コンソーシアム開発であればAzure Blockchain Serviceを積極利用する
  • Blockchain Nodeのイベント監視をService BusやEvent GridのようなマネージドなAzure Serviceを利用する
  • Azure Logic Appsを利用して、アプリケーションワークフローを明確化・構築自動化する
  • Azure CLIを活用し個人の開発環境を簡単に構築できるようにする

その結果、今までに開発効率向上について一定の成果を上げることができました。加えてEthereumのParityフルノードをAzure VM上に構築するなど簡単に検証できる環境の整備も続けております。

利用しているサービス

どのような構成で構築しているかの全体像や個別のサービス毎の紹介・勘所については別の図解記事を投稿する予定です。
今回は概要をざっくり記載致します。

Azure Blockchain Service

現在開発中のシステムはQuorumを利用しており、コンソーシアムチェーン構築にAzure Blockchain Serviceを使用しております。
Subscriptionを跨いだコンソーシアムチェーン構築を容易に行うことができます。

Azure App Service / Azure Web Apps / Azure Pipelines

ブロックチェーンで利用しているフロントエンドやWeb APIについては、Azure App Service / Azure Web Appsを利用し、GitHubにPushされると自動的にデプロイされる仕組みを構築しております。

Azure Logic Apps

非常に強力なサービスであり、開発中のシステムにおいては

  • EventWatcherがイベントを取得したことをトリガにService BusへイベントログのデータをRDBMSに保存する
  • Service Busの実行をトリガに実行結果をEvent GridにてSlackやロギングサーバにポストする

などを筆頭に構築・実装を進めています。

Azure Blob Storage

Ethereum(Quorum)を初めとして、コントラクトの実行にはContract Address、ABI(Application Binary Interface)、Network情報などをフロントエンドやバックエンドなど共通的に参照する必要があります。
弊社ではTruffleを利用しているため、Truffle ArtifactファイルをAzure Blob Storageにアップロードをできる仕組みを構築しました。
Azure Blob Storageについては、SAS(Shared Access Signatures)の仕組み用いることで、時間範囲を含めた細かいアクセス管理をすることができます。

Azure API Management

システムをSPAで作成する場合、全てのAPIリクエストをAzure API Managementにて一元管理することが有効です。現在は、ブロックチェーンアプリケーションでの活用法を検証しておりますので、後ほど詳しい説明記事を公開する予定です。

今後の記事公開予定

2019年8月中に下記記事の公開を予定しております。

  1. 【図解】Azureを用いたブロックチェーンアプリケーションの全体像を理解する
  2. 【図解】Azure Logic Appsを用いた効率的なEventWatcher構成とは
  3. 【図解】Azure API ManagementとAzure App Serviceを用いた効率的なアプリケーション構築

--

--