プライベート・クラウド上にフライト予約プラットフォームを構築する  

Node.js をベースに、マイクロサービス・アーキテクチャーを使用したサンプル・フライト予約アプリケーションを作成し、作成したアプリケーションを IBM Cloud Private 上にデプロイする

| By Saif Rehman, Aziz Alsharafi

Description

最近は開発者たちの耳に、クラウド・ネイティブのアプリケーションに関するさまざまな情報が入ってきます。こうしたクラウド・ネイティブの世界で評判も需要も高くなってきているテクノロジーとしては、Kubernetes と Docker が挙げられます。完全にフルスタックのマイクロサービス・アプリケーションを必要としていて、ブロックチェーンの実装によってクラウド・ネイティブのアプリを構築したいとしたら、このコード・パターンが絶好の出発点となります。このコード・パターンでは、Hyperledger Fabric 上で Ethereum スマート・コントラクトを使用して、許可制ブロックチェーンを簡単に利用できるようにするための手順を案内します。また、極めてスケーラブルな Kubernetes ベースの最新のツールを紹介し、データ・ストレージとビジネス・ルールを統合する方法を説明します。

このコード・パターンで紹介しているのは、プライベート・クラウド上で高可用性を備えたクラウド・ネイティブのアプリを構築する方法です。具体的には、Node.js と IBM DB2 をベースにアプリのバックエンドを作成します。ルール・ベースのビジネス意思決定は、IBM Operational Decision Manager を使用して設計します。フロントエンドは、Angular4 を使用して作成します。分散型の非同期タスク・キューは、RabbitMQ と Celery をベースに作成します。さらに Kubernetes によってコンテナー・オーケストレーションを管理します。そして最後に、Hyperledger Fabric、Hyperledger Burrow、Ethereum スマート・コントラクトをベースにブロックチェーンを作成します。

Overview

このコード・パターンでは、マイクロサービス・アーキテクチャーと IBM ミドルウェアをベースに、12 Factor App 手法として以下のテクノロジーを使用したクラウド・ネイティブのサンプル・アプリケーションを構築します。このサンプル・アプリケーションは、フライト予約プラットフォームです。

  • Node.js (Typescript)
  • IBM DB2
  • IBM Operational Decision Manager (ODM)
  • RabbitMQ
  • Celery
  • Angular
  • Hyperledger Fabric
  • Hyperledger Burrow
  • Solidity
  • Docker
  • Kubernetes
  • IBM Cloud Private

このコード・パターンを完了すると、以下の方法がわかるようになります。

  • アプリケーションを個別のマイクロサービスに分割する
  • マイクロサービス・ベースのアプリケーションを IBM Cloud Private 上にデプロイする
  • Kubernetes 上で IBM ODM や IBM DB2 などのミドルウェアを使用する
  • IBM ODM 用にビジネス・ルールと意思決定を設計する
  • RabbitMQ と Celery を使用して分散型タスク・キューを作成する
  • DB2 をバックエンドのデータ・ストレージとして使用する
  • Hyperledger Burrow を使用して Ethereum スマート・コントラクトを Hyperledger Fabric 上にデプロイする
  • IBM Cloud Private、Docker、Kubernetes を使用する

