Oracle Tuxedo システム入門
Oracle Tuxedo システムの基本概念
以下の節では、Oracle Tuxedo プログラミング環境の概要を説明します。
Oracle Tuxedo システムとは
Oracle Tuxedo システムは、メッセージ ベースの通信、および必要に応じて分散トランザクション処理を行って、複数のプラットフォーム、データベース、およびオペレーティング システムにわたってアプリケーションを分散するミドルウェア製品です。
クライアント/ サーバ アプリケーションでは、ミドルウェアを使用して、複数のサーバ間で処理を分散したり、分散トランザクションを管理したり、複数のデータベース プラットフォームを統合することができます。ミドルウェア システムは、オンライン トランザクション処理 (OLTP) システムと呼ばれることもあります。
Oracle Tuxedo システムは、AT&T、UNIX System Laboratories (USL)、Novell、BEA Systems、および Oracle などのテクノロジ企業のグループが 20 年以上の年月をかけて開発した完成度の高い製品です。このシステムは、開発プラットフォームであると同時に、実行プラットフォームでもあります。Oracle Tuxedo システムは、オペレーティング システムの拡張として機能します。
Oracle Tuxedo システムでは、以下が実現されています。
異種クライアント/サーバ環境における分散オンライン トランザクション アプリケーションの作成と集中管理のための業界標準。
アプリケーション開発者にとって使いやすいシステム。開発者は、使用するサーバのロケーション、ルーティング、プラットフォームなどの詳細を完全に把握する必要はありません。Oracle Tuxedo アプリケーションでは、プログラムのこのような要素が透過的に扱われています。
信頼性が高く、パフォーマンスに優れ、管理しやすい分散システムを作成して管理し、維持するための基盤。
アーキテクチャに関する機能
Oracle Tuxedo システムは、ATMI アプリケーションのアーキテクチャ的側面を実現する多くの機能を提供します。
分散サービス - 異なるハードウェア プラットフォーム上に存在するアプリケーション サービスやシステム サービスに対して、透過的にアクセスすることができます。
高速なコネクションレス型通信 - クライアントがサーバではなく掲示板に接続するので、システムのパフォーマンスが向上します。
サーバの透過性 - 掲示板上のサービス ディレクトリによってサービス名がサーバにマップされるので、クライアントがサーバを識別する必要はありません。
スケーラビリティ - アプリケーション設計者が、サービスおよびサーバを簡単に複製したり分散できるので、要求されるシステム ロードの変化にすばやく対応して Tuxedo アプリケーションの規模を調整できます。プログラムでしきい値を設定して、Oracle Tuxedo システムで自動的にサーバを新しく作成したり、停止することができます。
管理に関する機能
Oracle Tuxedo システムは、ATMI アプリケーションの管理的側面を実現する多くの機能を提供します。
パスワード セキュリティおよびアクセス制御セキュリティ - パスワード セキュリティにより、アプリケーション設計者は、初期化の際にパスワードを要求すること (認証) によってアクセスを制御できます。アクセスは、権限によってさらに制御できます。これは、特定のアプリケーション サービスへのアクセスを制限する手段で、明示的なパーミッションを与えられ、認証を受けたクライアントだけがサービスにアクセスできます。
アプリケーション固有のイベントおよびシステム イベントの通知 - Oracle Tuxedo システムでは、サーバが予期せず終了したりネットワークで障害が発生したりといったアプリケーション イベントやシステム イベントの詳細情報が提供されます。クライアントまたはサーバによってイベントがポストされると、Tuxedo パブリッシュ アンド サブスクライブ コンポーネントがそのイベントのすべてのサブスクライバを確認し、各サブスクリプションの指定に従って適切な処理を行います。
管理情報ベース (MIB) - 独自のプログラムによってアプリケーションのモニタ、コンフィグレーション、およびチューニングを行うことができる管理用のインタフェースです。これは、フィールド操作言語 (FML) 属性として定義され、実装に依存しない管理データベースです。情報を照会したり、変更することができます。
Web ベースの管理 - World Wide Web を通して Oracle Tuxedo アプリケーションのコンフィグレーションと制御を行うグラフィカル ユーザ インタフェースです。
プログラミングに関する機能
Oracle Tuxedo システムは、ATMI アプリケーションのプログラミングの側面を実現する多くの機能を提供します。
通信方法 - Oracle Tuxedo システムのアプリケーション プログラミング インタフェース (API) は、X/Open の XATMI インタフェースのスーパーセットであり、アプリケーション トランザクション モニタ インタフェース (ATMI) と呼ばれます。Tuxedo の ATMI には、分散アプリケーションを作成するための通信方法が豊富に提供されています。
分散トランザクション処理 (DTP) - 分散アプリケーション全体で行われている作業をアトミックに完了することができます。これは、どの OLTP システムにおいても重要な特徴の 1 つです。
型付きバッファ - 異種プラットフォーム間でアプリケーション データを透過的に処理することができます。
X/Open XA 準拠 - Oracle Tuxedo システムは、トランザクション データベース システム (リソース マネージャ) に関する X/Open インタフェース標準に準拠しています。そのため、アプリケーション設計者はデータの整合性を維持しながら、アプリケーション内で複数のデータベースを混在させ、そのデータベースに合致させることができます。
X/Open TX 準拠 - Oracle Tuxedo システムは、トランザクションの境界判定に関する X/Open インタフェース標準に準拠しています。Oracle Tuxedo は、トランザクションの境界判定のための独自の ATMI インタフェースも提供します。
クライアント/サーバ モデルの分析
クライアント/サーバ アーキテクチャでは、クライアント (サービスを必要とするユーザを表すプログラム) とサーバ (サービスを提供するプログラム) は、それぞれ別個の論理オブジェクトであり、ネットワーク上で通信して共同で処理を行います。クライアントは、サービスを要求し、その要求に対する応答を受け取ります。サーバは、要求を受け取って処理し、要求された応答を送り返します。
クライアント/サーバ アーキテクチャの特徴
クライアント/サーバ アーキテクチャには以下の特徴があります。
非対称のプロトコル - クライアントとサーバの間の多対 1 の関係。クライアントは、常にサービスを要求することによって会話を開始します。サーバは、受動的にクライアントからの要求を待ちます。
サービスのカプセル化 - サーバは、サービスを要求するメッセージを受け取り、それをどのように処理するかを決定します。サーバとクライアントによって使用されるメッセージ インタフェースが変更されない限り、クライアントに影響を与えずにサーバをアップグレードできます。
整合性 - サーバのコードとデータを集中管理することにより、メンテナンスのコストを抑えることができ、共有データの整合性が保護されます。同時に、クライアントの個別性と独立性を維持できます。
位置透過性 - サーバは、クライアント プロセスと同じマシン、またはネットワーク上のほかのマシンに存在するプロセスです。通常、クライアント/サーバ ソフトウェアでは、サービス要求をリダイレクトすることによって、サーバのロケーションがクライアントに隠ぺいされます。クライアントがサーバの位置を意識する必要はありません。
ネームスペース透過性 - クライアントは、ネットワーク上のどのサーバの検索にも同じ命名規約 (およびネームスペース) を使用できる必要があります。
メッセージ ベースの交換 - クライアントとサーバは、メッセージを使用して、サービス要求と応答を交換できる疎結合のプロセスです。
モジュール方式の拡張可能な設計 - クライアント/サーバ アプリケーションはモジュール方式で設計されており、フォルトトレラントにすることができます。フォルトトレラントなシステムでは、障害が発生してもアプリケーション全体が停止することはありません。フォルトトレラントなクライアント/サーバ アプリケーションでは、異常終了したサーバ上で提供されていたサービスがほかのアクティブなサーバ上で利用できる限り、1 つ以上のサーバが異常終了しても、システム全体が停止することはありません。モジュール方式のもう 1 つの利点として、クライアント/サーバ アプリケーションが、1 つ以上のサービスまたはサーバを追加したり停止することによって、システム ロードの増加や減少に自動的に対応できます。
プラットフォームからの独立性 - 理想的なクライアント/サーバ ソフトウェアは、ハードウェアやオペレーティング システムのプラットフォームに依存しないので、クライアントとサーバで異なるプラットフォームを使用できます。クライアントとサーバは、それぞれが実行する作業のタイプを最適化して、異なるオペレーティング システムを使用する異なるハードウェアにデプロイできます。
再利用可能なコード - サービス プログラムを複数のサーバ上で使用できます。
スケーラビリティ - クライアント/サーバ システムは、水平方向または垂直方向に規模を調整できます。水平方向の調整とは、クライアント ワークステーションの追加または削除を意味します。パフォーマンスにはわずかにしか影響しません。垂直方向の調整とは、より大型で高速のサーバ マシンへの移行、またはサーバ マシンの追加を意味します。
クライアント/サーバ機能の分離 - クライアント/サーバとは、同じマシンまたは別のマシン上で実行されるプロセス間の関係です。サーバ プロセスは、サービスの供給者です。クライアントは、サービスのコンシューマです。クライアント/サーバでは、両者の機能がはっきりと区別されます。
共有リソース - 1 つのサーバが多くのクライアントに対してサービスを同時に提供し、共有リソースに対するアクセスを制御できます。
2 層および 3 層のクライアント/サーバ アーキテクチャの違い
すべてのクライアント/サーバ アプリケーションには、次の 3 つの機能単位が含まれています。
プレゼンテーション ロジックまたはユーザ インタフェース (たとえば、ATM マシン)
ビジネス ロジック (たとえば、顧客が口座残高を照会するためのソフトウェア)
データ (たとえば、顧客の口座レコード)
これらの機能単位は、クライアント プログラムの構成要素またはアプリケーション内の 1 つまたは複数のサーバ プログラムの構成要素になります。数多くの種類のアーキテクチャからどれを選択するかは、次の図に示されているように、アプリケーションをどのように分割するか、そして階層間の通信にどのようなミドルウェアを使用するかによって決まります。
2 層クライアント/サーバ アプリケーションでは、ビジネス ロジックがクライアント上のユーザ インタフェース内に埋め込まれているか、またはサーバ上のデータベース内にストアド プロシージャとして格納されています。または、ビジネス ロジックがクライアントとサーバ間で分割されている場合もあります。ストアド プロシージャを含むファイル サーバやデータベース サーバは、2 層アーキテクチャの一例です。
3 層クライアント/サーバ アプリケーションでは、ビジネス ロジックがデータやユーザ インタフェースから切り離された中間層に存在します。このような方法で、プロセスをユーザ インタフェースやデータベースと切り離して管理およびデプロイすることができます。また、3 層システムでは、複数のソースからのデータを統合することもできます。
ニーズに応じたクライアント/サーバの各種のアーキテクチャ
クライアント/サーバ アーキテクチャは、以下の各状況におけるニーズに対応できます。
小規模な事業およびラップトップ - クライアント、ミドルウェア ソフトウェア、および大部分のビジネス サービスが同じマシン上で動作します。この方法は、歯科医院、在宅業務、ラップトップ コンピュータを多用する出張者などの小規模な事業に使用することをお勧めします。
中小企業および社内の部署 - LAN ベースの単一サーバ アプリケーションを必要とします。このタイプのアプリケーションのユーザには、複数の医師を擁する病院、複数の部署がある企業、複数の支店を持つ銀行など、中小規模のビジネスが該当します。このタイプのアプリケーションでは、複数のクライアントが 1 つのローカル サーバと通信します。管理業務は単純です。セキュリティはマシン レベルで実装され、障害は簡単に検出できます。
大企業 - さまざまな機能を提供する複数のサーバを必要とします。社内ネットワーク、イントラネット、およびインターネット上に複数のサーバが存在し、そのすべてが高いスケーラビリティを持ちます。サーバは、機能、リソース、またはデータベースごとに分割したり、また障害耐久性やパフォーマンスの向上のために複製することもできます。これは、強力かつ柔軟性の高いモデルです。このクライアント/サーバ モデルでは、アプリケーションがうまく構築されているかどうかが重要です。作業をサーバ間で分担したり、あるサーバの作業をほかのサーバに委託する場合もあります。
クライアント/サーバ モデルにおける Oracle Tuxedo システム
Oracle Tuxedo システムは、クライアント/サーバ モデルの中央に配置されます。Oracle Tuxedo アプリケーションでは、クライアントがログインし、アプリケーションによって提供されるサービスを要求します。Oracle Tuxedo システムでは、透過的な掲示板を通してこれらのサービスが提供されます。掲示板には、サービスを宣言するグローバル ディレクトリが定義されています。
たとえば、次の銀行業務サンプル アプリケーションの場合、掲示板には預け入れ、引き出し、残高照会などのサービスが宣言されます。この後、Oracle Tuxedo システムが、要求されたサービスを提供できるサーバを該当する支店で見つけます。
この銀行業務サンプル アプリケーションでは、Oracle Tuxedo アプリケーションを構成する以下の基本単位が示されています。
クライアント - ユーザからの入力を収集し、Oracle Tuxedo システムを通して要求をサーバに送信した後、サーバからの応答を収集してユーザに配信するプログラム。
サーバ - アプリケーションを定義する一連のサービスに、ビジネス ロジックがカプセル化されたプログラム。
ミドルウェア - クライアントとサーバ間のやり取りをサポートするために必要なあらゆる分散ソフトウェア。これは、クライアントがサーバからサービスを取得するための手段です。ミドルウェアは、クライアント (要求の発行と応答の受信) およびサーバ (応答の発行) によって使用される API 関数と、クライアントの要求とサーバの応答をネットワーク上で転送するためのメッセージング パラダイムで構成されます。ミドルウェアには、クライアント ユーザ インタフェース、アプリケーション ロジック、またはサーバによって提供されるサービスは含まれません。
Oracle Tuxedo 銀行業務サンプル アプリケーションでは、クライアント (現金自動預け払い機および銀行窓口) が要求を行い、(支店の) サーバがサービスと応答を提供します。たとえば、ある顧客が、現金自動預け払い機を使って自分の当座預金の残高を調べるとします。現金自動預け払い機 (クライアント) は、残高を取得するためにサーバを呼び出します。サーバは要求を受信し、残高を取得し、その情報を現金自動預け払い機に送信します。
Oracle Tuxedo のクライアントとは
クライアントとは、ユーザからの要求を収集し、その要求を処理できるサーバに渡すプログラムです。アプリケーションのフロント エンドの一部として、PC またはワークステーション上に置くことができます。また、ATM マシンなどの通信装置を読み取るソフトウェアの中に埋め込むこともできます。このような通信装置からデータが収集され、Oracle Tuxedo サーバによって処理される前にフォーマット処理されます。
プログラムがクライアントになるには、アプリケーション トランザクション モニタ インタフェース (ATMI) と呼ばれる Oracle Tuxedo の関数およびプロシージャのライブラリを呼び出せることが必要です。ATMI は、いくつかの言語バインディングでサポートされています。
クライアントは、ATMI のクライアント初期化ルーチンを呼び出すことによって、Tuxedo アプリケーションに参加します。アプリケーションに一度参加すると、クライアントはトランザクション境界を定義したり、アプリケーションのほかのプログラムと通信するための ATMI 関数を呼び出すことができるようになります。クライアントは、ATMI 終了関数を呼び出すことによってアプリケーションから分離します。必要な場合だけアプリケーションに参加し、必要なタスクが完了したら分離するようにすると、ほかのクライアントやサーバが使用できるように Oracle Tuxedo システムのリソースを解放できます。
分散アプリケーションを構築する場合、ビジネスに関して、処理対象の情報がどのように集められて提供されるかを決定する必要があります。ATMI 関数を呼び出す場所やタイミングは、ビジネス ロジックやビジネス ルールに従って自由に決めることができます。ある Oracle Tuxedo アプリケーションに参加し、いくつかのタスクを実行してこのアプリケーションから分離した後、別の Oracle Tuxedo アプリケーションに参加して別のタスクを実行することができます。マルチコンテキスト アプリケーションを使用している場合は、どのアプリケーションからも分離せずに、複数のアプリケーションでタスクを実行することができます。
Oracle Tuxedo サーバとは
Oracle Tuxedo サーバとは、一連のサービスをモニタし、それらを要求したクライアントに対して自動的にディスパッチするプロセスです。それに対して、サービスとは、ビジネスに必要な特定のタスクを実行するサーバ プログラム内の関数です。たとえば、銀行には、預け入れを受け取るサービスと、口座残高を報告するサービスが用意されています。あるサーバが、この両方のサービスをクライアントから受け取ったとします。そのサーバは、その責任として該当するサービスに各要求をディスパッチします。
サービス関数は、SQL などのデータベース インタフェースへの呼び出しを通じて、ビジネス ロジックを実装します。また、ATMI への呼び出しによって、ほかのサービス、キュー、またはリソースにアクセスする場合もあります。これらのサービスが存在するサーバでは、クライアントに応答するか、またはクライアントの要求を別のサービスに送信します。
Oracle Tuxedo システムによって提供されるアプリケーション処理サービス
Oracle Tuxedo システムでは、アプリケーション開発者が以下の機能をアプリケーションに実装するためのサービスが提供されています。
Tuxedo アプリケーション処理サービスの説明については、「Oracle Tuxedo ATMI のアーキテクチャ」を参照してください。
Oracle Tuxedo システムによって提供される管理サービス
Oracle Tuxedo システムでは、アプリケーション管理者が以下の管理タスクを行うためのサービスが提供されています。
アプリケーションの起動と停止
中央集中型のアプリケーション コンフィグレーション
分散アプリケーション管理
アプリケーションの動的な再コンフィグレーション
ワークステーション管理
セキュリティ管理
トランザクション管理
メッセージ キューイング管理
イベント管理
管理サービスを提供する Tuxedo システム管理プロセスの説明については、「Oracle Tuxedo システムの管理とサーバ プロセス」および「Oracle Tuxedo の管理ツール」を参照してください。管理サービスの詳しい使い方については、『Oracle Tuxedo アプリケーションの設定』および『Oracle Tuxedo アプリケーション実行時の管理』を参照してください。