目次


Lightbend Reactive Platform を導入する

Chirper を IBM Cloud Private にデプロイする

Comments

Chirper は、Reactive Platform のサンプルです。このサンプルには、単純なマイクロブロギング・サイトをデモンストレーションする 4 つのマイクロサービスが含まれています。Chirper では、Reactive Platform を構成する主要なオープンソース・コンポーネントのうち、Play フレームワーク、Lagom フレームワーク、および Akka ツールキットの 3 つが利用されています。Chirperを IBM Cloud の一部となっている IBM Kubernetes Service (IKS) 上で実行する方法を説明した前のブログ記事では、sbt を使用してアプリケーションをビルドし、4 つの Docker イメージを IBM Cloud Container Registry にプッシュし、kubectl コマンド・ライン・ツールと Lightbend Orchestration の rp コマンドを使ってマイクロサービスを Kubernetes にデプロイしました。今回は、Chirper を IBM Cloud Private にデプロイする方法を、IBM Helm チャート・リポジトリーに含まれるサンプル Helm チャートを使用して説明します。念のために説明しておくと、IBM Cloud Private によって、各企業独自の安全なデータ・センターからパブリック・クラウドのメリットが提供されます。このサンプルの鍵は、Kubernetes、Docker レジストリー、そして Helm チャート・レジストリーのカタログを、Web フロントエンドによって統合することにあります。

Chirper の概要

Chirper マイクロブロギング・サンプルは、4 つのマイクロサービスを 1 つのアプリケーションに統合したものです。このアプリケーションでは、ユーザーを作成し、そのユーザーによってショート・マイクロブログの記事を「さえずる (チャープ)」ことができます。また、他のユーザーと友達になったり、他の友達のマイクロブログをフォローしてフィード内で表示したりすることもできます。

アクター、Akka、Play、Lagmon

Akka は、Carl Hewitt 氏のアクター・モデルを Java 仮想マシン上で実現する最新のライブラリーです。

アクター・モデルを使用して抽象化することによって、大規模な組織に所属する開発者とは異なり、自分のコードを通信という観点で捉えられるようになります。アクターの基本的特性は、明示的にメッセージを受け渡して互いに通信する、ステートフルなエンティティーとして世界をモデル化します。(このリンク先のページ「Introduction to Akka」から抜粋)

このモデルをベースに、Akka は次の機能を提供します。

  • マルチスレッド化された動作。アトミックやロックなどの低位レベルの構造体を使わずに、並列処理を実行できます。メモリーの可視性の問題さえ考える必要はありません。
  • システムとそのコンポーネント間でのトランスペアレントなリモート通信。難解なネットワーキング・コードを作成する必要も、保守する必要もありません。
  • クラスター化された高可用性アーキテクチャー。弾性を備え、オンデマンドでスケールイン、スケールアウトします。

Akka をベースに作成された Play Web フレームワークには、スレートレス、非同期、ノンブロッキングという特性が備わっています。これらの特性により、開発者は Play フレームワークの高度な応答性、弾性、回復力を利用して、極めてスケーラブルかつ軽量の高速なアプリケーションを構築することができます。

基本的に、Chirper サンプルは Lagom フレームワークのサンプルです。具体的には、このサンプルは 1 つのシステムとして機能する複数のリアクティブ・マイクロサービスから構成されています。したがって、これらのマイクロサービスが「弾性、回復力の根源」となっています。

リアクティブ・システムを構築するのは困難な作業になりがちですが、Lagom によってその複雑さは抽象化されます。力仕事の部分は Akka と Play が引き受けるため、単純化されたイベント駆動型プログラミング・モデルにフォーカスできます。その上、内部のメッセージ駆動型システムのメリットを得ることもできます。(このリンク先の Lagom フレームワークを紹介するページからの抜粋)

Lagom は、マイクロサービスをシステムとして構築する上で役立ちます。Chirper サンプルには、activity-stream、chirp、friend、front-end という 4 つのマイクロサービスがシステムとして構築されています。

  • activity-stream マイクロサービスでは、ユーザーが自分に関連するすべての「さえずり」が含まれるフィードを取得できます。これらのさえずりには、ユーザー自身の投稿とユーザーの友達の投稿が含まれます。
  • front-end マイクロサービスは、他の 3 つのマイクロサービスのアクセス・ポイントとして、サンプル・アプリケーション用の Web インターフェースを生成します。
  • chirp マイクロサービスは、「さえずり」を投稿し、「さえずり」の履歴を取得するための機能を追加します。取得されたさえずりの履歴は、activity-stream マイクロサービスによってユーザーフィードに取り込まれます。
  • friend マイクロサービスでは、新しいユーザーを作成することができます。ユーザーはログインして、フォローする友達の友達を追加できます。

