概要
孤立したアプリケーションなどというものは 1 つもありません。最近の開発者たちの間では、統合マイクロサービス・アーキテクチャーやクラウド・ネイティブ・マイクロサービス・アーキテクチャーの採用が広がっています。けれども、こうした最新のアプリケーション・アーキテクチャーでは、さまざまなマイクロサービスが多言語環境内に共存せざるを得ません。このコード・パターンを通して、Java マイクロサービス・アプリケーションをデプロイして他の言語のマイクロサービスと並行して実行し、サービス・ディスカバリー、登録、ルーティングを利用する方法を学んでください。
説明
多言語の世界では、さまざまな言語で作成された複数のマイクロサービスを一緒にデプロイしなければならないため、言語固有のフレームワークだけに依存するのでは、サービス・ディスカバリーやルーティングなどのタスクに対応できません。このパターンでは、Java ベースの「GameOn!」というマイクロサービス・アプリケーションを多言語エコシステム内にデプロイする方法を説明します。
このアプリケーションは、皆さんがマイクロサービス・アーキテクチャーとこれに関連する概念を探れるように作成された、テキストでやり取りするアドベンチャー・ゲームです。Kubernetes クラスター上で実行されるこのアプリが使用するマイクロサービスのタイプには、「コア」と「プラットフォーム」の 2 つがあります。コア・マイクロサービスは Java で作成されていて、サポートに多言語サービスを使用します。この類のパターンを使用する場合、マイクロサービスは同じマイクロサービス・コンテナー内のプロセスとしてサイドカーを使用するか、サービス・ディスカバリー、登録、ルーティングを目的に別個のコンテナーのサイドカーを使用するかのいずれかになります。すべてのマイクロサービスは、Kubernetes クラスターで管理された Docker コンテナー内で稼動します。
フロー
- ユーザーがプロキシーを介して、Kubernetes 上にデプロイされた GameOn! アプリにアクセスします。この HAProxy ベースのプロキシーは、API の集合をアプリケーション全体の単一の API であるかのように見せ掛けます。WebApp は、Web フロントエンドをクライアント・デバイスに提供する単純な NGINX プロセスです。
- ユーザーが Player マイクロサービスを操作してゲームをプレイします。このマイクロサービスーは CRUD 操作および API トークンの管理を行うためのパブリック API を提供します。
- Player マイクロサービスは Auth Java マイクロサービスを利用して、ユーザーが選択するソーシャル・サインオン サービスによってユーザーを認証し、認証済みプレイヤーのプロファイルと進捗データを返してクライアントに応答します。
- フロントエンド・クライアントが Mediator サービスに対して WebSocket を確立し、ゲームを開始します。WebSphere Liberty を使用して Java で実装された Mediator サービスは、WebSocket を介してプレイヤーをゲーム・ルームに接続します。
- ユーザーがサンプル・ウォークスルーのいずれかでボタンをクリックしてルームを作成します。
- 開発者はルーム実装内で Map マイクロサービスを利用することで、ルームが確実に最新の接続情報で登録されるようにします。WebSphere Liberty 上で稼動するこの Map サービスは、JAX-RS を使用してパブリック REST API を提供する Java EE アプリケーションです。
- Map サービスは Player サービスをチェックして、開発者に関連付けられている API トークンに基づき、その開発者にルーム関連の情報を更新することが許可されていることを確認します。
- ユーザーがルームにアクセスすると、Mediator サービスがライブ・ルーム・サービスへの WebSocket 接続を確立します。
手順
このコード・パターンに取り組む準備はできましたか?アプリケーションを起動して使用する方法について詳しくは、README.md ファイルを参照してください。
コンテンツを共有する
-
- Microservices architecture Learn how this Journey fits into the Microservices Reference Architecture
- Kubernetes now available on IBM Cloud Container Service The IBM Cloud Container Service now combines Docker and Kubernetes to deliver powerful tools, an intuitive user experience, and built-in security and isolation.
- Deploy a distributed GitLab leveraging Kubernetes and Docker This IBM Code developer journey demonstrates power of containers and how you can move existing applications to the cloud seamlessly.
- Microservices for fast time to market and improved app quality Take a cloud-native approach to building mobile and web applications with a microservices architecture.