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

プライベート・クラウド上にデプロイされたマイクロサービス・アーキテクチャーを使用してフライト予約プラットフォームを構築する

Last updated | 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

このパターンの詳細な手順については、README ファイルを参照してください。README ファイルで、フライト予約アプリケーションを IBM Cloud Private 上にデプロイする手順を詳しく説明しています。手順の概要は次のとおりです。

  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

IBM Developer へようこそ

新しい IBM Developer へようこそ!私たちはこの新しいプロジェクトに大いに張り切っていますが、まずは皆さんについて、つまり開発者についてお話ししたいと思います。 私は開発者である皆さんを称賛します。私自身も開発者として、この業界で起きていること、つまりクラウド、データ/アナリティクス、人工知能、トランザクション、ブロックチェーンのコンバージェンスを目にしていますが、開発者の皆さんの、文字どおりすぐに新しいテクノロジーに対応する能力に心から敬服します。これまでの歴史全体を通して、ソフトウェア開発者という職業を、今ほど誇らしく思える時代はありません。IBM での私たちの使命は、開発者という専門的職業を、世界で最も尊敬すべき、最も需要の高い職業として受け止められるようにすることです。 なぜなら、開発者は毎日、未来を築いているからです。このサイトは、皆さんと一緒に築いていきたい未来を映し出し、讃えるためのものです。 私たちのチームは、開発者のアドボケイト (支持者)、デザイナー、コンテンツ編集者で構成されています。この有能なチームが、必要なツールを確実に開発者に提供できるよう、全力を尽くします。 間違いなく、このサイトは皆さんのサイトです。私たちは開発者の価値観を反映するために、コード、コンテンツ、コミュニティーからなる IBM Developer サイトを立ち上げました。私たちがこのサイトで目標としているのは、皆さんが開発者としての責務をより迅速に、よりスマートに、より効果的に果たせるよう支援することに尽きます。 この目標を達成する IBM Developer ならではの手段として、コード、コンテンツ、コミュニティーを 1 つのエンティティーにまとめています。 コード 開発者の能力は、開発者が世に送り出すコードにそのまま反映されます。開発者の能力がコードの威力を超えることはありません。だからこそ、開発者が非の打ちどころのない美しいコードをより迅速に作成し、競争相手よりも迅速にコードをデプロイして市場に送り出せるようサポートすることが、私たちの任務だと思っているのです。ただそれだけです。 IBM Developer を開始するきっかけとなったのは、開発者にフォーカスしたサイトを作成したらどうだろうかというアイデアです。そのサイトでコードを前面に押し出し、実際の問題を解決することを重点に置き、開発者がその責務をより迅速に、よりスマートに、より効果的に果たすために利用できるようにするには、どこから始めればよいだろうか考えました。 答えは明白です。コードが出発点となります。 開発者の目標は、開発者自身と同じく、それぞれに異なります。意図も、情熱も、才能もそれぞれに異なる開発者が取り組むプロジェクトは、とんでもなくシンプルなものから気が遠くなるほどに複雑なものまで、多岐にわたります。 独自のアプリケーションを開発して数分で稼働できるよう開発者をサポートするためには、すぐに使えるコードを用意し、開発者が簡単にそれを入手してフォークし、本番アプリケーションに組み込めなければなりません。単純にとらえ過ぎていると思われるかもしれませんが、文字どおり単純な話なのです。そして、コードをすぐに利用できるようにする手段となるのが、私たちが作成するコンテンツです。 コンテンツ 開発者が利用するコンテンツについてと、そうしたコンテンツをどのような方法で利用したいかについて、開発者たちとかなりの時間をかけて話し合いました。その結果、クラウド、データ、AI、ブロックチェーンなどのテクノロジーを使用して特定の機能をアプリケーションに統合する方法を垣間見られる、数百のコード・パターンを作成することになりました。どのパターンをクリックしても、最初に表示されるのは、コードを取得するための「コードを入手する」ボタンです。このボタンをクリックしてコードを取得し、開発を始めることができます。 コード・パターンはこのサイトの特徴的なコンテンツですが、その一方で、皆さんは特定のテクノロジーを使用して特定のタスクに取り組む方法について理解するためのチュートリアルもお望みのはずです。そこで、コンテキストを説明し、最先端のテクノロジーに関する理解を広げる、SME による数々の記事も用意しています。また、IBM Developer 動画デモでは特定のテクノロジーを使用する手順を案内し、インタビューでは最新の傾向に対する業界トップの見解を紹介しています。さらに、ニュース・セクションでは、テクノロジー分野での最新の動向に関する洞察を得ることができます。 テクノロジー分野といえば、IBM Developer の寄稿者たちがフォーカスしている主なテクノロジー分野は 20 を超えていますが、コンテンツには 50 以上の主題別にタグを付けているので、探しているコンテンツを簡単に見つけられるようになっています。私たちは IBM であり、開発を公にすることの価値を信じています。このことから、サイトでは全体にわたって、オープンソース・テクノロジーを大きく取り上げていることを見てとれるはずです。200 を超えるオープンソース・プロジェクトを話題にしたコンテンツに、ワンクリックでアクセスできます。これらのプロジェクトを利用して、変更を加え、その成果を IBM Developer にコントリビュートしてください。 私たちは多言語のマルチクラウドの世界に生きているので、IBM 社員以外の人々からの話も聞きたいはずです。そのため、今後数週間にわたり、開発者コミュニティーに大々的にコントリビューションを公開することになっています。そうです。コンテンツに対するこうしたアプローチをオープンソースのように公開することで、より大きなコミュニティーからのコントリビューションを促そうとしているのです。 公開したコンテンツのすべては、エラスティック・サーチを通じて一体化されます。 コミュニティー IBM Coder Community は、開発者たちに、イノベーションを生み、アイデアを交換し、学習する場であるコミュニティーに参加してもらうためのものです。つまり、開発者同士を結び付けて経験を共有するハブの役割を果たします。 IBM...