Flow

  1. ユーザーがサンプル・フライト予約アプリにアクセスします。
  2. Angular4 を使用して作成されたユーザー・インターフェースでは、Restful エンドポイントを使用してバックエンドのマイクロサービスにアクセスするようになっています。
  3. ユーザーがアプリケーションにログインするには、Login マイクロサービスを利用します。
  4. ユーザーがフライト予約アプリケーションに登録するには、Signup マイクロサービスを利用します。
  5. ユーザーが予約した特定のフライトにチェックインするには、Checkin マイクロサービスを利用します。
  6. ユーザーが予約可能なフライトを一覧表示して閲覧するには、Listing マイクロサービスを利用します。
  7. ユーザーが利用可能なフライトを予約するには、Booking マイクロサービスを利用します。
  8. Blockchain マイクロサービスは、Ethereum プロキシーを介したブロックチェーンとの通信をサポートします。
  9. ユーザーから入力されたデータと、マイクロサービスとのやり取りを示すデータは、SQL データベースである IBM DB2 内に保管されます。
  10. ODM マイクロサービスは、IBM Operational Decision Manager (ODM) との通信をサポートします。
  11. 高度なビジネス・ルール管理システムとしての IBM ODM を使用して、頻繁に行われる繰り返し可能なビジネス意思決定をキャプチャー、自動化、管理します。IBM ODM が日常的な業務にリアルタイムの意思決定機能を追加します。
  12. Email マイクロサービスは RabbitMQ および Celery と通信して非同期キュー内の e-メールを送信します。
  13. RabbitMQ はメッセージの送受信を仲介するメッセージング・ブローカーです。RabbitMQ はアプリケーションにとってはメッセージ送受信用の共通プラットフォームとなり、メッセージにとっては受信されるまで存続できる安全な場所となります。
  14. Celery は、分散メッセージ送信手法をベースとする非同期タスク・キューまたはジョブ・キューです。
  15. Ethereum プロキシーによって、Ethereum 仮想マシン (EVM) と通信します。
  16. Hyperledger Burrow EVM チェーンコード・プラグインによって、Hyperledger Burrow を使用する Hyperledger Fabric に Ethereum 機能が追加されます。
  17. Hyperledger Fabric は、モジュール式アーキテクチャーを使用してアプリケーションやソリューションを開発する基盤として意図されたブロックチェーン・フレームワーク実装です。The Linux Foundation によってホストされている Hyperledger プロジェクトのうちの 1 つとなっています。Hyperledger Fabric では、コンセンサスやメンバーシップ・サービスなどをプラグ・アンド・プレイ・コンポーネントとして使用できます。

Instructions

このコード・パターンに関する詳細な手順は、GitHub リポジトリー内にある README.md ファイルに記載されています。手順の概要は以下のとおりです。

  1. Docker (プライベート・レジストリー) を IBM Cloud Private に関連付けます。
  2. すべての依存関係をインストールし、イメージを作成して IBM Cloud Private のプライベート・レジストリーにアップロードします。
  3. kubesctl を IBM Cloud Private の Kubernetes に関連付けます。
  4. IBM Cloud Private 内で永続ストレージを構成します。
  5. IBM DB2 をデプロイしてデータベースを作成し、IBM DB2 を構成します。
  6. RabbitMQ をデプロイします。
  7. IBM Operational Decision Manager (ODM) をデプロイして構成し、ビジネス・ルールをロードします。
  8. ブロックチェーンをデプロイします。
  9. Ethereum プロキシーをデプロイします。
  10. Kubernetes のシークレットを構成してデプロイします。
  11. config-maps を構成してデプロイします。
  12. すべてのサービスとデプロイメントを展開します。

Related Blogs

Call for Code 準優勝者: AI を使用して改造の可能性を判断する PD3R

ネパールでエンジニアとして働く Nirmal Adhikari は、地震がもたらす惨状をじかに目にしました。彼はまた、被害状況を評価したくても、なかなかコミュニティーにアクセスできないフラストレーションも実感しました。 「バスや交通機関で現地に辿り着くことはできませんでした。アクセスが禁止されていたためです。大勢のエンジニアを配置しなければならなかったのですが、それには相当な時間がかかりました」。2015 年のネパール大地震を振り返り、Adhikari はこのように言いました。「このことが理由で、私たちは多くの人手を要することなく迅速に作業を行えるよう、何か対策を取らなければならないと思ったのです」。 Adhikari と、Build Change で働く彼の同僚たち (Lakshyana K.C.、Nicolas Ortiz、Shreyasha Paudel、Kshitiz Rimal) は、人工知能によって検査を自動化し、地震で住む場所を追われた人々がすぐに自宅に戻れるようにできないかと考えました。 彼らがチームとして作り上げたのが、この Post-Disaster Rapid Response Retrofit (PD3R) です。3D モデル画像で学習した AI に基づくこのソリューションによって、自然災害後に住居を追われた家族がすぐに構造工学上のアドバイスを受けられるようになる可能性があります。PD3R は 2018 Call for Code Global Challenge で準優勝作品として選ばれ、25,000 米ドルの賞金と The Linux Foundation による長期のオープンソース・サポートを獲得しました。 「地震が発生すると、住居が全壊するか、部分的に損傷を受ける可能性があります」と、Ortiz は言います。「PD3R で目的としているのは、再建または補強することが可能な住居を、人工知能を使用して短時間で評価することです」。 Call for Code Global Award 祝賀会の録画を見る チームは Watson Studio を使用して、2,000 点を超える画像をベースにカスタムの視覚認識モデルを作成しました。IBM Watson...

続けて読む Call for Code 準優勝者: AI を使用して改造の可能性を判断する PD3R

Call for Code 優勝者: モバイル・ホットスポットとダッシュボードによって災害発生後のコミュニティーを支援

