※ 本記事は、Todd Littleによる”MicroTx Enterprise Edition Features“を翻訳したものです。
2024年2月21日
Oracleは最近、MicroTx Enterprise Editionの提供を発表しました。この新しいリリースでは、多くの新しいエンタープライズ機能が追加され、MicroTx Enterprise Editionは様々なエンタープライズ・アプリケーションに適しています。このブログ記事では、これらの新機能の詳細を説明します。
トランザクション・スループットに制限なし
MicroTx Enterprise Editionで最も重要な変更の1つは、トランザクション・スループット制限の解除です。MicroTx Freeは開発用であり、本番環境やエンタープライズレベルのデプロイメント向けではないため、1時間あたり4,800トランザクションしか許可されていません。MicroTx Enterprise Editionのリリースでは、この制限はなくなり、MicroTx Enterprise Editionをデプロイすると秒間数100から数1000のトランザクションを処理できます。このレベルのスループットは、ほとんどすべてのアプリケーションの要件を超えています。トランザクション・ボリュームの観点から見ると、Visaは2023年9月30日に終了する12か月で2760億件のトランザクションを処理したと主張しており、これは1秒当たり平均8,700件のトランザクションに相当します。
管理コンソール
エンタープライズ・ユーザーには、分散トランザクションをモニターおよび管理する方法が必要です。新しい管理コンソールをMicroTx Enterprise Editionに追加すると、ユーザーは、実行中のトランザクション、コーディネータ・クラスタのパフォーマンス・メトリック、ヒューリスティックな結果によるトランザクションのコミット/ロールバックなどを確認できます。

