(57)【特許請求の範囲】
【請求項１】
複数のテナントに接続されたアプリケーションプログラムが行うマルチテナント情報処理方法であって、
コンバータが、テナントの識別子と処理要求とを前記テナントから受信し、前記処理要求にかかる処理を行う前記アプリケーションプログラムへの前記処理要求の送信を保留しながら前記受信した前記テナントの識別子に基づき複数のテナントの情報が記憶されたテナント情報テーブルから当該識別子にかかるテナントの情報を取得して前記アプリケーションプログラムが読み込む環境変数へ当該テナントの情報を書き込み、前記環境変数への書き込み完了後に前記処理要求を前記アプリケーションプログラムに送信するステップと、
前記アプリケーションプログラムが、前記コンバータから送信された前記処理要求を受信すると前記コンバータが書き込んだ環境変数を読み込み、当該環境変数に基いて設定を行い、前記コンバータから受信した前記処理要求にかかる処理を当該設定後に行うステップと、
とを含むマルチテナント情報処理方法。
【請求項２】
複数のテナントに接続されたアプリケーションプログラムが行うマルチテナント情報処理方法であって、
コンバータが、
テナントの識別子と処理要求とを前記テナントから受信するステップと、
前記処理要求にかかる処理を行う前記アプリケーションプログラムへの前記処理要求の送信を保留しながら、前記受信した前記テナントの識別子に基づき、複数のテナントの情報が記憶されたテナント情報テーブルから当該識別子にかかるテナントの情報を取得し、前記アプリケーションプログラムが前記処理要求の実行に当たって読み込む環境変数へ、当該取得したテナントの情報を書き込むステップと、
前記環境変数の書き込み完了後に、前記処理要求を前記アプリケーションプログラムに送信するステップと、
を行うマルチテナント情報処理方法。
【請求項３】
請求項１または２において、
前記環境変数は、入力及び出力ファイルのディレクトリパスを含み、
前記アプリケーションプログラムは、当該ディレクトリパスに基いて、ファイルの入出力を行うことを特徴とするマルチテナント情報処理方法。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記環境変数は、前記アプリケーションプログラム内で使用するフラグを含むマルチテナント情報処理方法。
【請求項５】
請求項1において、
前記アプリケーションプログラムは、前記処理要求の処理結果を、前記コンバータを経由せずに前記テナントに送信することを特徴とするマルチテナント処理方法。
【請求項６】
複数のテナントに接続されたアプリケーションプログラムを実行するマルチテナント情報処理装置であって、
テナントの識別子と処理要求とを前記テナントから受信し、前記処理要求にかかる処理を行う前記アプリケーションプログラムへの前記処理要求の送信を保留しながら前記受信した前記テナントの識別子に基づき複数のテナントの情報が記憶されたテナント情報テーブルから当該識別子にかかるテナントの情報を取得して前記アプリケーションプログラムが読み込む環境変数へ当該テナントの情報を書き込み、前記環境変数への書き込み完了後に前記処理要求を前記アプリケーションプログラムに送信するコンバータと、
前記コンバータから送信された前記処理要求を受信すると前記コンバータが書き込んだ環境変数を読み込み、当該環境変数に基いて設定を行い、前記コンバータから受信した前記処理要求にかかる処理を当該設定後に行うアプリケーションプログラムと、
を備えたマルチテナント情報処理装置。
【請求項７】
複数のテナントに接続されたコンピュータ上でアプリケーションを実行するプログラムであって、
テナントの識別子と処理要求とを前記テナントから受信し、前記処理要求にかかる処理を行う前記アプリケーションプログラムへの前記処理要求の送信を保留しながら前記受信した前記テナントの識別子に基づき複数のテナントの情報が記憶されたテナント情報テーブルから当該識別子にかかるテナントの情報を取得して前記アプリケーションプログラムが読み込む環境変数へ当該テナントの情報を書き込み、前記環境変数への書き込み後に前記処理要求をアプリケーション機能に送信するコンバータ機能と、
前記コンバータ機能から送信された前記処理要求を受信すると前記コンバータが書き込んだ環境変数を読み込み、当該環境変数に基いて設定を行い、前記コンバータから受信した前記処理要求にかかる処理を当該設定後に行うアプリケーション機能と、
をコンピュータに発揮させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１アプリケーションでマルチテナント化を実現する技術に関する。
【背景技術】
【０００２】
近年、仮想化技術の発達により、同一筐体のサーバ内に複数のオペレーティングシステムを導入し、複数のシステムとして稼働させることが注目されている。上記はクラウドコンピューティング技術の一つであり、システムを利用する側はそれぞれのシステム専用のサーバを準備しないで良いことから、システムの初期構築費用の低減に繋がっている。しかしながら、オペレーティングシステムやシステムの稼働に必要なアプリケーションをそれぞれで準備する必要があることなどから、１つのオペレーティングシステムと１つのアプリケーションによるマルチテナント対応が望まれている状況である。
【０００３】
マルチテナントとは、複数のテナントが同一筺体のサーバを共有しつつ、アプリケーションを動作させる方式である。マルチテナントを実現させるためには、アプリケーションが複数テナントに対して処理できること、及びテナント毎にデータを管理できることが必須条件となる。
【０００４】
特許文献１に、アプリケーションのマルチテナント化を実現している公知例がある。本文献には、各テナントから接続されるクライアント装置より受信するテナントＩＤにより、テナント毎にデータベースへアクセスするデータアクセス制御を切り分ける方法について記載されている。
【０００５】
また、非特許文献１にはアプリケーションのマルチテナント化を実現するための方式及びマルチテナント・アプリケーション開発手法について掲載されている。本文献には、マルチテナント化を実現するためには、アプリケーション及びデータをテナント毎で分ける必要があり、そのためのアプリケーションを開発する方法が掲載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−２６６５３号公報
【非特許文献】
【０００７】
【非特許文献１】マルチテナント対応アプリケーション開発を効率化する「SystemDirector Enterprise」, [online], [平成23年9月26日検索], インターネット＜URL: http://www.nec.co.jp/techrep/ja/journal/g10/n02/100210.html＞
【発明の概要】
【発明が解決しようとする課題】
【０００８】
マルチテナント化を実現するためには、アプリケーション及びデータをテナント毎に利用できる方法が必須となる。アプリケーション及びデータをテナント毎に利用するには、以下の（１）または（２）を実施する必要がある。
（１）オペレーティングシステムの仮想化によりアプリケーション及びデータをテナント毎に保持する、（２）マルチテナントを考慮した設計に基づくアプリケーション開発を行い、アプリケーション内部でテナント毎に処理を切り分ける。前記（１）で示したオペレーティングシステムの仮想化を行う場合、テナント毎に仮想化したオペレーティングシステム（仮想化ＯＳ）の構築が必要となり、また仮想化ＯＳ毎に、アプリケーションを動作させるためのミドルウェア及びアプリケーションの導入作業が必要となる。そのため、マルチテナントを構成するテナントが多数存在した場合、多大な導入時間及び導入費用を必要とする。一方、前記（２）で示したマルチテナントを考慮した設計に基づくアプリケーション開発を行う場合、新規アプリケーション開発及び既存プログラムの改造を行う必要があり、多大な開発時間及び開発費用を必要とする可能性があるという問題がある。
【０００９】
本発明は、複数の仮想化ＯＳ毎にアプリケーションを動作させるためのミドルウェア及びアプリケーションの導入、新規アプリケーション開発及び既存プログラムの改造を行わなくとも、１アプリケーションでマルチテナント化を実現することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題の一手段を説明する。本発明は、複数のテナントのクライアント装置からネットワークを介して接続されるコンピュータが実行する１アプリケーションプログラムのマルチテナント化方法である。本発明では、例えば、複数のテナントに接続されたアプリケーションプログラムが行うマルチテナント情報処理であって、コンバータが、テナントの識別子と処理要求とをテナントから受信し、前記処理要求にかかる処理を行う前記アプリケーションプログラムへの前記処理要求の送信を保留しながら受信したテナントの識別子に基づき複数のテナントの情報が記憶されたテナント情報テーブルから当該識別子にかかるテナントの情報を取得して前記アプリケーションプログラムが読み込む環境変数へ当該テナントの情報を書き込み、環境変数への書き込み完了後に処理要求をアプリケーションプログラムに送信し、アプリケーションプログラムが、コンバータから送信された処理要求を受信するとコンバータが書き込んだ環境変数を読み込み、当該環境変数に基いて設定を行い、コンバータから受信した処理要求にかかる処理を当該設定後に行う。
【発明の効果】
【００１１】
本発明によれば、複数の仮想化ＯＳ毎にアプリケーションを動作させるためのミドルウェア及びアプリケーションの導入、新規アプリケーション開発及び既存プログラムの改造を行わなくとも、１アプリケーションでマルチテナント化を実現することができる。これにより、多大なミドルウェア導入時間及び導入費用、新規アプリケーション開発時間及び開発費用を削減できる。
【図面の簡単な説明】
【００１２】
【図１】マルチテナントの形態を有するシステム構成を示す図である。
【図２】図１に示すマルチテナント型システムに属するＷｅｂサーバの内部構成の一例を示す図である。
【図３】図１に示すマルチテナント型システムに属するデータベースサーバの内部構成の一例を示す図である。
【図４】図２に示す環境変数及びテナント情報テーブルの構成の一例を示す図である。
【図５】図２に示すコンバータの処理動作を示すフローチャートである。
【図６】アプリケーションプログラムで印刷処理の実行を示すフローチャートの一例である。
【発明を実施するための形態】
【００１３】
以下、本発明の一実施例について、図面を参照して詳細に説明する。
【００１４】
図１は、マルチテナントのシステム構成例を示す図である。同図において、本発明の実施の形態に係るマルチテナント型システムは、サービス提供者側で管理運営されるＷｅｂサーバ１３及びデータベースサーバ１４を有するシステムである。一方、印刷装置１０ａ、印刷装置１０ｂ及び印刷装置１０ｃ（以下、総称する場合は「印刷装置１０」と記述する）と、表示装置１１ａ、表示装置１１ｂ及び表示装置１１ｃ（以下、総称する場合は「表示装置１１」と記述する）はサービス利用者側の各テナントが所有する印刷機または汎用コンピュータである。表示装置１１は、ネットワーク１２を介してマルチテナント型システムに属するＷｅｂサーバ１３に、テナントを識別するための識別子及び処理の要求を送信する。マルチテナント型システムは、表示装置１１からの要求に応じて処理を実行し、結果を表示装置１１に送信する。以下で、Ｗｅｂサーバ１３及びデータベースサーバ１４の構成の詳細を説明する。
【００１５】
図２は、本発明の実施形態におけるＷｅｂサーバ１３の構成例を示す図である。図２のＷｅｂサーバ１３は、通信制御装置２０、中央処理装置２１及び記憶装置２２のハードウェアから構成され、記憶装置２２はコンバータ２３、テナント情報テーブル２４、環境変数２５、アプリケーションプログラム２６、データベース管理部２７を保持する。通信制御装置２０は、前述した表示装置１１から送信される識別子及び処理の要求を受け付け、コンバータ２３へ識別子及び命令を送信する。コンバータ２３は、通信制御装置２０から送信された識別子及び命令を受信し、受信した識別子を入力とし、識別子に応じたテナント情報をテナント情報テーブル２４（詳細は、後述する）から取得し、取得したテナント情報を環境変数２５の書き込む処理を行う。環境変数２５の書き込み処理が完了後、コンバータ２３はアプリケーションプログラム２６へ命令を送信する。アプリケーションプログラム２６はコンバータ２３で書き込み処理が完了した環境変数２５を読み込み、命令に応じた処理を実行する。ただし、アプリケーションプログラム２６は環境変数２５に設定された値に応じた処理が可能であることを前提とする。アプリケーションプログラム２６の処理の一例を後述で説明する。また、アプリケーションプログラム２６は必要に応じてデータベース管理部２７にアクセスを行う。データベース管理部２７は、データベースサーバ１４へアクセスし、データの参照、更新、削除の命令を発行する。データベースサーバ１４で処理された結果は、データベース管理部２７で受信し、アプリケーションプログラム２６へ通知する。アプリケーションプログラム２６は要求に応じた処理が完了後、コンバータ２３は介さず通信制御装置２０へ処理結果を送信する。
【００１６】
続いて、図３のデータベースサーバ１４の構成を説明する。データベースサーバ１４は、データベース３０から構成される。データベース３０に対して、テナント毎にスキーマ３１ａ、スキーマ３１ｂ、スキーマ３１ｃ等（以下、総称する場合は「スキーマ３１」と記述する）を作成する。スキーマとは、ＤＢＭＳ（DataBase Management System）により、論理的に分割する単位を指す。また、図３に示すテーブルＡ３２ａ、テーブルＡ３２ｂ、テーブルＡ３２ｃ等は同レイアウトのテーブル（以下、総称する場合は「テーブルＡ３２」と記述する）であり、テーブルＢ３３ａ、テーブルＢ３３ｂ、テーブルＢ３３ｃ等、並びに、テーブルＣ３４ａ、テーブルＣ３４ｂ、テーブルＣ３４ｃ等についても同様である。（以下、総称する場合は「テーブルＢ３３」及び「テーブルＣ３４」と記述する）テーブルＡ３２、テーブルＢ３３及びテーブルＣ３４は、スキーマ３１に属する。このテーブルＡ３２、テーブルＢ３３及びテーブルＣ３４は、前述したアプリケーションプログラム２６でデータの参照、更新及び削除がされる。なお、本発明はテーブルＡ３２、テーブル３３Ｂ及びテーブル３４Ｃのレイアウトに依存しないため、レイアウトの詳細は言及しない。また、前述したアプリケーションプログラム２６からデータベース３０のどのスキーマ３１に対してアクセスするかの説明は後述する。
【００１７】
図４は、環境変数２５に設定する変数名とテナント情報テーブル２４のテーブル構成の一例である。表４０は環境変数２５で設定する変数名、表４１はテナント情報テーブル２４の構成を示す。表４１の列を構成するのは、テナント情報４２ａ、テナント情報４２ｂ、テナント情報４２ｃ（以下、総称する場合は「テナント情報４２」と記述する）であり、行を構成する表４０の環境変数名に関連する値を定義する。なお、図４では環境変数名（図４の４３から４９）とテナント情報４２の値の関連を破線で示す。実行環境で構成する場合、行を環境変数名（図４の４３から４９）、列を識別子とする２次元配列として値を保持する。図４の構成を適用することにより、環境変数名（４３から４９）に対し、複数の値を可変に持つことが可能となり、アプリケーションプログラム２６で環境変数２５を読み込むことでテナント毎に処理を切り分けることができる。
【００１８】
図５のフローチャートは図２で示したコンバータ２３で実行する処理の内容を示す。ステップＳ１０１は図１で示した表示装置１１から送信される識別子を通信制御装置２０を介し受信する処理である。ここで、識別子とはテナント毎に処理を切り分けるために付番するコードである。ステップＳ１０１を実行後、ステップＳ１０２で記憶装置２２に格納しているテナント情報テーブル２４から、Ｓ１０１で受信した識別子に関連するテナント情報４２を取得する。例として、図４の構成を定義していたとすると、表示装置１１から送信された識別子が「識別子Ｍ０２」であった場合、ステップＳ１０２では環境変数名４３から４９に関連するテナント情報４２ｂの列で構成された値を取得する。ステップＳ２０３は、ステップＳ２０２で取得したテナント情報４２の値を環境変数２５に書き込む処理である。環境変数２５に書き込む手段としては、プログラムによって環境変数に書き込む等が考えられるが、この限りではない。
【００１９】
続いて、図４の構成を適用して、アプリケーションプログラム２６で帳票印刷を行う処理の一例を図６に示す。まず、ステップＳ２０１で図５のステップＳ１０３で書き込んだ環境変数の値を読み込む。ステップＳ２０２では、図４で示した変数PRT４９の値を帳票を出力する印刷装置として決定する。ステップ２０３では、ステップＳ２０２で決定した印刷装置に対して、帳票印刷を行うための接続要求を実行する。ステップ２０４で、帳票に出力するための情報を取得するために接続するデータベースのスキーマのユーザ及びパスワードの情報を取得する。図４では、変数USER４６及び変数PASSWD４７の値が該当する。取得したデータベースのスキーマへ接続するユーザ及びパスワードの情報を基に、データベースへ接続要求を行う。ステップＳ２０４が完了後、ステップＳ２０５で接続したデータベースに対し、帳票に出力するための情報を検索し、情報を取得する。さらに、ステップＳ２０６で取得した情報を帳票に出力するためにレコードとして編集を行い、ステップＳ２０７で、ステップＳ２０２で決定した印刷装置に対して、印刷要求を実行する。ステップ２０７が完了すると、ステップＳ２０２で決定した印刷装置に帳票が出力される。その後、ステップＳ２０８で、帳票印刷を行う情報がまだあるかの分岐判定を行い、まだある場合はステップＳ２０５から処理を実行する。ない場合はステップＳ２０９へ処理を移す。ステップＳ２０９は、接続していたデータベースに対し、切断要求を実行し、データベースから切断する。最後に、ステップＳ２１０でステップＳ２０３で接続していた印刷装置に対して、切断要求を実行し、印刷装置から切断する。
【００２０】
例として、環境変数２５に図４のテナント情報４２ｂの値が設定されていた場合で説明すると、ステップＳ２０２を実行した場合、帳票を出力する印刷装置に決定されるのは、「PRT002」（図４の行４９かつ列４２ｂの値）であるため、ステップＳ２０３で図１のテナント２で所有する印刷装置１０ｂに接続要求をする。ステップＳ２０４でデータベースに接続するユーザ及びパスワードにそれぞれ「Tenant2」（図４の行４６かつ列４２ｂの値）、「Tenant2」（図４の行４７かつ列４２ｂの値）が設定されるため、図３のスキーマ３１ｂに対して接続要求が実行される。ステップＳ２０５からＳ２０８でスキーマ３１ｂ内のテーブルに対して検索及び情報を取得し、レコードとして編集を行い、印刷装置１０ｂに印刷要求を実行し、印刷装置１０ｂに帳票が出力される。帳票出力が終わるまで、ステップＳ２０５からＳ２０８を繰り返し、帳票出力が終われば、ステップＳ２０９及びＳ２１０で接続していたスキーマ３１ｂのデータベースから切断し、さらに印刷装置１０ｂに対しても切断処理を実行する。
【００２１】
以上本発明の一実施例を説明した。以上説明したように、上述した実施例により、複数の仮想化ＯＳ毎にアプリケーションを動作させるためのミドルウェア及びアプリケーションの導入、新規アプリケーション開発及び既存プログラムの改造を行わなくとも、次の方法を用いることにより１アプリケーションでマルチテナント化を実現可能となる。すなわち、アプリケーションを実行する前に、アプリケーションを実行するために必要な環境変数をテナント毎に書き換えることにより、１アプリケーションでテナント毎の処理を切り分ける。書き換えを行う環境変数は、以下の（１）から（５）の情報を有するものとする。（１）アプリケーションプログラムの実行可能ファイルの格納先ディレクトリのパス、（２）アプリケーションプログラムで入力及び出力ファイルの格納先ディレクトリのパス、（３）アプリケーションプログラムで入力及び出力ファイルの格納先ディレクトリの格納先ディレクトリのパス及びファイル名、（４）アプリケーションプログラム内部で使用するフラグ、（５）アプリケーションプログラムからデータベースへ接続するためのユーザＩＤ及びパスワード。このように、前（１）から（５）をアプリケーションで読み込み、処理を実行することで、アプリケーションのマルチテナント化を実現できる。
【００２２】
以上説明した実施例によれば、１アプリケーションでのマルチテナント化を実現するために、環境変数の書き換えを行う処理を従来のアプリケーションの実行前に行うことで、それぞれのテナントに応じた環境変数にて従来のアプリケーションのまま処理が行えることになる。そのため、オペレーティングシステムの仮想化を行わないため、アプリケーションを実行させるために必要なミドルウェアの導入作業は１度で済む。一方、マルチテナントを考慮した設計に基づくアプリケーション開発を行う場合の新規アプリケーション開発及び既存プログラムの改造を不要にできるため、多大な開発時間及び開発費用を要さずに実現可能となる。なお、本実施例により、テナント毎にデータベースのデータアクセス制御が可能となる他、テナント毎にアプリケーションで利用するファイル及びディレクトリを切り分けることが可能となる。
【００２３】
なお、本発明は上記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【符号の説明】
【００２４】
１０    印刷装置
１１    表示装置
１２    ネットワーク
１３    Ｗｅｂサーバ
１４    データベースサーバ
２０    通信制御装置
２１    中央処理装置
２２    記憶装置
２３    コンバータ
【図１】
0005427866.tif 000002
【図２】
0005427866.tif 000003
【図３】
0005427866.tif 000004
【図４】
0005427866.tif 000005
【図５】
0005427866.tif 000006
【図６】
0005427866.tif 000007