これらのマイクロサービスのうち、chirp と friend の 2 つは、それぞれ 3 つのクラスター・メンバーを持つ Akka クラスターとして実装されます。クラスターは Akka ツールキットに含まれる主要なコンポーネントのうちの1 つです。アプリケーション内で稼働するアクターは、どのクラスター・メンバーにもスケジューリングできるので、これが作業の負荷を分散する方法となります。マイクロサービスを Akka クラスターとして実装することで、そのマイクロサービスのアクターをマシン全体で分散し、負荷分散によって回復力を確保します。さらに、弾性を確保するために、クラスター・メンバーの数は必要に応じてスケールアップ、スケールダウンできるようになっています。

アプリケーションと併せて、ユーザー・データとユーザーによって作成されたあらゆる「さえずり」の保管場所となる Cassandra データベースもデプロイされます。ICP の組み込み Ingress サービスは、Chirper の Web インターフェースから発信されたリクエストを、他のマイクロサービスの各種エンドポイントにルーティングするように構成されます。

このデプロイメントと構成を ICP に適応させるために、Helm チャートを使用して 1 つのパッケージにまとめます。HelmKubernetes のパッケージ・マネージャーであり、Kubernetes アプリケーションを定義、インストール、アップグレードするのに便利な Helm チャートと呼ばれるパッケージ化形式を使用します。

Chirper を IKS にデプロイしたときの方法とは対照的に、ここでは Helm チャートにすべてのコンポーネントをまとめます。Apache ライセンスが適用されたこのパッケージは、ICP Helm Chart Github リポジトリー内に用意されています。ICP カタログ Web UI から Helm チャートを実行することで、アプリケーションのすべてのコンポーネントをインストールできます。

サンプル・アプリケーションをデプロイする方法

このサンプル・アプリケーションをデプロイするには、まず、ICP クラスターにアクセスする必要があります。その後、ICP カタログを介してサンプル・アプリケーションをデプロイできますが、インストールする前に、アクセス可能な名前空間を作成しておく必要があります。名前空間の作成方法については、このリンク先の ICP ドキュメントを参照してください。 チャートをインストールする際は、リリース名 my-release を使用してください。

  1. カタログで ibm-reactive-platform-lagom-sample を検索します。
  2. 「Configure (構成)」を選択します。
  3. リリース名を入力します (: 一意の名前でなければなりません)。
  4. ターゲット名前空間を選択します (: デプロイできるサンプル・アプリケーションのインスタンスは、名前空間ごとに 1 つに限られます)。
  5. 使用許諾条件に合意します。
  6. Kubernetes Ingress を使用して Chirper サンプル・アプリケーションにアクセスするために使用するホスト名を入力します (例: chirper.<icp proxy node address&gft;.nip.io)。
  7. 「Install (インストール)」を選択します。

: NIP.IO は、任意の IP アドレスと一致するワイルドカード DNS (ドメイン・ネーム・システム) を提供しているドメイン名です。そうしたドメインでは、何かしらをインストールしたり構成したりすることなく、ローカル・ネットワーク上のデバイスから、ご使用の開発用 Web サーバー上の仮想ホストにアクセスできます。

サンプル・アプリケーションにアクセスして使用する前に、アプリケーションが完全にデプロイされるまで待ってください。デプロイの進捗状況は、リリース・レビュー・ページから確認できます。デプロイが完了するとすぐに、ICP UI からアプリケーションにアクセスできるようになります (または、「Helm Releases (Helm リリース)」のリリース名の下で確認できます)。デプロイの完了後、上記の手順でホスト名として入力した URL にアクセスすると、Chirper UI が表示され、サンプル・アプリケーションを使用できます。

ICP カタログを使用して Helm チャートを ICP にデプロイするのではなく、コマンド・ラインを使用してデプロイする場合には、chart リポジトリー内に用意されている README.md ファイルにその手順が説明されています。

次のステップ

このサンプルは、Akka のクラスター化やその他のリアクティブの原則をデモンストレーションするサンプル・アプリケーションとしては、比較的小規模なものです。 ソース・コードを確認するには、SBT サンプルMaven サンプルを使用できます。あるいは、独自のリアクティブ・アプリケーション用に Helm チャートを開発する際のガイダンスが必要な場合は、このリンク先のページでアクセスできるサンプルを参考にしてください。

サンプルの構築を開始する簡単な 3 つのステップ

  1. IBM Cloud Private Catalog をインストールします。
  2. Reactive を検索します。
  3. 「IBM Reactive Platform Lagom sample (IBM Reactive Platform Lagom サンプル)」を選択します。

ダウンロード可能なリソース


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Java technology
ArticleID=1064603
ArticleTitle=Lightbend Reactive Platform を導入する
publish-date=01312019