トランザクション・コーディネータ・クラスタ
エンタープライズ・ユーザー向けには、このリリースのMicroTx Enterprise Editionにて、信頼性、可用性、スケーラビリティおよびパフォーマンス(RASP)機能を大幅に向上させます。その多くは、MicroTx Enterprise Editionトランザクション・コーディネータの複数のコピーをクラスタの一部として実行する機能など、主要な機能から得られます。これにより、MicroTx Enterprise Editionは、アプリケーションの要求に応じてスケール・アウトおよびスケール・インできます。より多くのトランザクション・スループットが必要な場合は、MicroTx Enterprise Editionトランザクション・コーディネータのレプリカの数を増やすことができます。
クラスタリング・サポートでパフォーマンスを向上させるには、MicroTx Enterprise Editionがデプロイされるサービス・メッシュでリクエスト・アフィニティをサポートする必要があります。つまり、イニシエータとトランザクション内の他の参加者からのリクエストは、同じトランザクション・コーディネータ・インスタンスに配置される必要があります。これは通常、HTTPヘッダーをハッシュし、そのハッシュを使用してリクエストの配信先となるトランザクション・コーディネータ・インスタンスを決定することで、サービス・メッシュによって提供されます。これによって、トランザクション・コーディネータは、関連するすべてのリクエストが通常同じインスタンスで終了するため、トランザクション状態をメモリーにキャッシュすることもできます。トランザクションの一部であるリクエストが、障害やスケーリング操作によって別のインスタンスに着地した場合、そのインスタンスはetcdやOracle Databaseに保持された永続的なトランザクション状態からトランザクション状態をリカバリできます。
永続トランザクション状態
障害発生時にトランザクションを適切に処理できるようにするには、トランザクション・コーディネータが失敗した場合に、トランザクションの状態を保持する必要があります。MicroTx Enterprise Editionでは、etcdまたはOracle Databaseへのトランザクション状態の永続化がサポートされています。どちらも、適切な構成情報を設定するだけで使用できます。
トランザクション状態を共有永続ストアに格納することで、MicroTx Enterprise Editionトランザクション・コーディネータは様々な障害からリカバリできます。コーディネータ・インスタンスに障害が発生した場合、別のトランザクション・コーディネータは、障害が発生したコーディネータによって処理されている処理中のトランザクションの処理を引き継ぐことができます。その障害がクラッシュ、ネットワーク障害、オペレータ・エラーまたはその他の理由であるかどうかにかかわらず、後続のリクエストは残りのトランザクション・コーディネータ・インスタンスの1つによって処理されます。これにより、障害が起きたとしてもほとんどのトランザクションを正常に処理できます。データベースがトランザクションの一部を早期にコミットまたはロールバックするなど、ヒューリスティックな結果を引き起こす可能性のある障害が常に存在します。
XAトランザクションに対するRACサポート
Oracle RACデータベースでは、トランザクション・ブランチがRACインスタンスにまたがらないことが必要です。つまり、トランザクション・マネージャは、RACインスタンス参加者が使用していることを認識するか、一度に1つのRACインスタンスでのみアクティブなシングルトン・データベース・サービスを使用する必要があります。MicroTx Enterprise Editionでは、参加者のマイクロサービスがトランザクションに登録するときに、RACインスタンスIDをトランザクション・コーディネータにレポートすることでこれを処理します。これにより、コーディネータは、新しいトランザクション・ブランチが必要かどうかを判断できます。この機能がないと、RACデータベースを使用するマイクロサービスはシングルトン・データベース・サービスを使用する必要があります。
共通XID
分散トランザクションのXAパターンでは、各トランザクション・ブランチを準備してコミットする必要があります。多くのブランチがあるということは、トランザクションのコミット時に送信する必要がある多くのメッセージがあるということになります。トランザクション・ブランチの増殖を防ぐために、MicroTx Enterprise Editionは、可能な場合はブランチの再利用を試みます。これを行うには、参加者のマイクロサービスがトランザクションに登録するときに使用しているリソース・マネージャをレポートします。コーディネータは、この情報を使用して、新しいトランザクション・ブランチを作成する必要があるかどうかを判断します。リソース・マネージャに既存のトランザクション・ブランチがすでに存在する場合、コーディネータは同じXID (グローバル・トランザクション識別子およびブランチ修飾子)を返すため、別のブランチが不要になります。リソース・マネージャがトランザクションに初めて登録される場合、コーディネータは新しい一意のブランチ修飾子を返します。すべての参加者がOracle Databaseなどの同じリソース・マネージャを使用している場合、トランザクションは1フェーズでコミットされ、多くのメッセージが節約され、コーディネータがそのトランザクション・ログに書き込む必要がなくなります。これにより、パフォーマンスが劇的に向上する可能性があります。
XAトランザクション・プロモーション
XAトランザクションを起動すると、有効になっている場合、MicroTx Enterprise Editionは実際にローカル・トランザクションを開始します。トランザクションは、別の参加者がトランザクションに関与するまでローカル・トランザクションのままになります。その時点で、MicroTx Enterprise Editionは、ローカル・トランザクションを完全なXAトランザクションに昇格します。これにより、トランザクションを開始するコストは最小限に抑えられ、昇格が必要になる場合があります。現在、昇格の決定は、別のマイクロサービスにコールが行われるたびに行われます。その時点で、MicroTx Enterprise Editionは、呼び出されたマイクロサービスが参加者にならない場合でも、トランザクションを昇格します。これは現在、Oracle Databaseでのみ機能します。
Grafanaダッシュボード
MicroTx Enterprise Editionリリースには、Grafanaダッシュボードが含まれています。MicroTx Enterprise Editionコーディネータは、この図に示すように、Prometheusによって収集され、Grafanaを使用してビジュアル化できるメトリックを提供します。

まとめ
この新しいMicroTx Enterprise Editionは、エンタープライズ・アプリケーションに必要なすべての機能、パフォーマンスおよび回復力を提供します。開発者は、マイクロサービス・ベースのアプリケーションでデータの一貫性要件に対処するために、MicroTx Enterprise Editionに安心して頼るべきです。マイクロサービスの開発とテスト中にMicroTx Freeから開始し、本番に移行するときにMicroTx Enterprise Editionに切り替えることもできます。