続けて読む IBM Developer へようこそ

Call for Code Challenge 2018(9/28応募締切!)- まずは参加登録して、自然災害に役立つ IBM Cloud のサービスに触れてみよう

みなさまこんにちは! 年々、テレビのニュースや新聞を見て、異常気象による集中豪雨や猛暑が各地で発生していると感じている方は多いのではないでしょうか。自然災害による甚大な被害をもたらしているのは日本だけではありません。「自然災害」は、今、世界が立ち向かうべき最も大きな試練となっています。 IBMは、2018年5月24日、パートナー団体と共に「Call for Code」をいう取り組みを発表し、世界中のデベロッパーが最新の技術を駆使して、コードで世界にポジティブな変化を与える支援をはじめました。 2018年の Call for Code チャレンジでは、「自然災害」をテーマに自然災害を打ち破り、地域社会や自然災害対策を強化を目指し、IBM Cloud サービスを活用したソリューションを構築するコンペティッションを開催します。18歳以上の個人または最大5名までのチームで参加することができます。優勝チームには USD200,000 (2,200万円相当) が贈られます。 これを機に皆さんにも「Call for Code」にご参加いただき、クラウド、データ、AI、ブロックチェーンを活用するためのIBMのテクノロジーにも触れていただければと思います。詳しくはサイトをご覧ください。 Call for Code(日本語サイト) Call for Code への参加するまでの手引き(日本語解説資料) IBM Code Patterns : Watson を活用した AI やクラウドなどのアプリ開発に役立つサンプルコードを提供

続けて読む Call for Code Challenge 2018(9/28応募締切!)- まずは参加登録して、自然災害に役立つ IBM Cloud のサービスに触れてみよう

Related Links

Hyperledger Burrow

Hyperledger Burrow provides a modular blockchain client with a permissioned smart contract interpreter partially developed to the specification of the Ethereum Virtual Machine (EVM).