原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/domain_partitions_for_multi_tenancy
WebLogic Server 12.2.1での顕著な機能改善の一つとして、Multi-tenancyのサポートがあります。 マルチテナント対応のために、ドメインパーティション、リソースグループ、リソースグループテンプレートなどがWebLogic Serverの構成とランタイムに対し追加されました。このエントリではドメインパーティション、リソースグループ、リソースグループテンプレートなどがどういうもので、どういったところに適しているのかをご紹介します。
12.2.1でももちろん同じように管理対象サーバやクラスタをアプリケーションやリソースのターゲットとして指定できますが、ドメイン中の1個以上のパーティションを作成でき、各パーティションには、アプリケーションやリソースを含みます。
各パーティションのターゲットとして、パーティションのアプリケーションやリソースを実行させたい管理対象サーバーのクラスタを指定できます (ターゲットの詳細については後述します)。同一クラスタに複数のパーティションをターゲットにしている場合でも、独立して各パーティションを起動したりシャットダウンしたりすることができます。異なるパーティションに異なるセキュリティレルムを使わせることができます。
加えて、各パーティションに対し、パーティションを制御できるパーティション管理者を指定できます。パーティションがmicro-container、つまりパーティションを含むドメインのスライスを認知しはじめることでしょう。
ここで、HRソリューションのJava EEアプリケーションとそのリソースがあると仮定します。そして、財務アプリケーションパッケージとそのリソースのセットが別にあるものとします。12.1.3では、すべてのアプリケーションおよびすべてのリソースをドメインにデプロイします。異なるクラスタをデプロイ対象にするかもしれません。2個のアプリケーションで別々に起動、停止を実施したい場合、実際のところそうする必要があるでしょう。または、12.1.3では別のWebLogicドメインを使う可能性があります。一方のドメインにHRアプリケーション、もう一方に財務アプリケーションといった具合です。確かにこの方法ではターゲット、起動、停止の自由度が増しますが、より多くのドメインを実行するコストも増していきます。
12.2.1では、リソースグループという、関連するJava EEアプリケーションやリソースのコレクションを導入しています。HRアプリケーションとリソースを一つのリソースグループにまとめ、財務アプリケーションとそのリソースを別のリソースグループにまとめることができます。各パーティションには複数のリソースグループを含めることができるので、もっとおもしろいことになります。
先述のように、2個の別のドメインを使おう(一つはHRアプリケーション、もう一つは財務アプリケーション)と考えている場合、2個のパーティションを含む1個のドメインを使うことができます。一つのパーティションにHRアプリケーション、もう一つに財務アプリケーションという具合です。簡単な例として、HRパーティションにはHRアプリケーションとリソースを含むリソースグループがあり、financeパーティションには財務アプリケーションとリソースを含むリソースグループがあるとしましょう。12.2.1では、実のところ各リソースグループをターゲットにします。理に適っていれば、HRパーティションとfinanceパーティションの両方のリソースグループを同一クラスタへ向けることもできます。そして、パーティションはそれぞれ独立して管理できるので、別のパーティションを邪魔せずに起動、停止することができます。クラスタの管理対象サーバはずっと起動したままです。パーティションの立ち上げ、立ち下げ時に、パーティションのリソースグループ中のアプリケーションやリソースが立ち上がったり立ち下がったりするのであって、サーバ全体の立ち上げ・立ち下げではありません。
これはConsolidation(統合)ユースケースで呼ばれることがあります。つまり、複数のドメインを統合し、個別のドメインを一つずつ個別のパーティションにマッピングし、一つの統合ドメインにまとめる、というものです。これはPaaS(platform-as-a-service)ユースケースとも呼ばれます。各パーティションをWebLogic"プラットフォーム”(micro-container)として使い、様々なアプリケーションやリソースをそれぞれの"プラットフォーム"にデプロイする、というものです。
12.1.3では、クライアントごとに別々のドメインを作成し、人事や財務アプリケーション、リソースを各ドメインで同じように展開することになるでしょう。ドメインテンプレートを使って仕事を簡単にするために、ドメインテンプレートを使用するかもしれませんが、とはいえまだ複数のドメインのオーバーヘッドが存在します。ある顧客は貴社の人事サービスを利用するけれども、別の顧客は人事サービスと財務サービスに加入している場合、1個のドメインテンプレートではうまく行かない場合があります。
12.2.1の用語では、これは2個のリソースグループ、HRリソースグループとFinanceリソースグループのように思えますが、顧客毎にそれぞれ1回動作しています。クライアントごとに1つのパーティションを使用するのが最適なように思えますが、各顧客のパーティションで同一の2つのリソース・グループを繰り返し定義したいとは思わないでしょう。
WebLogic 12.2.1では、そういった状況にまさにぴったりの、リソースグループテンプレートを導入しました。
WebLogicドメイン内のリソースグループテンプレートに人事アプリケーションとリソースを定義します。別のリソースグループテンプレートに、財務アプリケーションとリソースについて同じ操作を行います。顧客ごとのパーティションを作成し、以前のように、各パーティションにリソース・グループを作成します。
しかしこの場合、リソース・グループは、それ自体でアプリケーションやリソースを定義しておらず、代わりにHRリソースグループテンプレートを参照しています。そして、ある顧客が両アプリケーションを使いたい場合には、当該顧客のパーティションに2個目のリソースグループを作成し、もう一方のリソースグループテンプレートに作成したリソースグループを紐付けます。顧客の1社に対応するパーティションを起動すると、WebLogic Serverは基本的にリソースグループテンプレートに定義されているように、当該顧客用のアプリケーションやリソースのコピーを起動します。そして、もう一方の顧客のパーティションを起動すると、WebLogic Serverはそのアプリケーションやリソースの顧客用のコピーを始動します。
これはクラシカルなSaaS(software-as-a-service)ユースケースです。この説明中の“customer(顧客)” という言葉を"tenant(テナント)"に置き換えると、WebLogic Server 12.2.1がパーティション、リソースグループ、リソースグループテンプレートを使って、いかにシンプルにmulti-tenancyをサポートしているかがすぐにおわかりになることでしょう。
パッケージアプリケーションをサービスとして他社へ販売する提供する以外にリソースグループテンプレートを使う方法がありますが、この例はこれらのWebLogic Serverの新機能を一緒に使い全く新しい方法で課題を解決するための基本を説明するための助けになります。
「でも各テナントのパーティションをリソースグループテンプレートの設定と全く同じように設定したくない。例えば、別のテナントが異なるデータベースを使用する必要があるため、JDBC接続情報がパーティションごとに異なる必要があるのだ。」
WebLogic 12.2.1を使用すると、リソース・グループ・テンプレートで定義されているアプリやリソースの設定のオーバーライドを作成することができるので、パーティションごとに異なる設定を施すことができます。 (例えば、JDBC接続情報などの)一般的なケースでは、これらのオーバーライドによって、調整が必要な主要属性が公開されます。各パーティション、パーティション内の各リソースに対して、個別にオーバーライドを設定できます。
これらのオーバーライドでほとんどの場合をカバーできると考えていますが、もしさらなる多くの制御が必要な場合は、(再度言いますが、各パーティションに対して個別に)リソースデプロイメントプランを作成することができます。WebLogic Serverのアプリケーションデプロイメントプランに精通している場合、リソース・グループ・テンプレートで定義されたアプリケーション以外のリソースに適用されることを除き、考え方は、ほとんど同じです。
説明のために、リソースグループテンプレートに紐付くリソースグループを含むパーティションを起動する際に、WebLogic Serverが(少なくとも概念的に)何をするのか列挙しておきます。
https://blogs.oracle.com/WebLogicServer/entry/domain_partitions_for_multi_tenancy
WebLogic Server 12.2.1での顕著な機能改善の一つとして、Multi-tenancyのサポートがあります。 マルチテナント対応のために、ドメインパーティション、リソースグループ、リソースグループテンプレートなどがWebLogic Serverの構成とランタイムに対し追加されました。このエントリではドメインパーティション、リソースグループ、リソースグループテンプレートなどがどういうもので、どういったところに適しているのかをご紹介します。
Domain Partition
ドメインパーティション(以下パーティションと略します)は管理上およびランタイム上のWebLogicドメインをスライスしたものです。多くの場合、WebLogic Serverのmicro-containerとしてパーティションを考えることができます。12.1.3以前では、ドメイン内の管理対象サーバーやセキュリティレルムを定義し、ドメインへアプリケーションやリソースを配置しますが、実行場所を管理するため、管理対象サーバおよびクラスタへのアプリケーションやリソースのターゲットとして指定します。12.2.1でももちろん同じように管理対象サーバやクラスタをアプリケーションやリソースのターゲットとして指定できますが、ドメイン中の1個以上のパーティションを作成でき、各パーティションには、アプリケーションやリソースを含みます。
各パーティションのターゲットとして、パーティションのアプリケーションやリソースを実行させたい管理対象サーバーのクラスタを指定できます (ターゲットの詳細については後述します)。同一クラスタに複数のパーティションをターゲットにしている場合でも、独立して各パーティションを起動したりシャットダウンしたりすることができます。異なるパーティションに異なるセキュリティレルムを使わせることができます。
加えて、各パーティションに対し、パーティションを制御できるパーティション管理者を指定できます。パーティションがmicro-container、つまりパーティションを含むドメインのスライスを認知しはじめることでしょう。
Resource Group and PaaS
ここで、HRソリューションのJava EEアプリケーションとそのリソースがあると仮定します。そして、財務アプリケーションパッケージとそのリソースのセットが別にあるものとします。12.1.3では、すべてのアプリケーションおよびすべてのリソースをドメインにデプロイします。異なるクラスタをデプロイ対象にするかもしれません。2個のアプリケーションで別々に起動、停止を実施したい場合、実際のところそうする必要があるでしょう。または、12.1.3では別のWebLogicドメインを使う可能性があります。一方のドメインにHRアプリケーション、もう一方に財務アプリケーションといった具合です。確かにこの方法ではターゲット、起動、停止の自由度が増しますが、より多くのドメインを実行するコストも増していきます。
12.2.1では、リソースグループという、関連するJava EEアプリケーションやリソースのコレクションを導入しています。HRアプリケーションとリソースを一つのリソースグループにまとめ、財務アプリケーションとそのリソースを別のリソースグループにまとめることができます。各パーティションには複数のリソースグループを含めることができるので、もっとおもしろいことになります。
先述のように、2個の別のドメインを使おう(一つはHRアプリケーション、もう一つは財務アプリケーション)と考えている場合、2個のパーティションを含む1個のドメインを使うことができます。一つのパーティションにHRアプリケーション、もう一つに財務アプリケーションという具合です。簡単な例として、HRパーティションにはHRアプリケーションとリソースを含むリソースグループがあり、financeパーティションには財務アプリケーションとリソースを含むリソースグループがあるとしましょう。12.2.1では、実のところ各リソースグループをターゲットにします。理に適っていれば、HRパーティションとfinanceパーティションの両方のリソースグループを同一クラスタへ向けることもできます。そして、パーティションはそれぞれ独立して管理できるので、別のパーティションを邪魔せずに起動、停止することができます。クラスタの管理対象サーバはずっと起動したままです。パーティションの立ち上げ、立ち下げ時に、パーティションのリソースグループ中のアプリケーションやリソースが立ち上がったり立ち下がったりするのであって、サーバ全体の立ち上げ・立ち下げではありません。
これはConsolidation(統合)ユースケースで呼ばれることがあります。つまり、複数のドメインを統合し、個別のドメインを一つずつ個別のパーティションにマッピングし、一つの統合ドメインにまとめる、というものです。これはPaaS(platform-as-a-service)ユースケースとも呼ばれます。各パーティションをWebLogic"プラットフォーム”(micro-container)として使い、様々なアプリケーションやリソースをそれぞれの"プラットフォーム"にデプロイする、というものです。
Resource Group Template and SaaS
パーティションとリソースグループを使用して異なる種類の課題を解決する全く別の方法がありますが、そのためにはもう一つのコンセプトが必要です。貴社のデータセンターで運用するHRと財務のアプリケーションを他の企業体にサービスとして提供したい場合を考えましょう。12.1.3では、クライアントごとに別々のドメインを作成し、人事や財務アプリケーション、リソースを各ドメインで同じように展開することになるでしょう。ドメインテンプレートを使って仕事を簡単にするために、ドメインテンプレートを使用するかもしれませんが、とはいえまだ複数のドメインのオーバーヘッドが存在します。ある顧客は貴社の人事サービスを利用するけれども、別の顧客は人事サービスと財務サービスに加入している場合、1個のドメインテンプレートではうまく行かない場合があります。
12.2.1の用語では、これは2個のリソースグループ、HRリソースグループとFinanceリソースグループのように思えますが、顧客毎にそれぞれ1回動作しています。クライアントごとに1つのパーティションを使用するのが最適なように思えますが、各顧客のパーティションで同一の2つのリソース・グループを繰り返し定義したいとは思わないでしょう。
WebLogic 12.2.1では、そういった状況にまさにぴったりの、リソースグループテンプレートを導入しました。
WebLogicドメイン内のリソースグループテンプレートに人事アプリケーションとリソースを定義します。別のリソースグループテンプレートに、財務アプリケーションとリソースについて同じ操作を行います。顧客ごとのパーティションを作成し、以前のように、各パーティションにリソース・グループを作成します。
しかしこの場合、リソース・グループは、それ自体でアプリケーションやリソースを定義しておらず、代わりにHRリソースグループテンプレートを参照しています。そして、ある顧客が両アプリケーションを使いたい場合には、当該顧客のパーティションに2個目のリソースグループを作成し、もう一方のリソースグループテンプレートに作成したリソースグループを紐付けます。顧客の1社に対応するパーティションを起動すると、WebLogic Serverは基本的にリソースグループテンプレートに定義されているように、当該顧客用のアプリケーションやリソースのコピーを起動します。そして、もう一方の顧客のパーティションを起動すると、WebLogic Serverはそのアプリケーションやリソースの顧客用のコピーを始動します。
これはクラシカルなSaaS(software-as-a-service)ユースケースです。この説明中の“customer(顧客)” という言葉を"tenant(テナント)"に置き換えると、WebLogic Server 12.2.1がパーティション、リソースグループ、リソースグループテンプレートを使って、いかにシンプルにmulti-tenancyをサポートしているかがすぐにおわかりになることでしょう。
パッケージアプリケーションをサービスとして他社へ販売する提供する以外にリソースグループテンプレートを使う方法がありますが、この例はこれらのWebLogic Serverの新機能を一緒に使い全く新しい方法で課題を解決するための基本を説明するための助けになります。
Some Details
WebLogic Server 12.2.1のmulti-tenancyのサポートは非常に豊富な機能を有しており、ここでは一部をご紹介したに過ぎず、ご想像の通り、実際に役立つその他の関連機能があります。このエントリではすべての機能詳細をご紹介できませんが、いくつか簡単にご紹介しましょう。Resource Overriding
SaaSのユースケースについて、次のように考えるかもしれません。「でも各テナントのパーティションをリソースグループテンプレートの設定と全く同じように設定したくない。例えば、別のテナントが異なるデータベースを使用する必要があるため、JDBC接続情報がパーティションごとに異なる必要があるのだ。」
WebLogic 12.2.1を使用すると、リソース・グループ・テンプレートで定義されているアプリやリソースの設定のオーバーライドを作成することができるので、パーティションごとに異なる設定を施すことができます。 (例えば、JDBC接続情報などの)一般的なケースでは、これらのオーバーライドによって、調整が必要な主要属性が公開されます。各パーティション、パーティション内の各リソースに対して、個別にオーバーライドを設定できます。
これらのオーバーライドでほとんどの場合をカバーできると考えていますが、もしさらなる多くの制御が必要な場合は、(再度言いますが、各パーティションに対して個別に)リソースデプロイメントプランを作成することができます。WebLogic Serverのアプリケーションデプロイメントプランに精通している場合、リソース・グループ・テンプレートで定義されたアプリケーション以外のリソースに適用されることを除き、考え方は、ほとんど同じです。
説明のために、リソースグループテンプレートに紐付くリソースグループを含むパーティションを起動する際に、WebLogic Serverが(少なくとも概念的に)何をするのか列挙しておきます。
- システムはすべてのリソース設定をリソースグループテンプレートから読み込む。
- パーティションのリソースデプロイメントプランが存在する場合、システムはプランに含まれている調整内容をリソース設定に対して適用する。
- 最後に、パーティションに対するオーバーライドを作成していた場合、システムがそれらのオーバーライドを適用する。
- WebLogic Serverは最終的なリソース設定を使って、テンプレートで定義したリソースのパーティションのコピーを作成する。
Targeting
このエントリでは、ターゲティングをことを言ってきましたが、WebLogic Server 12.2.1はパーティションやリソースグループのターゲティングを(必要であれば)シンプルなものから非常に洗練されたものまで設定することができます。同僚のJoe DiPolがターゲティングに関するエントリを公開しています。Partition Targeting and Virtual Targets in WebLogic Server 12.2.1
https://blogs.oracle.com/dipol/entry/partition_targeting_and_virtual_targets
What Next?
すべての新機能を紹介しているドキュメントはこちら。Oracle Fusion Middleware 12c (12.2.1) Oracle WebLogic Server - Tasks以下のリンクは、その中でも特にMultitenancyについて取り上げています。
http://docs.oracle.com/middleware/1221/wls/index.html
Oracle® Fusion Middleware Using WebLogic Server Multitenant 12c (12.2.1)ターゲットに関するJoe DiPolのエントリもお忘れなく。
http://docs.oracle.com/middleware/1221/wls/WLSMT/
Partition Targeting and Virtual Targets in WebLogic Server 12.2.1
https://blogs.oracle.com/dipol/entry/partition_targeting_and_virtual_targets
http://orablogs-jp.blogspot.jp/2015/11/partition-targeting-and-virtual-targets.html