| ロードバランシングに関する検討事項 | |
ここでは、Web アプリケーションまたは Web サービスをロードバランシング環境で実行する場合の検討事項を示します。
アーキテクト、開発者、および運用チームがこれらの検討事項について考慮する必要があります。
ここでは、次のシナリオを考えます。(a) ブラウザーまたはその他のアプリケーション (クライアント) がロードバランサーに接続するか、リクエストを送信します。(b) ロードバランサーは負荷を分散するために使用されています。(c) その対象となる Web アプリケーションまたは Web サービスは、ファームまたはクラスターの複数のインスタンスで実行されています。(d) それらのインスタンスは、1 つまたは複数のデータベース、およびその他の外部のリソースやサービスに接続しています。
ここで説明する検討事項および推奨事項は、以下に影響する場合があります。
- アーキテクチャに関する決定 (例: 分散キャッシュ処理エンジンを使用するかどうか)
- アプリケーションの開発方法 (例: Blob を使用するかどうか)
- アプリケーションの設定 (例: ログの処理方法)
- ロードバランサーの設定 (例: スティッキーセッションを使用するかどうか)
- ファームの各インスタンスの設定 (例: コンテナの設定で一時ファイルの保存を許可するかどうか)
この処理は、リクエスト間でセッション情報を維持する必要があるアプリケーションに必要です。
GeneXus の次の機能や機能オプションには、セッション状態の処理が必要です:
これらのオプションを 1 つまたは複数使用する場合は、何らかの形でセッションの複製、保持、サーバーアフィニティ (スティッキーセッション) を使用します。
詳細については、「セッション状態の処理」を参照してください。
GeneXus が返すローカルのリソースやオブジェクトへのリンクはすべて Web アプリケーションからの相対 URL であるため、明示的に絶対 URL を作成し、ブラウザーまたはクライアントに返す必要がない限り、何もする必要はありません。絶対 URL が必要な場合は、データベースまたは設定ファイルからベースパスを取得し、ベースパス + Link 関数を使用した相対パスで絶対 URL の文字列を作成します。
ファイルの保持にローカル ファイル システムを使用することは避けるようにします。ファイルの保持には、外部ストレージプロバイダー、具体的には Storage Provider API を使用します。
使用を避けられない場合は、サーバーアフィニティ (スティッキーセッション) を使用します。
ファイルの保存が PaaS やインフラストラクチャ構成で認められない場合があることに注意してください。
このデータタイプの使用は避け、代わりに BlobFile データタイプを使用します。
使用を避けられない場合は、サーバーアフィニティ (スティッキーセッション) を使用します。
このデータタイプを使用した場合、一時ファイルが保存されますが、これが PaaS やインフラストラクチャ構成で認められない場合があることに注意してください。
これらを保持するには、オブジェクトストレージを使用します。そのためには、[ Storage Provider ] プロパティを外部ストレージプロバイダーに設定するか、Storage Provider API を使用します。外部ストレージプロバイダーを使用した場合、こうしたバイナリによるデータベースのオーバーロードを回避できます。また、データベースサーバーおよびアプリケーションサーバーの負荷も削減できます。これらのリソースが、ブラウザーによるリソースへのリクエストに起因するトラフィックの影響を受けないからです。
保持にオブジェクトストレージを使用できない場合は、サーバーアフィニティ (スティッキーセッション) を使用します。
Web 通知機能 (Client.Socket 外部オブジェクト、Server.Socket 外部オブジェクト) を使用するときは、独立したソケットサーバーを使用します。そうしないと、ブロードキャストを期待どおりにブラウザーに届けることができません。
詳細情報: 外部アプリケーションから通知メッセージを受信し、処理する方法
「GeneXus アプリケーションでのキャッシュ処理」で説明しているように、アプリケーションでキャッシュ処理のメカニズムが使用される場合があります。GeneXus アプリケーションの分散キャッシュを設定し、使用するようにします。
分散キャッシュプロバイダーを使用できない場合は、サーバーアフィニティ (スティッキーセッション) を使用します。
ログ情報は、生成されるプログラムおよび Log 外部オブジェクトによって作成されます。
エージェントを使用して取り込み、外部あるいは一元管理されるリポジトリに送信します。
例:
前述のすべての検討事項は、スマート デバイス アプリケーションのサーバー側にある REST サービスに該当します。
[ Smart Devices Cache Management ] プロパティが「On」に設定されている場合 (既定の設定)、キャッシュ処理に関する前述の推奨事項を参照してください。
また、Start で割り当てられる Load イベントや User イベントの変数をロードすることは避けてください。避けられない場合は、セッション状態の処理に関する前述の推奨事項を参照してください。
GAM および GXflow では、内部で以下が使用されます。
このため、このドキュメントの対応するセクションに示す検討事項について考慮してください。
|
|
|
|
|