昨年メキシコ・シティーでマグニチュード 7.1 の地震が発生したとき、Subalekha Udayasakar はインターネットへの接続を失うと、いかに無力であるかを実感し、その混沌を目の当たりにしました。 「大勢の人々がインターネットに接続できなかったため、救助の手を差し伸べることができなかったのです」と、彼女は言います。「それに、被害に遭った人たちが実際にどのような状況に置かれているかについても、まったく見当がつきませんでした」。 この体験を機に、Subalekha と彼女のチームメイト (Jonah Model、Katie Mathews、Gandharv Patil、Matthew Malin) は災害への対応と復旧の最中に市民と救助隊がオンラインでつながり続ける方法を生み出しました。 ハードウェアとソフトウェアで編成された、この Project Lantern というソリューションは、2018 Call for Code Global Challenge で最優秀作品に選ばれました。Project Lantern が依存するのは、低価格のハードウェアとソーシャル・データ、そして入手した情報と状況の変化を反映したリアルタイムのデータです。 災害復旧時にオフラインになったワイヤレス・ネットワークで、鍵ほどの大きさの Lantern というデバイスがポップアップ通信ハブの役割を果たします。この Lantern デバイスでは、カスタマイズ可能な Web アプリを使用してニュースを受信し、救助とボランティアを要請するとともに、地図ツールによってユーザーを避難所と飲料水や燃料を入手できる場所まで誘導します。このように、Lantern は極めて急を要する状況でコミュニティーの秩序を維持するよう設計されています。 Call for Code チャレンジに向けて、チームは IBM Watson を利用してオフラインで収集されたデータを解釈し、その結果を救助隊用のダッシュボードとして提示することにしました。現地のボランティア、危険にさらされている人々、訓練された難民救済ワーカーの間のコラボレーションは、IRIS (Intelligent Routing and Insights の略語) によって支援します。 「IRIS の役目は、災害時のあらゆるデータに加え、IBM Watson の機械学習機能、The Weather Channel からのデータ、そして公開されているその他すべての API...

続けて読む Call for Code 優勝者: モバイル・ホットスポットとダッシュボードによって災害発生後のコミュニティーを支援

Call for Code 優勝者: 緊急支援ネットワークで中断のない銀行サービスを実現

史上最大の地震の 1 つとして数えられる 2008 年の四川大地震が発生したとき、中国農業銀行 (ABC) は被災者たちに緊急支援と金融サービスを提供しようと試みました。 けれども、銀行カードや写真付き ID を失くすなどといった、いくつかの泣き所が災害によって生み出され、同行は思うように顧客にサービスを提供できませんでした。 「この 10 年の間、世界中で多くの自然災害が発生しています」。ABC 研究開発センターで副総支配人を務める Wang Yi の言葉です。「私たちは被災者への金融サービスを改善することを目指しています」。 こうしたサービスの改善を目的に、ABC の開発者たちは Call for Code の呼びかけに応じ、United Aid Net (UAN) を作成しました。UAN は、自然災害の発生時も復旧時も中断することなく金融サービスを提供するためのグローバル緊急支援ネットワークです。顔認識に基づく預金引き出しとブロックチェーンを基に構築されている UAN は、災害時に家族や友人との間で一時的に金融サービスを共有することを可能にします。 仕組み このソリューションを開発したのは、北京を拠点とするチーム Green Coder です。Dong Xiaojie、Liu Xu、Liu Bo、Huang Zhiming、Liu Jiajie からなるチームが開発したこのソリューションは、2018 Call for Code Global Challenge で最優秀作品に選ばれました。 「UAN は、金融機関ネットワークと家族ネットワークという 2 つのネットワークで構成されています」。ABC でアプリケーション・プラットフォーム開発ネットワークの副総支配人を担当する Xiaojie は、このように言っています。「現在、私は UAN...

続けて読む Call for Code 優勝者: 緊急支援ネットワークで中断のない銀行サービスを実現

Related Links

Hyperledger Burrow

Hyperledger Burrow は、部分的に Ethereum Virtual Machine (EVM) 仕様に従って開発されたパーミッション型のスマート・コントラクト・インタープリターを使用して、モジュール式ブロックチェーン・クライアントを提供します。

Tutorial: Tour of Heroes

Tour of Heroes チュートリアルでは、Angular の基礎について説明しています。

Getting started with business rules

IBM Operational Decision Manager (ODM) 製品資料の一部となっているチュートリアルに従ってください。