7 サンプル・アプリケーションのデプロイ
サンプル・アプリケーションのコードは、マイクロサービス対応トランザクション・マネージャ(MicroTx)のインストール・バンドルに含まれています。サンプルを使用することは、MicroTxをよく理解するための最速の方法です。
installation_directory/otmm-RELEASE/samples
フォルダには、各トランザクション・プロトコル(XA、LRAおよびTCC)のためのサブフォルダが含まれています。各サブフォルダには、サンプル・アプリケーションのソース・コードとHelmで必要なファイルが含まれています。
サンプル・アプリケーションは、MicroTxを使用して様々なトランザクション・プロトコルに参加するためのサービスを開発する方法を示すマイクロサービスです。サンプルアプリケーションのコードには、MicroTxライブラリが含まれています。アプリケーションでMicroTxライブラリを使用する際に、サンプル・アプリケーションを参照として使用できます。
サンプル・マイクロサービスのデプロイメントの詳細
マイクロサービスの開発、テストおよびデプロイを個別に行います。アプリケーションはACID要件を満たす必要があります。
サンプル・マイクロサービスを、MicroTxをインストールしたのと同じネームスペースにデプロイします。
共通のアイデンティティ・プロバイダを使用することで、すべてのマイクロサービスを単一のアイデンティティ・ドメインに関連付けてユーザー定義および認証を共有します。
MicroTxは、データ・ストアを使用してグローバル・トランザクションおよびトランザクション・ログに関するデータを保守します。
XAサンプル・アプリケーションの場合、参加側マイクロサービスはリソース・マネージャに接続しますが、これは参加側マイクロサービスの外部にあるサービスです。
- XAサンプル・アプリケーションのデプロイ
MicroTxが、XAトランザクション・プロトコルを使用するアプリケーションのトランザクションをどのように管理するかについて、サンプルXAアプリケーションを使用して説明します。 - LRAサンプル・アプリケーションのデプロイ
- TCCサンプル・アプリケーションのデプロイ
7.1 XAサンプル・アプリケーションのデプロイ
MicroTxが、XAトランザクション・プロトコルを使用するアプリケーションのトランザクションをどのように管理するかについて、サンプルXAアプリケーションを使用して説明します。
XAサンプル・アプリケーションは、インストール・バンドルのinstallation_directory/otmm-<version>/samples/xa
フォルダにあります。このフォルダには、JavaおよびNode.jsのサンプル・アプリケーションのための、3つのマイクロサービスのコード、YAMLファイル、Helmチャートが含まれています。サンプル・アプリケーション・コードは、MicroTxライブラリを使用するようにすでに構成されています。
- XAサンプル・アプリケーションを実行するワークフロー
次のワークフローをガイドとして使用し、XAサンプル・アプリケーションを実行します。 - XAサンプル・アプリケーションについて
サンプルのXAアプリケーションでは、振込アプリケーションがXAトランザクションを作成して部門から部門への送金を開始するシナリオを実装しています。組織内の2つの部門は、部門1 (Dept 1)と部門2 (Dept 2)です。 - 実行するサンプル・アプリケーションの特定
サンプル・アプリケーションのコード・ファイルは、MicroTxクライアント・ライブラリを使用するようにすでに更新されています。これらのファイルは、MicroTxライブラリ・コードをご自身のカスタム・アプリケーションと統合するときに参照として使用できます。 - サンプル・アプリケーションのリソース・マネージャの設定
サンプルXAアプリケーションで、部門1と部門2のリソース・マネージャを設定します。 - KubernetesでのサンプルXAアプリケーションの実行
- Docker SwarmでのサンプルXAアプリケーションの実行
親トピック: サンプル・アプリケーションのデプロイ
7.1.1 XAサンプル・アプリケーションを実行するワークフロー
次のワークフローをガイドとして使用し、XAサンプル・アプリケーションを実行します。
タスク | 説明 | 詳細 |
---|---|---|
アクセス・トークンを作成します | インストール・バンドルをダウンロードし、トランザクション・ストアおよびアイデンティティ・プロバイダを設定します。 | 準備 |
MicroTxをインストールします | このガイドでは、KubernetesクラスタまたはDocker SwarmにMicroTxをインストールする手順について説明します。 | 次のいずれかの環境にMicroTxをインストールします: |
サンプルXAアプリケーションのコンポーネントについて学習します | サンプル・アプリケーションを使用して様々なユースケースを試すことができます。実行するサンプル・アプリケーションを特定し、そのサンプル・アプリケーションのソース・コードの場所を書き留めます。 | XAサンプル・アプリケーションについて |
試してみるXAサンプル・アプリケーションを特定します | サンプル・アプリケーションを使用して様々なユースケースを試すことができます。実行するサンプル・アプリケーションを特定し、そのサンプル・アプリケーションのソース・コードの場所を書き留めます。 | 実行するサンプル・アプリケーションの特定 |
トランザクション参加側アプリケーションのリソース・マネージャを設定します | XA準拠またはXA非準拠など、使用するリソース・マネージャのタイプを特定します。 | サンプル・アプリケーションのリソース・マネージャの設定 |
サンプル・アプリケーションのビルド、インストールおよび実行を行います | このガイドでは、KubernetesクラスタまたはDocker Swarmでサンプル・アプリケーションを実行する手順について説明します。 | 次のいずれかの環境でサンプル・アプリケーションを実行します: |
親トピック: XAサンプル・アプリケーションのデプロイ
7.1.2 XAサンプル・アプリケーションについて
サンプルのXAアプリケーションでは、振込アプリケーションがXAトランザクションを作成して部門から部門への送金を開始するシナリオを実装しています。組織内の2つの部門は、部門1 (Dept 1)と部門2 (Dept 2)です。
MicroTxによってXAトランザクションが実装されます。XAトランザクション内では、すべてのアクション(引出しや預入れなど)が成功するか、いずれか1つ以上のアクションが失敗した場合にはすべてがロールバックされます。
次の図は、多言語参加側マイクロサービスで構成されるサンプルXAアプリケーション・デプロイメントを示しています。
- MicroTxコーディネータは、参加側サービス間のトランザクションを管理します。
- 振込マイクロサービスはトランザクションを開始するため、XAトランザクション・イニシエータ・サービスと呼ばれます。ユーザーは、このマイクロサービスとやり取りして、ある金額を部門1と部門2の間で送金します。新しいリクエストが作成されると、MicroTxライブラリで公開されるヘルパー・メソッドは、XAトランザクションに対して
begin()
メソッドを実行して、振込マイクロサービスでXAトランザクションを開始します。このマイクロサービスには、XAのコミット・コールおよびロールバック・コールを発行するビジネス・ロジックも含まれます。 - 部門1と部門2はトランザクションに参加するため、XA参加側サービスと呼ばれます。MicroTxライブラリには、参加側サービスがトランザクションに自動的に登録できるようにするヘッダーが含まれています。これらのマイクロサービスは、REST APIを公開して、口座残高を取得し、指定された口座で引出しまたは預入れを行います。また、リソース・マネージャのリソースも使用します。
リソース・マネージャは、データベース、キューイング・システム、メッセージング・システム、キャッシュなどのステートフル・リソースを管理します。
サービスはACID要件を満たす必要があるため、XAトランザクションが開始され、このトランザクションのコンテキストで引出しと預入れの両方が呼び出されます。
次のトピックでは、XAトランザクションにおいてマイクロサービスとMicroTxがどのように通信するかについて説明します。
- シナリオ: 一定金額の引出しおよび預入れ
次のステップでは、サンプル・アプリケーションを実行するときの、XAトランザクションの正常なパスのシーケンス例を示します。ここでは、部門1から一定金額を引き出して、その金額を部門2に預け入れするようにユーザーがリクエストするシナリオについて考えてみます。エラー時には、起動側アプリケーションがコミットのかわりにロールバックをコールします。
親トピック: XAサンプル・アプリケーションのデプロイ
7.1.2.1 シナリオ: 一定金額の引出しおよび預入れ
次のステップでは、サンプル・アプリケーションを実行するときの、XAトランザクションの正常なパスのシーケンス例を示します。ここでは、部門1から一定金額を引き出して、その金額を部門2に預け入れするようにユーザーがリクエストするシナリオについて考えてみます。エラー時には、起動側アプリケーションがコミットのかわりにロールバックをコールします。
- ユーザーが、部門1から部門2に一定金額を送金するリクエストを行います。
- ユーザーが部門1からの一定金額の引出しをリクエストすると、振込サービスがトランザクションを開始します。トランザクション・イニシエータ・サービスである振込は、XAトランザクションを開始するためにMicroTxをコールします。
MicroTxは、トランザクションを追跡するための新しいグローバル・トランザクションID (GTRID)を作成し、GTRIDをデータ・ストアに書き込み、GTRIDをトランザクション・イニシエータ・サービスに返します。
- 振込が、一定金額を引き出すリクエストを部門1に送信します。
- トランザクション参加側サービスである部門1は、同じGTRIDを使用してMicroTxに登録します。トランザクションを正常に完了するには、MicroTxが複数の参加側サービスと対話する必要がある場合があります。MicroTxは、各参加側サービスに一意のブランチIDも作成します。XIDにはGTRIDとブランチIDの両方が含まれているため、XIDは参加側サービスごとに一意です。
- XAプロトコルでは、MicroTxが、参加側マイクロサービス(部門1など)とリソース・マネージャの間の通信を管理します。部門1は、MicroTxクライアント・ライブラリを使用する必要があります。これが、コールバックを登録して、リソース・マネージャのためにコールバックの実装を提供します。
- 部門1がDML操作を実行して一定金額を引き出し、レスポンスを返します。
- 振込サービスは、一定金額を部門2に預け入れする別のリクエストを開始します。
- トランザクション参加側サービスである部門2は、同じGTRIDを使用してMicroTxに登録します。MicroTxコーディネータは、部門2に固有のブランチIDを作成します。
- 部門2が、統合されたMicroTxライブラリを使用してリソース・マネージャと通信します。
- 部門2がDML操作を実行して一定金額を預け入れ、レスポンスを返します。
- 振込サービスがトランザクションをコミットするのは、部門1へのリクエストと部門2へのリクエストの両方が正常に実行された場合のみです。何らかのエラーが発生すると、振込サービスはコミットではなくロールバックをコールします。振込は、部門1と部門2によって使用されたのと同じGTRIDを使用してトランザクションをコミットします。
- MicroTxコーディネータは、参加側サービスである部門1がトランザクションをコミットするための準備を行います。
- MicroTxコーディネータが部門1をコールします。これに対して、参加側マイクロサービスは、統合されたMicroTxライブラリを使用して、リソース・マネージャを準備するリクエストを送信します。
- MicroTxコーディネータは、参加側サービスである部門2がトランザクションをコミットするための準備を行います。
- コーディネータが部門2にリクエストを送信します。これに対して、参加側マイクロサービスは、統合されたMicroTxライブラリを使用して、リソース・マネージャを準備するリクエストを送信します。
- 準備フェーズが正常に完了すると、コーディネータが参加側にコミット・リクエストを送信します。これに対して、参加側サービス2が、統合されたMicroTxライブラリを使用してリソース・マネージャにリクエストを送信します。コーディネータがレスポンスを振込サービスに返し、トランザクションが完了します。
親トピック: XAサンプル・アプリケーションについて
7.1.3 実行するサンプル・アプリケーションの特定
サンプル・アプリケーションのコード・ファイルは、MicroTxクライアント・ライブラリを使用するようにすでに更新されています。これらのファイルは、MicroTxライブラリ・コードをご自身のカスタム・アプリケーションと統合するときに参照として使用できます。
次の表に、様々なシナリオを試すために使用できるXAサンプル・アプリケーションの組合せを示します。この情報は、サンプル・マイクロサービスのイメージを構築して構成するときに必要になります。この表では、installation_directory/otmm-<version>/samples/xa
フォルダ内のサンプルXAアプリケーションの相対パスを示しています(..
はこのフォルダを表します)。試してみたいシナリオを特定してから、そのサンプル・アプリケーションのソース・コードの場所を書き留めます。
振込サービスは、トランザクション・イニシエータ・サービスです。部門1サービスおよび部門2サービスはトランザクション参加側サービスです。すべてのトランザクション参加側サービスに対してリソース・マネージャを設定する必要があります。詳細は、「XAサンプル・アプリケーションについて」を参照してください。
シナリオ | サンプル・コードの場所 | 備考 |
---|---|---|
XA準拠リソース・マネージャのみを使用して、Javaサンプル・アプリケーションを実行します。振込サービスは、トランザクションを開始するだけで、トランザクションに参加しないため、リソース・マネージャは必要ありません。 |
イニシエータ・アプリケーション: 部門1: 部門2: |
部門1および部門2のXA準拠リソース・マネージャを設定します。XA準拠リソース・マネージャの設定を参照してください。 |
XA準拠リソース・マネージャのみを使用して、Javaサンプル・アプリケーションを実行します。振込サービスは、トランザクションを開始してからトランザクションに参加するため、リソース・マネージャも必要です。 |
イニシエータ・アプリケーション: 部門1: 部門2: |
振込、部門1、部門2の各サービスのXA準拠リソース・マネージャを設定します。XA準拠リソース・マネージャの設定を参照してください。 |
XA準拠リソース・マネージャのみを使用して、Node.jsサンプル・アプリケーションを実行します。振込アプリケーションは、トランザクションを開始するだけで、トランザクションに参加しないため、リソース・マネージャは必要ありません。 |
イニシエータ・アプリケーション: 部門1: 部門2: |
部門1および部門2のXA準拠リソース・マネージャを設定します。XA準拠リソース・マネージャの設定を参照してください。 |
部門1でXA準拠リソース・マネージャ、部門2でXAとJDBCをサポートしないリソースを使用し、Javaサンプル・アプリケーションを実行します。振込サービスは、トランザクションを開始するだけであり、リソース・マネージャは必要ありません。 |
イニシエータ・アプリケーション: 部門1: 部門2: |
MySQLは、XAに準拠していないJDBCリソースです。ロギング・ラスト・リソース(LLR)の最適化を使用して、MySQLが分散トランザクションに参加できるようにします。部門2のリソース・マネージャとしてMySQLを設定します。「サンプル参加側サービスのMySQLの設定」を参照してください。 |
部門1でXA準拠リソース・マネージャ、部門2でMongoDBまたはMySQLをリソース・マネージャとして使用し、Javaサンプル・アプリケーションを実行します。振込サービスは、トランザクションを開始するだけであり、リソース・マネージャは必要ありません。 |
イニシエータ・アプリケーション: 部門1: 部門2: |
Mongo DBは非XAかつ非JDBCのリソースです。「リソース・マネージャとしてのMongoDBの設定」を参照してください。MySQLは、XAに準拠していないJDBCリソースです。「サンプル参加側サービスのMySQLの設定」を参照してください。LLRまたはLRCの最適化を使用して、MongoDBまたはMySQLが分散トランザクションに参加できるようにします。 |
部門1サービスと部門2サービスでXA準拠リソース・マネージャを使用し、Javaサンプル・アプリケーションを実行します。振込サービスは、トランザクションを開始してからトランザクションに参加します。このため、振込サービスにもリソース・マネージャを設定する必要があります。 |
イニシエータ・アプリケーション: 部門1: 部門2: |
MySQLは、XAに準拠していないJDBCリソースです。LLRの最適化を使用して、MySQLが分散トランザクションに参加できるようにします。振込サービスのリソース・マネージャとしてMySQLを設定します。「振込サービスのMySQLの設定」を参照してください。 |
部門1でXA準拠リソース・マネージャ、部門2でMySQLをリソース・マネージャとして使用し、Javaサンプル・アプリケーションを実行します。振込サービスは、トランザクションを開始するだけであり、リソース・マネージャは必要ありません。 |
イニシエータ・アプリケーション: 部門1: 部門2: |
MySQLは、XAに準拠していないJDBCリソースです。ラスト・リソース・コミット(LRC)の最適化を使用して、MySQLが分散トランザクションに参加できるようにします。部門2のリソース・マネージャとしてMySQLを設定します。「サンプル参加側サービスのMySQLの設定」を参照してください。 |
部門1でXA準拠リソース・マネージャ、部門2でMongoDBをリソース・マネージャとして使用し、Javaサンプル・アプリケーションを実行します。振込サービスは、トランザクションを開始するだけであり、リソース・マネージャは必要ありません。 |
イニシエータ・アプリケーション: 部門1: 部門2: |
Mongo DBは非XAかつ非JDBCのリソースです。LRCの最適化を使用して、MongoDBが分散トランザクションに参加できるようにします。「リソース・マネージャとしてのMongoDBの設定」を参照してください。 |
部門1でXA準拠リソース・マネージャ、部門2で複数のリソース・マネージャを使用し、Helidonサンプル・アプリケーションを実行します。振込サービスは、トランザクションを開始するだけであり、リソース・マネージャは必要ありません。 |
イニシエータ・アプリケーション: 部門1: 部門2: |
部門2について、リソース・マネージャの1つとしてOracle Database、もう1つとしてMySQLを設定します。複数のリソース・マネージャの設定の詳細は、../java/department-helidon-mixed-multiplerm にあるreadme.txt ファイルを参照してください。
|
部門1でXA準拠リソース・マネージャ、部門2で複数のリソース・マネージャを使用し、Javaサンプル・アプリケーションを実行します。振込サービスは、トランザクションを開始するだけであり、リソース・マネージャは必要ありません。 |
イニシエータ・アプリケーション: 部門1: 部門2: |
部門1はHelidonアプリケーションです。部門2はSpring Bootアプリケーションです。部門2について、リソース・マネージャの1つとしてOracle Database、もう1つとしてPostgreSQLを設定します。複数のリソース・マネージャの設定の詳細は、../java/department-spring-jpa-multiplerm-postgres にあるreadme.txt ファイルを参照してください。
|
親トピック: XAサンプル・アプリケーションのデプロイ
7.1.4 サンプル・アプリケーションのリソース・マネージャの設定
サンプルXAアプリケーションで、部門1と部門2のリソース・マネージャを設定します。
部門1では、任意のXA準拠データベースをリソース・マネージャとして使用できます。たとえば、Oracle CloudのAutonomous Transaction Processing (ATP)データベース・インスタンスです。
部門2では、実装するユースケースに基づいて、次のいずれかをリソース・マネージャとして設定します:
- XA準拠データベース
- 非XA準拠のデータ・ストア(MongoDBやMySQLなど)
- PostgreSQL (データベースとして)
振込サービスが、トランザクションを開始してからトランザクションに参加するユースケースでは、振込サービスにもリソース・マネージャを設定する必要があります。
- XA準拠リソース・マネージャの設定
サンプルXAアプリケーションのXA準拠リソース・マネージャを設定してから、サンプル値を含む表を作成します。 - リソース・マネージャとしてのMongoDBの設定
MicroTxは、リソース・マネージャとしてMongoDB 4.1以降をサポートしています。Mongo DBは非XAかつ非JDBCのリソースです。ロギング・ラスト・リソース(LLR)またはラスト・リソース・コミット(LRC)の最適化を使用して、MongoDBが分散トランザクションに参加できるようにします。 - 振込サービスのMySQLの設定
MySQLは、XAに準拠していないJDBCリソースです。ロギング・ラスト・リソース(LLR)またはラスト・リソース・コミット(LRC)の最適化を使用して、MySQLが、振込サービス(トランザクション・イニシエータ・サービス)のデータ・ストアとして分散トランザクションに参加できるようにします。 - サンプル参加側サービスのMySQLの設定
MySQLは、XAに準拠していないJDBCリソースです。ロギング・ラスト・リソース(LLR)またはラスト・リソース・コミット(LRC)の最適化を使用して、MySQLが分散トランザクションに参加できるようにします。 - リソース・マネージャとしてのPostgreSQLの構成
XAサンプル・アプリケーションで部門2のリソース・マネージャとしてPostgreSQLを使用するには、アプリケーションのYAMLファイルにいくつかの詳細情報を指定して、セッション・アフィニティを有効にする必要があります。 - XA参加側のセッション・アフィニティの有効化
参加側サービスのレプリカが複数ある場合、リクエストは1つのトランザクションで異なるレプリカに向けられることがあります。参加側サービスのセッション・アフィニティを有効にすると、一意のトランザクションまたはセッションに対するすべてのリクエストは、最初のリクエストを処理した参加側サービスの同じエンドポイントまたはレプリカにルーティングされます。
親トピック: XAサンプル・アプリケーションのデプロイ
7.1.4.1 XA準拠リソース・マネージャの設定
サンプルXAアプリケーションのXA準拠リソース・マネージャを設定してから、サンプル値を含む表を作成します。
任意のOracle Databaseを使用できます。たとえば、Oracle CloudのAutonomous Transaction Processing (ATP)データベース・インスタンス、Kubernetesクラスタ内で実行されているOracle Database、またはオンプレミス・データベースなどです。MicroTxおよびアプリケーション(アプリケーションをデプロイした時点で)がデータベースにアクセスできることを確認します。
データベースとサンプル値を含む表の作成
サンプルXAアプリケーションをテストするには、データベースと、両方の部門アプリケーションのサンプル値を含む表を作成します。MicroTxインストール・バンドルには、必要な表を作成するために実行できるSQLスクリプト・ファイルが含まれています。データベースに接続するクライアント・ツールを使用してSQLスクリプトを実行します。データベースとの接続を確立し、SQLスクリプトを実行するには、データベース資格証明を指定する必要があります。
SQLスクリプトを使用して、データベースと表を作成し、サンプル値を移入するには:
- SQL DeveloperまたはSQL Plusを使用して、Oracle Databaseに接続し、
<installation_directory/otmm-RELEASE/samples/xa/java/department-helidon/department.sql
ファイルを実行します。これにより、
department_helidon
という名前のデータベースと、accounts
という名前の表が作成されます。また、accounts
表にサンプル値が移入されます。 - SQL DeveloperまたはSQL Plusを使用して、Oracle Databaseに接続し、
<installation_directory/otmm-RELEASE/samples/xa/java/department-spring/department.sql
ファイルを実行します。これにより、
department_spring
という名前のデータベースと、accounts
という名前の表が作成されます。また、次の表に示すサンプル値がaccounts
表に移入されます。Account_ID Amount account1 1000 account2 2000 account3 3000 account4 4000 account5 5000
親トピック: サンプル・アプリケーションのリソース・マネージャの設定
7.1.4.2 リソース・マネージャとしてのMongoDBの設定
MicroTxは、リソース・マネージャとしてMongoDB 4.1以降をサポートしています。Mongo DBは非XAかつ非JDBCのリソースです。ロギング・ラスト・リソース(LLR)またはラスト・リソース・コミット(LRC)の最適化を使用して、MongoDBが分散トランザクションに参加できるようにします。
親トピック: サンプル・アプリケーションのリソース・マネージャの設定
7.1.4.3 振込サービスのMySQLの設定
MySQLは、XAに準拠していないJDBCリソースです。ロギング・ラスト・リソース(LLR)またはラスト・リソース・コミット(LRC)の最適化を使用して、MySQLが、振込サービス(トランザクション・イニシエータ・サービス)のデータ・ストアとして分散トランザクションに参加できるようにします。
このシナリオでは、トランザクション・イニシエータおよび参加側アプリケーションはJavaアプリケーションです。部門1および部門2アプリケーションでXA準拠リソース・マネージャを使用します。振込アプリケーションのリソース・マネージャとしてMySQLを設定します。
振込アプリケーションのリソース・マネージャを設定するのは、イニシエータ・アプリケーションを参加側としても使用するシナリオを試す場合のみです。銀行振込アプリケーションによって、ある部門から別の部門に送金します。振込アプリケーションは、トランザクションごとに手数料として一定金額を請求します。この場合、振込アプリケーションはトランザクションを開始して参加します。データベース・インスタンスは、トランザクション情報を保存するために振込アプリケーションにアタッチされる必要があります。
親トピック: サンプル・アプリケーションのリソース・マネージャの設定
7.1.4.4 サンプル参加側サービスのMySQLの設定
MySQLは、XAに準拠していないJDBCリソースです。ロギング・ラスト・リソース(LLR)またはラスト・リソース・コミット(LRC)の最適化を使用して、MySQLが分散トランザクションに参加できるようにします。
親トピック: サンプル・アプリケーションのリソース・マネージャの設定
7.1.4.5 リソース・マネージャとしてのPostgreSQLの構成
XAサンプル・アプリケーションで部門2のリソース・マネージャとしてPostgreSQLを使用するには、アプリケーションのYAMLファイルにいくつかの詳細情報を指定して、セッション・アフィニティを有効にする必要があります。
- リソース・マネージャとしてPostgreSQLを使用するトランザクション参加側サービスのセッション・アフィニティまたはスティッキー・セッションを有効にします。セッション・アフィニティを有効にすると、一意のトランザクションまたはセッションに対するすべてのリクエストは、最初のリクエストを処理した参加側サービスの同じエンドポイントまたはレプリカにルーティングされます。「XA参加側のセッション・アフィニティの有効化」を参照してください。
- アプリケーションのYAMLファイルで、PostgreSQLインスタンスに接続するためのユーザー名、パスワードおよびURLを指定します。詳細を指定するための形式については、
readme
ファイルを参照してください。
親トピック: サンプル・アプリケーションのリソース・マネージャの設定
7.1.4.6 XA参加側のセッション・アフィニティの有効化
参加側サービスのレプリカが複数ある場合、リクエストは1つのトランザクションで異なるレプリカに向けられることがあります。参加側サービスのセッション・アフィニティを有効にすると、一意のトランザクションまたはセッションに対するすべてのリクエストは、最初のリクエストを処理した参加側サービスの同じエンドポイントまたはレプリカにルーティングされます。
- 参加側サービスがリソース・マネージャとしてPostgreSQLを使用する場合。
- 参加側サービスがリソース・マネージャとして非XAリソースを使用する場合。
親トピック: サンプル・アプリケーションのリソース・マネージャの設定
7.1.5 KubernetesでのサンプルXAアプリケーションの実行
- サンプルXAアプリケーションのDockerイメージの構築
Dockerイメージを構築する前に、次のタスクを完了したことを確認します。 - XAサンプル・アプリケーション・イメージのプッシュ
サンプル・アプリケーションの構築したDockerイメージをリモート・リポジトリにプッシュします。 - XAサンプル・アプリケーションのためのvalues.yamlファイルの更新
サンプル・アプリケーション・ファイルには、values.yaml
ファイル(サンプル・アプリケーションのマニフェスト・ファイル)も含まれ、これには、XAサンプル・アプリケーションのデプロイメント構成の詳細が含まれています。 - XAサンプル・アプリケーションのインストール
MicroTxをインストールしたKubernetesクラスタにXAサンプル・アプリケーションをインストールします。 - XAトランザクションの実行
親トピック: XAサンプル・アプリケーションのデプロイ
7.1.5.1 サンプルXAアプリケーションのDockerイメージの構築
Dockerイメージを構築する前に、次のタスクを完了したことを確認します。
- MicroTxをインストールしました。
- 試してみるサンプル・アプリケーションを特定し、そのコード・ファイルの場所を書き留めました。「実行するサンプル・アプリケーションの特定」を参照してください。
- 参加者側サービスのリソース・マネージャを設定しました。リソース・マネージャとしてAutonomous Databaseインスタンスを使用する場合は、ウォレット・ファイルをサンプル・アプリケーション・フォルダにコピーしました。
次の手順のコード・サンプルでは、Javaサンプル・アプリケーション(XA準拠のリソース・マネージャを使用)の場所を使用します。試すシナリオに基づいて、サンプル・アプリケーションのコード・ファイルのパスを更新します。
次のステップを実行して、サンプル内の各マイクロサービスのDockerイメージを構築します:
7.1.5.2 XAサンプル・アプリケーション・イメージのプッシュ
サンプル・アプリケーションの構築したDockerイメージをリモート・リポジトリにプッシュします。
構築したコンテナ・イメージは、ローカル・リポジトリで使用することができます。このイメージをリモート・リポジトリにプッシュする必要があります。Helmを使用してこのイメージにアクセスできるようにするためです。後で、Helmを使用してサンプル・アプリケーションをインストールします。
リモートDockerリポジトリのDockerイメージのタグを書き留めます。リモートDockerリポジトリからイメージをプルする際に、このタグを入力する必要があります。
7.1.5.3 XAサンプル・アプリケーションのためのvalues.yamlファイルの更新
サンプル・アプリケーション・ファイルには、values.yaml
ファイル(サンプル・アプリケーションのマニフェスト・ファイル)も含まれ、これには、XAサンプル・アプリケーションのデプロイメント構成の詳細が含まれています。
サンプル・アプリケーションをKubernetesクラスタにデプロイするとき、HelmがリモートDockerレジストリからサンプル・アプリケーション・イメージをプルします。サンプル・アプリケーションのvalues.yaml
ファイルに、プルするイメージと、イメージのプル時に使用する資格証明を指定します。リソース・マネージャにアクセスするための詳細も指定します。
values.yaml
ファイルに構成および環境の詳細を指定するには:
7.1.6 Docker SwarmでのサンプルXAアプリケーションの実行
- Dockerイメージの構築およびプッシュ
リソース・マネージャとしてAutonomous Databaseインスタンスを使用する場合は、Dockerイメージの構築を開始する前に、ウォレット・ファイルをサンプル・アプリケーション・フォルダにコピーしていることを確認します。 - XAサンプル・アプリケーションのインストール
Docker SwarmにXAサンプル・アプリケーションをインストールします。 - XAトランザクションの実行
トランザクションを開始する前に、マイクロサービス対応トランザクション・マネージャ・ライブラリ・ファイルをインストールし、サービスのDockerイメージをDockerレジストリにプッシュする必要があります。
親トピック: XAサンプル・アプリケーションのデプロイ
7.1.6.1 Dockerイメージの構築およびプッシュ
リソース・マネージャとしてAutonomous Databaseインスタンスを使用する場合は、Dockerイメージの構築を開始する前に、ウォレット・ファイルをサンプル・アプリケーション・フォルダにコピーしていることを確認します。
- MicroTxをインストールしました。
- 試してみるサンプル・アプリケーションを特定し、そのコード・ファイルの場所を書き留めました。「実行するサンプル・アプリケーションの特定」を参照してください。
- 参加者側サービスのリソース・マネージャを設定しました。リソース・マネージャとしてAutonomous Databaseインスタンスを使用する場合は、ウォレット・ファイルをサンプル・アプリケーション・フォルダにコピーしました。
構築したDockerイメージに、作成したレジストリのアドレスをタグ付けすることが重要です。たとえば、192.0.2.1:5000
。これは、アプリケーションをSwarmに配布する際に必要です。
次の手順のコード・サンプルでは、Javaサンプル・アプリケーション(XA準拠のリソース・マネージャを使用)の場所を使用します。試すシナリオに基づいて、サンプル・アプリケーションのコード・ファイルのパスを更新します。
7.1.6.2 XAサンプル・アプリケーションのインストール
Docker SwarmにXAサンプル・アプリケーションをインストールします。
すべてのSwarmオブジェクトは、スタック・ファイルと呼ばれるマニフェストに記述されています。tmm-stack-compose.yaml
スタック・ファイルはinstallation_directory/otmm-<version>/samples/docker
にあります。これは、XAサンプル・アプリケーションおよびトランザクション・コーディネータのすべてのコンポーネントおよび構成が指定されるサンプルYAMLファイルです。このファイルを参照として使用して、Docker Swarmでのマイクロサービスの実行と管理を行うためにご自身のYAMLファイルを作成してください。
7.2 LRAサンプル・アプリケーションのデプロイ
- サンプルLRAアプリケーションについて
LRAサンプル・アプリケーションは、インストール・バンドルのinstallation_directory/otmm-<version>/samples/lra/lrademo
フォルダにあります。このフォルダには、3つのサンプル・マイクロサービスのコード、YAMLファイルおよびHelmチャートが含まれています。 - KubernetesでのサンプルLRAアプリケーションの実行
- Docker SwarmでのサンプルLRAアプリケーションの実行
親トピック: サンプル・アプリケーションのデプロイ
7.2.1 サンプルLRAアプリケーションについて
LRAサンプル・アプリケーションは、インストール・バンドルのinstallation_directory/otmm-<version>/samples/lra/lrademo
フォルダにあります。このフォルダには、3つのサンプル・マイクロサービスのコード、YAMLファイルおよびHelmチャートが含まれています。
サンプルLRAアプリケーションのマイクロサービス
次の図に示すサンプルLRAアプリケーションには、いくつかのマイクロサービスが含まれています。これはMicroTxを使用してLRAトランザクションを管理する方法を示しています。
サンプル・アプリケーションを使用して、旅行(ホテル客室と航空券の予約を含む)を予約します。サンプル・アプリケーションの各マイクロサービスは、異なるタスクを実行します。1つのマイクロサービスが旅行を予約し、もう1つ航空券を予約し、3つ目のマイクロサービスがホテルを予約します。MicroTxは、これらのマイクロサービス間のトランザクションを調整します。
サンプルLRAアプリケーションは、次の多言語マイクロサービスで構成されます:
- MicroTx (LRAコーディネータ)は、サンプル・マイクロサービス間のトランザクションを調整します。
- 旅行マネージャ・サービスは、トランザクション・イニシエータ・サービスです。ここで、LRAトランザクションが開始します。旅行を予約する際に、このサービスが、航空券とホテルを予約するために航空券とホテルのサービスをそれぞれコールします。旅行マネージャは、ホテルと航空券の両方を予約するAPIと、その予約を取り消すAPIを公開します。ホテルと航空券の両方が正常に予約されます。または、エラー時には両方の予約が取り消されます。このJavaアプリケーションは、
installation_directory/otmm-<version>/samples/lra/lrademo/trip-manager
にあります。 - ホテル予約サービスは、ホテル客室を予約するAPIと、エラー時に予約を取り消すAPIを公開します。これは旅行マネージャ・サービスによってコールされて、客室を予約します。これは既存のLRAのコンテキスト内でコールされるため自らを登録し、LRAコーディネータが客室予約を完了または補正するために使用するコールバックURIを提供します。このJavaアプリケーションは、
installation_directory/otmm-<version>/samples/lra/lrademo/hotel
にあります。 - 航空券予約サービスは、航空券を予約するAPIと、エラー時に予約を取り消すAPIを公開します。これは旅行マネージャ・サービスによってコールされて、航空券を予約します。これは既存のLRAのコンテキスト内でコールされるため自らを登録し、LRAコーディネータが航空券予約を完了または補正するために使用するコールバックURIを提供します。このTypeScriptアプリケーションは、
installation_directory/otmm-<version>/samples/lra/lrademo/flight
にあります。 - 旅行クライアントは、予約の確定または取消しに使用できるユーザー・インタフェースです。これはLRAトランザクションには参加しません。これは、サンプル・クライアント・サービスとして提供され、LRAプロトコルを使用する分散トランザクションを実行するマイクロサービスをコールします。このJavaアプリケーションは、
installation_directory/otmm-<version>/samples/lra/lrademo/trip-client
にあります。
MicroTxライブラリは、サンプル・アプリケーション・マイクロサービスのコードに含まれています。サービスは、MicroTxライブラリを使用する際、公開されているRESTエンドポイントを介して相互に通信します。
このアプリケーションを実行すると、ホテル客室と航空券が予約され、仮予約が行われます。予約を確定する承認を与えた場合のみ、ホテル客室と航空券の予約が確定されます。仮予約を取り消すと、押さえていたホテル客室と航空券が解放され、予約が取り消されます。デフォルトでは、フライト・サービスで確定できるのは2件の予約のみです。エラー・シナリオをテストできるように、フライト・サービス・サンプル・アプリケーションは、2件の予約の確定後に追加の予約リクエストが行われると拒否します。これは、旅行のホテル仮予約の取消(補正)につながり、その旅行は予約されなくなります。
- シナリオ: 映画館の座席予約
MicroTxでは、1レベルのネストがサポートされています。XAトランザクションは、LRAトランザクション内にのみネストできます。
親トピック: LRAサンプル・アプリケーションのデプロイ
7.2.1.1 シナリオ: 映画館の座席予約
MicroTxでは、1レベルのネストがサポートされています。XAトランザクションは、LRAトランザクション内にのみネストできます。
映画チケットを予約するサンプル・アプリケーションを使用して、XAトランザクションがLRAトランザクション内にどのようにネストされるかを説明します。このサンプル・アプリケーションはインストール・バンドルには含まれていません。
サンプルのネストされたトランザクションのマイクロサービス
LRAトランザクションにXAトランザクションをネストするサンプル・アプリケーションは、次の多言語マイクロサービスで構成されます:
- MicroTx (LRAコーディネータおよびXAコーディネータ)
- 座席予約サービス: これはトランザクション・イニシエータ・サービスです。ここで、LRAトランザクションが開始します。このサービスは座席を予約し、予約席の支払いを処理するために支払いサービスをコールします。
- 支払いサービス: このサービスは既存のLRAのコンテキスト内でコールされるため自らを登録し、LRAコーディネータが座席予約を完了または補正するために使用するコールバックURIを提供します。
また、顧客の銀行口座から映画館の銀行口座への送金を開始することで、XAトランザクションを開始します。
- 顧客の銀行サービス: このサービスはXAトランザクションに参加し、顧客の銀行口座から一定金額を引き出します。
- 映画館の銀行サービス: このサービスはXAトランザクションに参加し、顧客の銀行口座から一定金額を引き出します。
ネストされたトランザクションのトランザクション・フローのシーケンス例
次のステップでは、サンプル・マイクロサービス間でのLRAトランザクションとXAトランザクションの正常なパスについて説明します。エラー時に、支払いサービスはコミットではなくロールバックをコールします。支払いが失敗した場合、座席予約サービスは映画館の座席の予約を削除して、再び予約対象にします。
- ユーザーが座席を予約するリクエストを発行すると、座席予約サービスが新しいLRAトランザクションを開始します。トランザクション・イニシエータ・サービスである座席予約は、MicroTxをコールしてLRAトランザクションを開始します。
- 座席が予約されると、座席予約サービスが、支払いを処理するために支払いサービスをコールします。
- 支払いサービスは、トランザクション参加側として既存のLRAトランザクションに参加します。
- 次に、支払いサービスは、MicroTxをコールしてXAトランザクションを開始するXAイニシエータ・サービスとして機能します。これが、顧客の銀行サービスから映画館の銀行サービスへの送金を開始します。
- 顧客の銀行サービスがXAトランザクションに登録し、DML操作を実行して一定金額を引き出し、レスポンスを返します。
- 支払いサービスは、一定金額を映画館の銀行サービスに預け入れする別のリクエストを開始します。
- XAトランザクション参加側である映画館の銀行サービスがXAトランザクションに登録し、DML操作を実行して一定金額を預け入れ、レスポンスを返します。
- 支払いサービスがXAトランザクションをコミットするのは、顧客の銀行へのリクエストと映画館の銀行へのリクエストの両方が正常に実行された場合のみです。何らかのエラーが発生すると、支払いサービスはコミットではなくロールバックをコールします。
- XAトランザクションをコミットした後、支払いサービスは、座席予約サービスに支払いステータスを返します。
- 支払いが成功した場合、座席予約サービスはMicroTxをコールしてLRAトランザクションを完了します。
- マイクロサービス対応トランザクション・マネージャが、支払いサービスおよび座席予約サービスの完了コールバックURIをコールし、LRAトランザクションを完了し、映画館の座席を予約します。
- 座席予約サービスが、予約された座席の詳細をユーザーに返します。
親トピック: サンプルLRAアプリケーションについて
7.2.2 KubernetesでのサンプルLRAアプリケーションの実行
- サンプルLRAアプリケーションのDockerイメージの構築
LRAサンプル・アプリケーションは、インストール・バンドルのinstallation_directory/otmm-<version>/samples/lra/lrademo
フォルダにあります。このフォルダには、3つのマイクロサービスのコード、YAMLファイルおよびHelmチャートが含まれています。 - LRAサンプル・アプリケーション・イメージのプッシュ
サンプル・アプリケーションの構築したDockerイメージをリモート・リポジトリにプッシュします。 - LRAのためのvalues.yamlファイルの更新
サンプル・アプリケーション・ファイルには、values.yaml
ファイル(サンプル・アプリケーションのマニフェスト・ファイル)も含まれ、これには、LRAサンプル・アプリケーションのデプロイメント構成の詳細が含まれています。 - LRAサンプル・アプリケーションのインストール
MicroTxをインストールしたKubernetesクラスタにLRAサンプル・アプリケーションをインストールします。 - LRAトランザクションの実行
親トピック: LRAサンプル・アプリケーションのデプロイ
7.2.2.1 サンプルLRAアプリケーションのDockerイメージの構築
LRAサンプル・アプリケーションは、インストール・バンドルのinstallation_directory/otmm-<version>/samples/lra/lrademo
フォルダにあります。このフォルダには、3つのマイクロサービスのコード、YAMLファイルおよびHelmチャートが含まれています。
7.2.2.2 LRAサンプル・アプリケーション・イメージのプッシュ
サンプル・アプリケーションの構築したDockerイメージをリモート・リポジトリにプッシュします。
構築したコンテナ・イメージは、ローカル・リポジトリで使用することができます。このイメージをリモート・リポジトリにプッシュする必要があります。Helmを使用してこのイメージにアクセスできるようにするためです。後で、Helmを使用してサンプル・アプリケーションをインストールします。
リモートDockerリポジトリのDockerイメージのタグを書き留めます。リモートDockerリポジトリからイメージをプルする際に、このタグを入力する必要があります。
7.2.2.3 LRAのためのvalues.yamlファイルの更新
サンプル・アプリケーション・ファイルには、values.yaml
ファイル(サンプル・アプリケーションのマニフェスト・ファイル)も含まれ、これには、LRAサンプル・アプリケーションのデプロイメント構成の詳細が含まれています。
サンプル・アプリケーションをKubernetesクラスタにデプロイするとき、HelmがリモートDockerレジストリからサンプル・アプリケーション・イメージをプルします。values.yaml
ファイルに、プルするイメージと、イメージのプル時に使用する資格証明を指定します。
values.yaml
ファイルに構成および環境の詳細を指定するには:
- 任意のコード・エディタで
values.yaml
ファイル(installation_directory/otmm-RELEASE/samples/lra/helmcharts/sampleappslra/values.yaml
フォルダにある)を開きます。このファイルにはサンプル値が含まれています。 - dockerコンテナにアップロードしたすべてのサンプル・アプリケーション・イメージの詳細を指定します。たとえば、
iad.ocir.io/mytenancy/lra/trip-manager-lra:v1
です。 - 変更内容を保存します。
7.2.3 Docker SwarmでのサンプルLRAアプリケーションの実行
- Dockerイメージの構築およびプッシュ
LRAサンプル・アプリケーションは、インストール・バンドルのinstallation_directory/otmm-<version>/samples/lra/lrademo
フォルダにあります。このフォルダには、ホテルと航空券の予約に使用される3つのサンプル・マイクロサービスのアプリケーション・コードが含まれています。 - LRAサンプル・アプリケーションのインストール
Docker SwarmにLRAサンプル・アプリケーションをインストールします。 - LRAトランザクションの実行
親トピック: LRAサンプル・アプリケーションのデプロイ
7.2.3.1 Dockerイメージの構築およびプッシュ
LRAサンプル・アプリケーションは、インストール・バンドルのinstallation_directory/otmm-<version>/samples/lra/lrademo
フォルダにあります。このフォルダには、ホテルと航空券の予約に使用される3つのサンプル・マイクロサービスのアプリケーション・コードが含まれています。
構築したDockerイメージに、作成したレジストリのアドレスをタグ付けすることが重要です。たとえば、198.51.100.1:5000
です。これは、アプリケーションをswarmに配布する際に必要です。
7.2.3.2 LRAサンプル・アプリケーションのインストール
Docker SwarmにLRAサンプル・アプリケーションをインストールします。
すべてのSwarmオブジェクトは、スタック・ファイルと呼ばれるマニフェストに記述されています。tmm-stack-compose.yaml
スタック・ファイルはinstallation_directory/otmm-<version>/samples/docker
にあります。このYAMLファイルには、LRAサンプル・アプリケーションおよびトランザクション・コーディネータのすべてのコンポーネントおよび構成が指定されます。このファイルを使用して、Docker Swarmでマイクロサービスを実行および管理します。
7.3 TCCサンプル・アプリケーションのデプロイ
- サンプルTCCアプリケーションについて
インストール・バンドルに含まれるサンプルTCCアプリケーションを使用して、TCCトランザクションでマイクロサービスとMicroTxが相互に作用する方法について説明します。 - KubernetesでのサンプルTCCアプリケーションの実行
- Docker SwarmでのサンプルTCCアプリケーションの実行
親トピック: サンプル・アプリケーションのデプロイ
7.3.1 サンプルTCCアプリケーションについて
インストール・バンドルに含まれるサンプルTCCアプリケーションを使用して、TCCトランザクションでマイクロサービスとMicroTxが相互に作用する方法について説明します。
installation_directory/otmm-<version>/samples/tcc
フォルダにあります。このフォルダには、3つのマイクロサービスのコード、YAMLファイルおよびHelmチャートが含まれています。サンプル・アプリケーションは、TCCトランザクション・プロトコルとMicroTxを使用してトランザクションを調整します。MicroTxライブラリはすでにサンプル・アプリケーション・コードと統合されています。
サンプルTCCアプリケーションによって実装されるシナリオでは、旅行代理店マイクロサービスが旅行を予約し、航空券予約サービスが航空券を予約し、ホテル予約マイクロサービスがホテルを予約します。旅行代理店サービスは、航空券予約サービスとホテル予約サービスの両方にアクセスします。顧客が航空券とホテルを予約すると、顧客が支払を完了して予約を確定するまで、その予約が押さえられています。何らかのエラーが発生すると、予約されていたリソースが取り消され、リソースはインベントリに戻されます。
次の図に示すサンプルTCCアプリケーションには、いくつかのマイクロサービスが含まれています。これはMicroTxを使用してTCCトランザクションを管理する方法を示しています。
サンプルTCCアプリケーションは、次のマイクロサービスで構成されます:
- MicroTx (TCCコーディネータ)
- 旅行代理店サービスは、トランザクション・イニシエータ・サービスです。ここで、TCCトランザクションが開始します。ホテル客室と航空券予約するAPIと取り消すAPIを提供します。旅行を予約する際に、このサービスが、航空券予約サービスとホテル予約サービスをコールします。また、トランザクションを完了するために、確定コールまたは取消しコールをトランザクション参加側サービスに送信します。Javaアプリケーションは
installation_directory/otmm-<version>/samples/tcc/java/travel-agent
にあり、Node.jsアプリケーションはinstallation_directory/otmm-<version>/samples/tcc/nodejs/travel-agent
にあります。 - ホテル予約サービスはトランザクションに参加するため、トランザクション参加側サービスとも呼ばれます。ホテル客室予約を確定するAPIと取り消すAPIを提供します。Javaアプリケーションは
installation_directory/otmm-<version>/samples/tcc/java/hotel-booking
にあり、Node.jsアプリケーションはinstallation_directory/otmm-<version>/samples/tcc/nodejs/hotel-booking
にあります。 - 航空券予約サービスはトランザクションに参加するため、トランザクション参加側サービスとも呼ばれます。航空券予約を確定するAPIと取り消すAPIを提供します。Javaアプリケーションは
installation_directory/otmm-<version>/samples/tcc/java/flight-booking
にあり、Node.jsアプリケーションはinstallation_directory/otmm-<version>/samples/tcc/nodejs/flight-booking
にあります。
サンプルTCCアプリケーションのコードは、Node.jsおよびJavaで提供されています。サンプル・アプリケーションを実行する際には、3つのサンプル・マイクロサービスすべてをNode.jsまたはJavaで構築します。Javaの旅行代理店サービスとNode.jsのホテル予約サービスを一緒に実行しようとしないでください。
親トピック: TCCサンプル・アプリケーションのデプロイ
7.3.2 KubernetesでのサンプルTCCアプリケーションの実行
- サンプルTCCアプリケーションのDockerイメージの構築
TCCサンプル・アプリケーションは、インストール・バンドルのinstallation_directory/otmm-RELEASE/samples/tcc
フォルダにあります。 - TCCサンプル・アプリケーション・イメージのプッシュ
サンプル・アプリケーションの構築したDockerイメージをリモート・リポジトリにプッシュします。 - TCCのためのvalues.yamlファイルの更新
サンプル・アプリケーション・フォルダには、values.yaml
ファイル(サンプル・アプリケーションのマニフェスト・ファイル)も含まれ、これには、TCCサンプル・アプリケーションのデプロイメント構成の詳細が含まれています。 - TCCサンプル・アプリケーションのインストール
MicroTxをインストールしたKubernetesクラスタにTCCサンプル・アプリケーションをインストールします。 - TCCトランザクションの実行
このアプリケーションを実行すると、ホテル客室と航空券が予約され、仮予約が行われます。
親トピック: TCCサンプル・アプリケーションのデプロイ
7.3.2.1 サンプルTCCアプリケーションのDockerイメージの構築
TCCサンプル・アプリケーションは、インストール・バンドルのinstallation_directory/otmm-RELEASE/samples/tcc
フォルダにあります。
7.3.2.2 TCCサンプル・アプリケーション・イメージのプッシュ
サンプル・アプリケーションの構築したDockerイメージをリモート・リポジトリにプッシュします。
構築したコンテナ・イメージは、ローカル・リポジトリで使用することができます。このイメージをリモート・リポジトリにプッシュする必要があります。Helmを使用してこのイメージにアクセスできるようにするためです。後で、Helmを使用してサンプル・アプリケーションをインストールします。
リモートDockerリポジトリのDockerイメージのタグを書き留めます。リモートDockerリポジトリからイメージをプルする際に、このタグを入力する必要があります。
7.3.2.3 TCCのためのvalues.yamlファイルの更新
サンプル・アプリケーション・フォルダには、values.yaml
ファイル(サンプル・アプリケーションのマニフェスト・ファイル)も含まれ、これには、TCCサンプル・アプリケーションのデプロイメント構成の詳細が含まれています。
Helmを使用してサンプル・アプリケーションをKubernetesクラスタにデプロイするとき、Helmは、values.yaml
ファイルに指定されている詳細に基づいて、リモートDockerレジストリからサンプル・アプリケーション・イメージをプルします。Dockerイメージの名前を指定してvalues.yaml
ファイルを更新します。
リモート・リポジトリにプッシュしたDockerイメージの名前を、values.yaml
ファイル内で更新するには:
7.3.2.5 TCCトランザクションの実行
このアプリケーションを実行すると、ホテル客室と航空券が予約され、仮予約が行われます。
トランザクションを開始する前に、アクセス・トークンを作成し、MicroTxライブラリ・ファイルをインストールして、Istioイングレス・ゲートウェイの外部IPアドレスを書き留める必要があります。
7.3.3 Docker SwarmでのサンプルTCCアプリケーションの実行
- サンプルTCCアプリケーションのDockerイメージの構築
TCCサンプル・アプリケーションは、インストール・バンドルのinstallation_directory/otmm-RELEASE/samples/tcc
フォルダにあります。 - TCCサンプル・アプリケーションのインストール
Docker SwarmにTCCサンプル・アプリケーションをインストールします。 - サンプルTCCアプリケーションの実行
このアプリケーションを実行すると、ホテル客室と航空券が予約され、仮予約が行われます。
親トピック: TCCサンプル・アプリケーションのデプロイ
7.3.3.1 サンプルTCCアプリケーションのDockerイメージの構築
TCCサンプル・アプリケーションは、インストール・バンドルのinstallation_directory/otmm-RELEASE/samples/tcc
フォルダにあります。
7.3.3.2 TCCサンプル・アプリケーションのインストール
Docker SwarmにTCCサンプル・アプリケーションをインストールします。
すべてのSwarmオブジェクトは、スタック・ファイルと呼ばれるマニフェストに記述されています。tmm-stack-compose.yaml
スタック・ファイルはinstallation_directory/otmm-<version>/samples/docker
にあります。このYAMLファイルには、TCCサンプル・アプリケーションおよびトランザクション・コーディネータのすべてのコンポーネントおよび構成が指定されます。このファイルを使用して、Docker Swarmでマイクロサービスを実行および管理します。