特許第6962142号(P6962142)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士ゼロックス株式会社の特許一覧

<>
  • 特許6962142-プログラム及び情報処理装置 図000002
  • 特許6962142-プログラム及び情報処理装置 図000003
  • 特許6962142-プログラム及び情報処理装置 図000004
  • 特許6962142-プログラム及び情報処理装置 図000005
  • 特許6962142-プログラム及び情報処理装置 図000006
  • 特許6962142-プログラム及び情報処理装置 図000007
  • 特許6962142-プログラム及び情報処理装置 図000008
  • 特許6962142-プログラム及び情報処理装置 図000009
  • 特許6962142-プログラム及び情報処理装置 図000010
  • 特許6962142-プログラム及び情報処理装置 図000011
  • 特許6962142-プログラム及び情報処理装置 図000012
  • 特許6962142-プログラム及び情報処理装置 図000013
  • 特許6962142-プログラム及び情報処理装置 図000014
  • 特許6962142-プログラム及び情報処理装置 図000015
  • 特許6962142-プログラム及び情報処理装置 図000016
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6962142
(24)【登録日】2021年10月18日
(45)【発行日】2021年11月5日
(54)【発明の名称】プログラム及び情報処理装置
(51)【国際特許分類】
   G06F 9/445 20180101AFI20211025BHJP
   G06F 9/50 20060101ALI20211025BHJP
【FI】
   G06F9/445 150
   G06F9/50 120
【請求項の数】14
【全頁数】22
(21)【出願番号】特願2017-215665(P2017-215665)
(22)【出願日】2017年11月8日
(65)【公開番号】特開2019-87098(P2019-87098A)
(43)【公開日】2019年6月6日
【審査請求日】2020年8月31日
(73)【特許権者】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】110000752
【氏名又は名称】特許業務法人朝日特許事務所
(72)【発明者】
【氏名】中里 理恵
(72)【発明者】
【氏名】江口 博行
(72)【発明者】
【氏名】田中 匠
【審査官】 小林 秀和
(56)【参考文献】
【文献】 特開2009−037353(JP,A)
【文献】 特開2012−014506(JP,A)
【文献】 国際公開第2008/084826(WO,A1)
【文献】 特開2010−097543(JP,A)
【文献】 特開2005−275707(JP,A)
【文献】 特開2015−106167(JP,A)
【文献】 特開2012−088901(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/445
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
コンピュータを、
仮想マシン上で起動される機能により実行される処理の要求を受け取ると当該機能を示す機能情報を生成する生成部と、
生成された前記機能情報を一時的に蓄積する一時蓄積部と、
前記処理の要求に基づいて当該処理を実行することが見込まれる機能を特定する特定部と、
特定された前記機能を仮想マシン上で起動させる第1起動部と、
前記一時蓄積部から読み出される前記機能情報が示す機能を仮想マシン上で起動させる第2起動部であって、当該機能が前記第1起動部により既に起動されている場合には当該機能を起動させない第2起動部
として機能させるためのプログラム。
【請求項2】
前記コンピュータを、前記第1起動部又は前記第2起動部により前記機能が起動される場合に当該機能が前記処理を実行する際に使用するリソースを有する仮想マシンを起動させる仮想マシン起動部として機能させる
請求項1に記載のプログラム。
【請求項3】
前記コンピュータを、前記処理を実行していない機能が起動されている仮想マシンを停止させる仮想マシン停止部であって、当該機能が前記一時蓄積部に蓄積されている前記機能情報が示す機能である場合は当該機能を停止させない仮想マシン停止部として機能させる
請求項1又は2に記載のプログラム。
【請求項4】
前記仮想マシン停止部は、前記処理を実行していない機能が、別の前記要求に基づいて当該処理を実行することが見込まれる機能として前記特定部により特定された場合は当該仮想マシンを停止させない
請求項3に記載のプログラム。
【請求項5】
前記特定部は、前記要求がされた処理のパラメータ又は当該処理の要求の履歴から起動される可能性が他の機能に比べて高いことが表される機能を前記実行することが見込まれる機能として特定する
請求項1から4のいずれか1項に記載のプログラム。
【請求項6】
前記第1起動部は、特定された前記機能の起動に要する時間が短いほど当該機能を起動させる時期を遅くする
請求項1から5のいずれか1項に記載のプログラム。
【請求項7】
前記第1起動部は、前記一時蓄積部に蓄積されている前記機能情報が多いほど特定された前記機能を起動させる時期を遅くする
請求項1から6のいずれか1項に記載のプログラム。
【請求項8】
前記機能には複数の種類があり、
前記第1起動部は、前記種類が共通し且つ起動済みの機能の数が少ないほど特定された当該種類の機能を起動させる時期を早くする
請求項1から7のいずれか1項に記載のプログラム。
【請求項9】
前記処理は、複数の機能により順番に実行され、
前記第1起動部は、当該機能の前記順番が早いほど特定された前記機能を起動させる時期を早くする
請求項1から8のいずれか1項に記載のプログラム。
【請求項10】
前記機能には複数の種類があり、
前記第1起動部は、特定された前記機能と同種の機能の起動回数が多いほど特定された当該機能を起動させる時期を早くする
請求項1から9のいずれか1項に記載のプログラム。
【請求項11】
コンピュータを、蓄積されている前記機能情報が示す機能により実行される処理に要する時間を算出する算出部として機能させ、
前記第1起動部は、特定された前記機能を示す前記機能情報よりも前に蓄積された前記機能情報について算出された前記時間が長いほど仮想マシン上で当該機能を起動させる時期を遅くする
請求項1から10のいずれか1項に記載のプログラム。
【請求項12】
前記コンピュータを、前記処理が完了した前記機能を停止させる機能停止部として機能させ、
前記第1起動部は、仮想マシン上の前記機能が前記処理を完了して停止されると、特定された前記機能を当該仮想マシン上で起動し、当該機能については前記時期を変化させる制御を行わない
請求項6から11のいずれか1項に記載のプログラム。
【請求項13】
前記機能には複数の種類があり、
前記第1起動部は、特定された前記機能と同種の機能が前記処理を実行していない状態で存在する場合は、特定された当該機能の起動を行わず、
前記コンピュータを、前記第1起動部が前記機能の起動を行わない場合に、前記状態で存在する機能を制御して前記要求がされた処理を実行させる実行制御部として機能させる
請求項1から12のいずれか1項に記載のプログラム。
【請求項14】
仮想マシン上で起動される機能により実行される処理の要求を受け取ると当該機能を示す機能情報を生成する生成部と、
生成された前記機能情報を一時的に蓄積する一時蓄積部と、
前記処理の要求に基づいて当該処理を実行することが見込まれる機能を特定する特定部と、
特定された前記機能を仮想マシン上で起動させる第1起動部と、
前記一時蓄積部から読み出される前記機能情報が示す機能を仮想マシン上で起動させる第2起動部であって、当該機能が前記第1起動部により既に起動されている場合には当該機能を起動させない第2起動部と
を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム及び情報処理装置に関する。
【背景技術】
【0002】
特許文献1には、ジョブ処理装置の動作状況を監視し、規定数を超えるジョブを処理している場合にタスクを増加させるスケールアウトを指示し、その後スループットが向上されていないと確認した場合にはタスクを削除するスケールインを指示する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2014−149690号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1の技術では、スケールアウト及びスケールインのいずれの場合でも、要求された処理(ジョブ)が実行された後でなければ対処がなされない。
そこで、本発明は、要求された処理が実行される前から処理の早期終了のための対処を行うことを目的とする。
【課題を解決するための手段】
【0005】
本発明の請求項1に係るプログラムは、コンピュータを、仮想マシン上で起動される機能により実行される処理の要求を受け取ると当該機能を示す機能情報を生成する生成部と、生成された前記機能情報を一時的に蓄積する一時蓄積部と、前記処理の要求に基づいて当該処理を実行することが見込まれる機能を特定する特定部と、特定された前記機能を仮想マシン上で起動させる第1起動部と、前記一時蓄積部から読み出される前記機能情報が示す機能を仮想マシン上で起動させる第2起動部であって、当該機能が前記第1起動部により既に起動されている場合には当該機能を起動させない第2起動部として機能させることを特徴とする。
【0006】
本発明の請求項2に係るプログラムは、請求項1に記載の構成において、前記コンピュータを、前記第1起動部又は前記第2起動部により前記機能が起動される場合に当該機能が前記処理を実行する際に使用するリソースを有する仮想マシンを起動させる仮想マシン起動部として機能させることを特徴とする。
【0007】
本発明の請求項3に係るプログラムは、請求項1又は2に記載の構成において、前記コンピュータを、前記処理を実行していない機能が起動されている仮想マシンを停止させる仮想マシン停止部であって、当該機能が前記一時蓄積部に蓄積されている前記機能情報が示す機能である場合は当該機能を停止させない仮想マシン停止部として機能させることを特徴とする。
【0008】
本発明の請求項4に係るプログラムは、請求項3に記載の構成において、前記仮想マシン停止部は、前記処理を実行していない機能が、別の前記要求に基づいて当該処理を実行することが見込まれる機能として前記特定部により特定された場合は当該仮想マシンを停止させないことを特徴とする。
【0009】
本発明の請求項5に係るプログラムは、請求項1から4のいずれか1項に記載の構成において、前記特定部は、前記要求がされた処理のパラメータ又は当該処理の要求の履歴から起動される可能性が他の機能に比べて高いことが表される機能を前記実行することが見込まれる機能として特定することを特徴とする。
【0010】
本発明の請求項6に係るプログラムは、請求項1から5のいずれか1項に記載の構成において、前記第1起動部は、特定された前記機能の起動に要する時間が短いほど当該機能を起動させる時期を遅くすることを特徴とする。
【0011】
本発明の請求項7に係るプログラムは、請求項1から6のいずれか1項に記載の構成において、前記第1起動部は、前記一時蓄積部に蓄積されている前記機能情報が多いほど特定された前記機能を起動させる時期を遅くすることを特徴とする。
【0012】
本発明の請求項8に係るプログラムは、請求項1から7のいずれか1項に記載の構成において、前記機能には複数の種類があり、前記第1起動部は、前記種類が共通し且つ起動済みの機能の数が少ないほど特定された当該種類の機能を起動させる時期を早くすることを特徴とする。
【0013】
本発明の請求項9に係るプログラムは、請求項1から8のいずれか1項に記載の構成において、前記処理は、複数の機能により順番に実行され、前記第1起動部は、当該機能の前記順番が早いほど特定された前記機能を起動させる時期を早くすることを特徴とする。
【0014】
本発明の請求項10に係るプログラムは、請求項1から9のいずれか1項に記載の構成において、前記機能には複数の種類があり、前記第1起動部は、特定された前記機能と同種の機能の起動回数が多いほど特定された当該機能を起動させる時期を早くすることを特徴とする。
【0015】
本発明の請求項11に係るプログラムは、請求項1から10のいずれか1項に記載の構成において、コンピュータを、蓄積されている前記機能情報が示す機能により実行される処理に要する時間を算出する算出部として機能させ、前記第1起動部は、特定された前記機能を示す前記機能情報よりも前に蓄積された前記機能情報について算出された前記時間が長いほど仮想マシン上で当該機能を起動させる時期を遅くすることを特徴とする。
【0016】
本発明の請求項12に係るプログラムは、請求項6から11のいずれか1項に記載の構成において、前記コンピュータを、前記処理が完了した前記機能を停止させる機能停止部として機能させ、前記第1起動部は、仮想マシン上の前記機能が前記処理を完了して停止されると、特定された前記機能を当該仮想マシン上で起動し、当該機能については前記時期を変化させる制御を行わないことを特徴とする。
【0017】
本発明の請求項13に係るプログラムは、請求項1から12のいずれか1項に記載の構成において、前記機能には複数の種類があり、前記第1起動部は、特定された前記機能と同種の機能が前記処理を実行していない状態で存在する場合は、特定された当該機能の起動を行わず、前記コンピュータを、前記第1起動部が前記機能の起動を行わない場合に、前記状態で存在する機能を制御して前記要求がされた処理を実行させる実行制御部として機能させることを特徴とする。
【0018】
本発明の請求項14に係る情報処理装置は、仮想マシン上で起動される機能により実行される処理の要求を受け取ると当該機能を示す機能情報を生成する生成部と、生成された前記機能情報を一時的に蓄積する一時蓄積部と、前記処理の要求に基づいて当該処理を実行することが見込まれる機能を特定する特定部と、特定された前記機能を仮想マシン上で起動させる第1起動部と、前記一時蓄積部から読み出される前記機能情報が示す機能を仮想マシン上で起動させる第2起動部であって、当該機能が前記第1起動部により既に起動されている場合には当該機能を起動させない第2起動部とを備えることを特徴とする。
【発明の効果】
【0019】
請求項1、14に係る発明によれば、要求された処理が実行される前から処理の早期終了のための対処を行うことができる。
請求項2に係る発明によれば、複数の機能に必要なリソースを有する仮想マシンを予め起動する場合に比べて、仮想マシンを起動したときに必要なリソースの量を少なくすることができる。
請求項3に係る発明によれば、第1起動部により起動された機能を停止させる場合に比べて、その機能が実行する見込みであった処理とは別の処理の開始を早期化することができる。
請求項4に係る発明によれば、要求された処理を実行することが見込まれて起動された機能を停止させる場合に比べて、その要求とは別の要求に基づくその処理の開始を早期化することができる。
請求項5に係る発明によれば、機能を定義した情報がなくても機能の特定を可能にすることができる。
請求項6に係る発明によれば、起動時期を一律にする場合に比べて、起動した機能が処理を実行可能になる時期を近くすることができる。
請求項7、11に係る発明によれば、起動時期を一律にする場合に比べて、機能が処理を実行していないのに仮想マシンが起動している状態となる期間を短くすることができる。
請求項8に係る発明によれば、起動時期を一律にする場合に比べて、起動済みの同種の機能の数が少なくても処理の遅延を生じにくくすることができる。
請求項9、10に係る発明によれば、起動時期を一律にする場合に比べて、特定された機能による処理の遅延が後続の処理に与える影響を小さくすることができる。
請求項12に係る発明によれば、特定された機能の起動時期を遅らせる場合に比べて、処理の早期終了の可能性を高めることができる。
請求項13に係る発明によれば、仮想マシン及び機能を再利用しない場合に比べて、処理の早期終了の可能性を高めることができる。
【図面の簡単な説明】
【0020】
図1】実施例に係るタスクサービス提供システムの全体構成を表す図
図2】サーバ装置のハードウェア構成を表す図
図3】クラウドシステム4が実現する機能構成を表す図
図4】タスク定義部102が記憶する情報の一例を表す図
図5】テスク定義情報の一例を表す図
図6】リクエストパラメータ情報の一例を表す図
図7】履歴情報の一例を表す図
図8】タスク処理におけるクラウドシステム4の動作手順の一例を表す図
図9】スケールイン処理におけるクラウドシステム4の動作手順の一例を表す図
図10】起動時期テーブルの一例を表す図
図11】起動時期テーブルの別の一例を表す図
図12】起動時期テーブルの別の一例を表す図
図13】起動時期テーブルの別の一例を表す図
図14】起動時期テーブルの別の一例を表す図
図15】起動時期テーブルの別の一例を表す図
【発明を実施するための形態】
【0021】
[1]実施例
図1は実施例に係るタスクサービス提供システム1の全体構成を表す。タスクサービス提供システム1は、タスクサービスをユーザに提供するためのシステムである。タスクサービス提供システム1では、予め定義された一連の処理を実行することによって完了する作業のことをタスクと言う。例えば領収書やレシートを読み取って経費精算システムに格納する作業のことを経費精算タスクと言う。
【0022】
また、ユーザからの要求に基づいてタスクを実行するサービスをタスクサービスと言う。なお、タスクを実行するとは、詳細にはそのタスクに含まれる処理、すなわちタスクを完了させるために定義された一連の処理を実行することを意味し、タスクの実行を要求するとは、そのタスクに含まれる処理を要求すること(処理の実行を要求することと同義)を意味する。
【0023】
タスクサービス提供システム1は、通信回線2と、ユーザ端末3と、クラウドシステム4とを備える。通信回線2は、例えばインターネット、移動体通信網及び電話回線等を含み、自回線に接続されている装置同士の通信を仲介する。通信回線2には、ユーザ端末3及びクラウドシステム4が接続されている。
【0024】
ユーザ端末3は、タスクサービス提供システム1を利用するユーザが使用する端末である。ユーザ端末3は、例えば、店舗に設置される画像形成装置であり、コピー機能及びスキャン機能等を備えている。図1ではユーザ端末3が1台しか表されていないが、複数のユーザ端末3が使用されているものとする。ユーザ端末3は、ユーザの操作によりタスクの実行(詳細にはそのタスクに含まれる処理の実行)をクラウドシステム4に対して要求し、要求したタスクの実行結果を受け取って例えばその実行結果に応じた画面を表示する。
【0025】
クラウドシステム4は、各々がインスタンスと呼ばれる仮想マシンを実現する複数のサーバ装置10を備える。このクラウドシステム4を提供するクラウドサービス事業者は、タスクサービスを提供するタスクサービス事業者とは異なっているものとする。クラウドシステム4においては、インスタンス毎に、そのインスタンスの使用するリソース量及び使用時間に応じた課金がなされる。
【0026】
そのため、クラウドシステム4においては、インスタンスを必要に応じて増減させるオートスケールが行われる。本実施例では、タスクに含まれる処理をインスタンス上で実行し、且つ、それらのインスタンスについてオートスケールを行う。例えば処理を実行していないインスタンスを停止(スケールイン)することで課金される料金を抑えるようにしたり、処理を実行しているインスタンスのリソース(CPU(Central Processing Unit)やメモリなど)の使用率が閾値を超える場合には新たなインスタンスを起動(スケールアウト)して処理の遅延を抑えたりしている。
【0027】
図2はサーバ装置10のハードウェア構成を表す。サーバ装置10は、CPU11と、RAM(Random Access Memory)12と、ROM(Read Only Memory)13と、通信部14と、ストレージ15とを備えるコンピュータである。CPU11は、メモリであるRAM12をワークエリアとして用いてROM13やストレージ15に記憶されているプログラムを実行することで各部の動作を制御する。通信部14は、通信回路等を有し、通信回線2を介して外部装置と通信を行う。ストレージ15は、HDD(Hard Disk Drive)やSSD(Solid State Drive)、フラッシュメモリなどの記憶手段であり、CPU11が制御に用いるデータやプログラムを記憶している。
【0028】
クラウドシステム4が備える複数のサーバ装置10の各CPU11がプログラムを実行して各部を制御することで、以下に述べる機能が実現される。
図3はクラウドシステム4が実現する機能構成を表す。クラウドシステム4は、タスクサービス部101と、タスク定義部102と、キュー103と、プラグイン管理部104と、プラグイン実行部105と、タスク要求情報管理部111と、タスク定義情報記憶部112と、リクエストパラメータ情報記憶部113と、履歴情報記憶部114と、オートスケール管理部115とを備える。
【0029】
ユーザ端末3は、ユーザによって操作されて、タスクの実行を要求する要求データを生成してクラウドシステム4に送信する。要求データは、実行するタスクで用いるタスク定義を識別するタスク定義ID(Identification)と、文書(例えば原稿をスキャンした画像データ)を処理するタスクである場合はその文書と、そのタスクにおいて実行される処理の内容(処理で用いられるパラメータ等)とを示すデータである。
【0030】
まず、要求されたタスクの実行に関する機能構成について説明する。タスクサービス部101は、ユーザ端末3から送信されてくる要求データを受け取って、その要求データに基づいてタスク定義部102から必要な情報を読み出し、要求されたタスクを実行するためのメッセージを生成する。
【0031】
タスクの実行には、本実施例では、プラグインと呼ばれる機能が用いられる。プラグインは、プログラム、データ及びパラメータ等を読み出してメモリ上に展開することで起動され、起動が完了すると処理を実行可能な状態になる。タスクサービス提供システム1においては、タスクに含まれる各処理(矩形画像抽出、文書分割及びOCR(Optical Character Recognition)等の処理)に対して、それぞれ対応するプラグインが用意されている。つまり、1つのプラグインは、それに対応する1つの処理を実行する。
【0032】
メッセージには、タスクに含まれる各処理を実行する各プラグインを起動するための情報として、各プラグインの呼び出しコマンドが含まれている。タスク定義部102は、各タスクのタスク定義IDに対応付けて、そのタスクに含まれる各処理を実行する各プラグインのプラグインIDと、それらのプラグインの呼び出しコマンドと、各プラグインが実行する処理の順序とを記憶している。
【0033】
図4はタスク定義部102が記憶する情報の一例を表す。図4の例では、タスク定義部102は、「TASK01」というタスク定義IDに「PLUG13」(経費精算データ送信)、「PLUG01」(矩形画像抽出)、「PLUG08」(文書分割)というプラグインIDと、それらの呼び出しコマンドと、それらの処理の順序とが対応付けられている。また、「TASK02」というタスク定義IDには、「PLUG02」(OCR)、「PLUG11」(コンバージョン)というプラグインIDと、それらの呼び出しコマンドと、それらの処理の順序とが対応付けられている。
【0034】
タスクサービス部101は、上記の要求データが示すタスク定義IDに対応付けられている処理順序の順番で呼び出しコマンドを読み出して、その呼び出しコマンドと、要求データが示す処理の内容とを含むメッセージを生成する。タスクサービス部101は、例えば要求データが「TASK01」というタスク定義IDを示していれば、「TASK01」に対応付けられた処理の順序が「1」の「PLUG01」(矩形画像抽出)の呼び出しコマンドを含むメッセージを生成する。
【0035】
このように、タスクサービス部101は、プラグインにより実行される処理の要求(処理を実行することの要求)をユーザ端末3から受け取ると、そのプラグインを示すメッセージを生成する。こうして生成されるメッセージは、呼び出しコマンドにより呼び出されるプラグインという機能を示す情報であり、本発明の「機能情報」の一例である。また、そのメッセージを生成するタスクサービス部101は本発明の「生成部」の一例である。タスクサービス部101は、生成したメッセージをキュー103に供給する。
【0036】
キュー103は、供給されたメッセージを記憶してキュー(先入れ先出しのデータ)として取り扱う。つまり、キュー103は、タスクサービス部101により生成されたメッセージを一時的に蓄積する機能であり、本発明の「一時蓄積部」の一例である。プラグイン管理部104は、キュー103に蓄積されたメッセージを読み出し、そのメッセージに含まれる呼び出しコマンドを用いてプラグインの起動をプラグイン実行部105に指示する。
【0037】
プラグイン実行部105は、この指示を受け取ると、特定の場合(詳しくは後述する)を除いて、指示されたプラグインを起動する。プラグイン実行部105は、詳細には、まずプラグインを起動させるためのインスタンス(仮想マシン)を起動して、起動したインスタンス上で指示されたプラグインを起動する。プラグイン管理部104及びプラグイン実行部105は、インスタンスを起動する場合は本発明の「仮想マシン起動部」の一例として機能し、プラグインを起動する場合は本発明の「第2起動部」の一例として機能する。
【0038】
本実施例では、プラグイン実行部105は、インスタンス上でプラグインを起動すると、そのインスタンス上では他のプラグインを起動させないようにする。つまり、プラグイン実行部105は、1つのインスタンス上では1つのプラグインだけを実行する。プラグイン実行部105は、図3の例では、文書処理プラグイン51−1、51−2、51−3と、外部接続プラグイン52と、ストレージ登録プラグイン53とを、それぞれに対応して起動したインスタンス上で実行している。
【0039】
文書処理プラグインは、矩形画像抽出、OCR、文書分割及びコンバージョン等の文書に対する処理を実行する。外部接続プラグインは、業務型クラウドサービス5のような外部のサービスと接続する。ストレージ登録プラグインは、ストレージ型クラウドサービス6及び社内システム7のような外部のストレージにデータを登録する。
【0040】
プラグイン管理部104は、プラグインが起動すると、メッセージに含まれる内容で処理を実行するようにプラグイン実行部105に指示する。プラグイン実行部105は、この指示を受け取ると、指示された内容で処理を実行する。プラグイン実行部105は、この処理を完了すると、その処理結果をプラグイン管理部104に通知する。プラグイン管理部104は、通知された処理結果をタスクサービス部101に通知する。
【0041】
タスクサービス部101は、処理完了の通知を受け取ると、処理順序が次のプラグインの呼び出しコマンドを読み出して、その呼び出しコマンドと、要求データが示す処理の内容とを含むメッセージを生成する。こうして順番にプラグインが起動されて処理が実行されることで、タスクが実行される。
【0042】
次に、オートスケールに関する機能構成について説明する。上述したように、クラウドシステム4においては、インスタンスについてオートスケールが行われ、且つ、1つのインスタンス上では1つのプラグインだけが実行される。つまり、インスタンスにオートスケールが行われると、そのインスタンス上で起動されるプラグインにもオートスケールが行われる(インスタンスがスケールアウトされて増加すればプラグインも同じ数だけ増加し、インスタンスがスケールインされて減少すればプラグインも同じ数だけ減少する)ことになる。
【0043】
オートスケール管理部115は、プラグイン実行部105を決められた時間間隔で繰り返し監視してプラグインの実行状況を把握する。オートスケール管理部115は、例えば、プラグインで実行されている処理の有無と、処理を実行しているときのプラグインによるリソースの使用率とを把握する。オートスケール管理部115は、把握した実行状況に応じて、プラグインを新たに起動させるスケールアウトの指示と、プラグインを停止させるスケールインの指示とをプラグイン実行部105に対して行う。
【0044】
オートスケール管理部115は、例えばOCRのプラグインが複数起動されており、その中に処理を一定期間実行していないプラグイン(これを「非処理中プラグイン」という)がある場合、そのOCRのプラグイン及び対応するインスタンスを停止させる(スケールインを行う)ようプラグイン実行部105に指示する。また、オートスケール管理部115は、例えばコンバージョンのプラグインが大量の文書のコンバージョンを行っていてリソースの使用率が閾値を超える場合、コンバージョンのプラグイン及びインスタンスを新たに起動する(スケールアウトを行う)ようプラグイン実行部105に指示する。この場合、プラグイン実行部105は、新たに起動されたプラグインに文書を分担して処理を実行するよう指示し、処理の負担を分散させる。
【0045】
また、オートスケール管理部115は、プラグインの実行状況とは別の情報にも基づいてオートスケールを行う。タスクサービス部101は、要求データを受け取ると、メッセージの生成と並行して、又は、メッセージを生成する前に、その要求データをタスク要求情報管理部111に供給する。
【0046】
タスク要求情報管理部111は、供給された要求データが示すタスクの実行要求、すなわちタスクに含まれる処理の要求に関する情報を管理する。タスク要求情報管理部111は、例えば、供給された要求データをタスクの実行要求の履歴として、現在の日時情報と共に履歴情報記憶部114に記憶させる。
【0047】
また、タスク要求情報管理部111は、要求データが供給されると、その要求データが示す処理の要求に基づいて、その処理を実行することが見込まれるプラグイン(以下「見込みプラグイン」という)を特定する。タスク要求情報管理部111は本発明の「特定部」の一例である。タスク要求情報管理部111は、例えば、タスク定義情報記憶部112が記憶する情報に基づく第1の特定方法を用いてプラグインを特定する。
【0048】
タスク定義情報記憶部112は、タスク定義部102が記憶するタスク定義に関する情報のうちの一部をタスク定義情報として記憶している。
図5はテスク定義情報の一例を表す。図5の例では、タスク定義情報記憶部112は、タスク定義ID及びプラグインIDを対応付けた情報をタスク定義情報として記憶している。
【0049】
タスク要求情報管理部111は、供給された要求データが示すタスク定義IDにタスク定義情報において対応付けられているプラグインIDを読み出し、読み出したプラグインIDが示すプラグインを、見込みプラグインとして特定する。タスク要求情報管理部111は、例えば、要求データが示すタスク定義IDが「TASK02」であれば、図5において「TASK02」に対応付けられた「PLUG02」及び「PLUG11」が示すOCR及びコンバージョンのプラグインを見込みプラグインとして特定する。
【0050】
また、タスク要求情報管理部111は、リクエストパラメータ情報記憶部113が記憶する情報に基づく第2の特定方法を用いてプラグインを特定する。リクエストパラメータ情報記憶部113は、処理の要求に用いられるパラメータとプラグインIDとを対応付けた情報をリクエストパラメータ情報として記憶している。
【0051】
図6はリクエストパラメータ情報の一例を表す。図6(a)の例では、リクエストパラメータ情報記憶部113は、「MIMETYPE」というメディアタイプを示すパラメータとプラグインIDとを対応付けた情報をリクエストパラメータ情報として記憶している。例えば「application/mspowerpoint」及び「application/msword」には「PLUG11」(コンバージョン)が対応付けられ、「application/vnd.fujixerox.docuworks」には「PLUG02」(OCR)が対応付けられている。
【0052】
タスク要求情報管理部111は、供給された要求データが示す処理のパラメータにリクエストパラメータ情報において対応付けられているプラグインIDを読み出し、読み出したプラグインIDが示すプラグインを、見込みプラグインとして特定する。タスク要求情報管理部111は、例えば、要求データが示すMIMETYPEが「application/msword」であれば、図6(a)においてそれに対応付けられた「PLUG11」が示すコンバージョンのプラグインを見込みプラグインとして特定する。
【0053】
また、タスク要求情報管理部111は、履歴情報記憶部114が記憶する情報に基づく第3の特定方法を用いてプラグインを特定する。履歴情報記憶部114は、要求された処理の履歴とプラグインIDとを対応付けた情報を履歴情報として記憶している。
図7は履歴情報の一例を表す。図7の例では、履歴情報記憶部114は、過去に要求された処理のプラグインIDを、その要求が送信されてきた日時を含む要求時間帯(例えば朝、昼、夕方、夜の時間帯)と、その要求を送信してきたユーザ端末3を識別する端末ID(要求端末ID)と、その要求の操作を行ったユーザを識別するユーザID(要求ユーザID)という3種類の履歴に対応付けた情報を履歴情報として記憶している。
【0054】
要求端末ID及び要求ユーザIDは、タスクサービス提供システム1において登録されたIDであり、タスクサービスを利用する際にユーザがユーザ端末3に自身のユーザIDを入力すると、ユーザ端末3がそのユーザIDと自端末の端末IDとを要求データに付与する。タスク要求情報管理部111は、供給された要求データが示す端末ID及びユーザIDと、供給された時刻を含む時間帯とに履歴情報において対応付けられているプラグインIDがあればそれを読み出し、読み出したプラグインIDが示すプラグインを、見込みプラグインとして特定する。
【0055】
タスク要求情報管理部111は、複数のプラグインIDを読み出した場合は、例えば最も多くの履歴が対応付けられているものが示すプラグインを、見込みプラグインとして特定する。また、タスク要求情報管理部111は、3種類の履歴の全てに対応付けられたプラグインIDがない場合は、2種類の履歴に対応付けられたプラグインIDを読み出して、3種類の履歴の場合と同様に見込みプラグインを特定する。また、それもなければ、1種類の履歴に対応付けられたプラグインIDを読み出して見込みプラグインを特定してもよい。
【0056】
タスク要求情報管理部111は、上述した第1、第2、第3の特定方法のいずれかを用いることで、ユーザ端末3から要求された処理のタスク定義ID、パラメータ又は要求の履歴によって起動される可能性が他のプラグインに比べて高いことが表されるプラグインを見込みプラグインとして特定する。第1の特定方法が用いられた場合は、タスク定義部102が記憶するタスク定義と同じ対応付けがされているタスク定義情報を用いるので、特定された見込みプラグインが要求された処理を必ず実行することになる。
【0057】
一方、見込みプラグインはあくまで要求された処理を実行することが見込まれるプラグインであるから、例えば第2、第3の特定方法で特定された見込みプラグインは要求された処理を実行する可能性は高いものの、見込みプラグインが要求された処理を実行するプラグインではない場合もある。しかし、タスク定義情報が利用できない場合には、第2、第3の特定方法により見込みプラグインの特定が可能になる。タスク要求情報管理部111は、こうして特定した見込みプラグインのプラグインIDをオートスケール管理部115に供給する。
【0058】
オートスケール管理部115は、特定された見込みプラグインが処理を実行する際に使用するリソースを有するインスタンスの起動をプラグイン実行部105に指示し、その指示により起動されたインスタンス上で見込みプラグインを起動させるようプラグイン実行部105に指示する。プラグイン実行部105は、これらの指示に基づいてインスタンス及び見込みプラグインを起動する。
【0059】
オートスケール管理部115及びプラグイン実行部105は、インスタンスを起動する場合は本発明の「仮想マシン起動部」の一例として機能し、プラグインを起動する場合は本発明の「第1起動部」の一例として機能する。このようにプラグインを起動する度にそれに必要なリソースを有するインスタンスを起動することで、例えば複数のプラグインに必要なリソースを有するインスタンスを予め起動する場合に比べて、インスタンスを起動したときに必要なリソースの量が少なくなる。
【0060】
タスク要求情報管理部111が見込みプラグインを特定してオートスケール管理部115及びプラグイン実行部105がその見込みプラグインを起動する方法を第1の起動方法という。一方、タスクサービス部101がメッセージを生成し、キュー103がメッセージを蓄積し、プラグイン管理部104がメッセージを読み出してプラグインの起動を指示してプラグイン実行部105が指示されたプラグインを起動する方法を第2の起動方法という。
【0061】
また、第1の起動方法でプラグイン(見込みプラグイン)を起動するオートスケール管理部115及びプラグイン実行部105を「第1起動部55」といい、第2の起動方法でプラグインを起動するプラグイン管理部104及びプラグイン実行部105を「第2起動部45」という。
【0062】
第2の起動方法では、キュー103からメッセージが読み出されるのを待つ期間が生じるため、第1の起動方法に比べてプラグインが起動されるまでに要する時間が長くなる。そのため、第2の起動方法で起動するプラグインと第1の起動方法で起動するプラグイン(見込みプラグイン)とが一致していると、第2の起動方法ではプラグインを起動する必要がなくなるし、起動するとインスタンスが過剰になって課金される料金も過剰になってしまう。
【0063】
そこで、プラグイン管理部104は、キュー103から読み出したメッセージが示すプラグイン(以下「メッセージプラグイン」という)が第1の起動方法によって既に起動されている場合(つまりメッセージプラグインと見込みプラグインとが一致した場合)には、そのメッセージプラグインを起動させる指示を行わず、起動済みの見込みプラグインにそのメッセージに含まれる内容で処理を実行させるようにプラグイン実行部105に指示する。
【0064】
このように、第2起動部45(プラグイン管理部104及びプラグイン実行部105)は、メッセージプラグインが見込みプラグインとして第1起動部55(オートスケール管理部115及びプラグイン実行部105)により既に起動されている場合には、そのメッセージプラグインを起動させないように動作する。これにより、処理を実行しないプラグインを第2起動部45が起動して余計なリソースを使用することが防がれる。
【0065】
なお、前述したように、メッセージプラグイン(要求された処理を実行するプラグイン)と見込みプラグインとは必ず一致するとは限らない。それらが一致しない場合、すなわちメッセージプラグインが第1起動部55により起動されていない場合(つまり第1起動部55が他のプラグインを見込みプラグインとして起動した場合)には、第2起動部45は、メッセージプラグインを起動する。
【0066】
その場合、プラグイン管理部104は、起動されたメッセージプラグインに対してメッセージに含まれる内容で処理を実行するように指示する。その結果、起動された見込みプラグインは、処理を実行しない状態になる。この場合は、オートスケール管理部115が、処理を一定期間実行していないプラグイン(非処理中プラグイン)だと見込みプラグインのことを把握するので、スケールインの対象だと判断してプラグイン実行部105に停止させる。オートスケール管理部115は本発明の「仮想マシン停止部」の一例である。
【0067】
ただし、オートスケール管理部115は、次の場合にはプラグインを停止させない。オートスケール管理部115は、キュー103を監視し、前述したようにスケールインの対象だと判断した見込みプラグイン(メッセージプラグインと一致しなかった見込みプラグイン)がキュー103に蓄積されている別のメッセージが示すプラグインである場合には、その見込みプラグインを停止させない。
【0068】
そうすることで、要求された処理を実行することが見込まれるプラグインとして特定された見込みプラグインがその要求による処理を実行しなかった場合でも、起動した見込みプラグインが他の処理を実行することになる。これにより、要求された処理を実行しない見込みプラグインを停止させる場合に比べて、その見込みプラグインが実行する見込みであった処理とは別の処理(キュー103に蓄積されているメッセージが示すプラグインが実行する処理)の開始が早期化されることになる。
【0069】
第2起動部45は、前述した別のメッセージをキュー103から読み出した場合、そのメッセージが示すプラグインが第1起動部55により別の処理の見込みプラグインとしてではあるが既に起動されていることになるので、そのプラグインを起動させないように動作する。これにより、処理を実行しないプラグインを第2起動部45が起動して余計なリソースを消費することが防がれる。
【0070】
また、オートスケール管理部115は、前述したようにスケールインの対象だと判断した見込みプラグイン(処理を実行していない見込みプラグイン)が別の要求に基づいてタスク要求情報管理部111によって再度見込みプラグインと特定された場合はその見込みプラグインを停止させない。この場合は、要求された処理を実行しない見込みプラグインを停止させる場合に比べて、その見込みプラグインが実行する見込みであった処理の別の要求に基づく開始が早期化されることになる。
【0071】
クラウドシステム4は、上記の構成に基づいて、プラグインを起動してタスクに含まれる処理を実行するタスク処理を行う。
図8はタスク処理におけるクラウドシステム4の動作手順の一例を表す。この動作手順は、ユーザ端末3からタスクの実行を要求する要求データをクラウドシステム4に向けて送信することを契機に開始される。
【0072】
まず、クラウドシステム4(タスクサービス部101)は、タスクの実行の要求を受け付ける(ステップS10)。その後、クラウドシステム4は、ステップS11からS13までの第1動作とステップS21からS23までの第2動作を並行して行う。まず、クラウドシステム4(タスクサービス部101及びタスク定義部102)は、要求されたタスクに含まれる処理を実行するプラグインを示すメッセージを生成する(ステップS11)。次に、クラウドシステム4(キュー103)は、生成されたメッセージを蓄積する(ステップS12)。続いて、クラウドシステム4(プラグイン管理部104)は、蓄積されたメッセージを読み出す(ステップS13)。ここまでが第1動作である。
【0073】
それと並行して、クラウドシステム4(タスク要求情報管理部111と、タスク定義情報記憶部112、リクエストパラメータ情報記憶部113又は履歴情報記憶部114)は、受け付けられた要求に基づいて見込みプラグインを特定する(ステップS21)。次に、クラウドシステム4(オートスケール管理部115及びプラグイン実行部105)は、インスタンスを起動して(ステップS22)、特定された見込みプラグインをそのインスタンス上で起動する(ステップS23)。ここまでが第2動作である。
【0074】
クラウドシステム4(プラグイン管理部104)は、第1動作で読み出したメッセージが示すメッセージプラグインと、第2動作で起動された見込みプラグインとが一致するか否かを判断する(ステップS31)。クラウドシステム4(プラグイン管理部104及びプラグイン実行部105)は、ステップS31で一致しない(NO)と判断した場合は、インスタンスを起動し(ステップS32)、そのインスタンス上でメッセージプラグインを起動して(ステップS33)、メッセージが示す内容で処理を実行する(ステップS34)。
【0075】
クラウドシステム4(プラグイン管理部104及びプラグイン実行部105)は、ステップS31で一致する(YES)と判断した場合は、起動済みの見込みプラグインにより、メッセージが示す内容で処理を実行する(ステップS34)。そして、クラウドシステム4は、タスクが完了したか否かを判断し(ステップS35)、完了していない(NO)と判断した場合はステップS11及びS21に戻って動作を行い、完了した(YES)と判断した場合はこの動作手順を終了する。
【0076】
また、クラウドシステム4は、上記の構成に基づいて処理を実行していないインスタンスを停止するスケールイン処理を行う。
図9はスケールイン処理におけるクラウドシステム4の動作手順の一例を表す。この動作手順は例えば決められた時間間隔で繰り返し行われる。まず、クラウドシステム4(オートスケール管理部115)は、プラグインによる処理の実行状況を把握して(ステップS41)、処理を実行していない非処理中プラグインがあるか否かを判断する(ステップS42)。
【0077】
クラウドシステム4(オートスケール管理部115)は、ステップS42において非処理中プラグインがない(NO)と判断した場合はステップS41に戻って動作を行い、非処理中プラグインがある(YES)と判断した場合は、その非処理中プラグインを示すメッセージがキュー103に蓄積されているか否かを判断する(ステップS43)。ステップS43において蓄積されている(YES)と判断された場合は、クラウドシステム4(プラグイン管理部104及びプラグイン実行部105)は、非処理中プラグインを停止することなく、非処理中プラグインでそのメッセージが示す内容の処理を実行する(ステップS47)。
【0078】
クラウドシステム4(オートスケール管理部115)は、ステップS43において蓄積されていない(NO)と判断した場合は、非処理中プラグインが見込みプラグインとして特定されたか否かを判断し(ステップS44)、特定されていない(NO)と判断した場合は、非処理中プラグインを停止して(ステップS45)、ステップS41に戻って動作を行う。
【0079】
ステップS44において特定された(YES)と判断された場合は、クラウドシステム4(プラグイン管理部104及びプラグイン実行部105)は、メッセージプラグインと見込みプラグイン(すなわち非処理中プラグイン)が一致するか否かを判断し(ステップS46)、一致する(YES)と判断した場合は、見込みプラグインを起動することなく、且つ、非処理中プラグインを停止することなく、その非処理中プラグインでメッセージが示す内容の処理を実行する(ステップS47)。クラウドシステム4(オートスケール管理部115)は、ステップS46において一致しない(NO)と判断した場合は、ステップS45に進んで非処理中プラグインを停止し(ステップS45)、ステップS41に戻って動作を行う。
【0080】
クラウドシステム4においてはオートスケールを行うことで、処理が実行された後の実行状況に応じてスケールアウトを行いインスタンス毎の負荷を低くして処理の早期終了を図っている。この方法では処理が開始されないとスケールアウトが行われ処理の早期終了の対処がなされない。これに対し、本実施例では、上記のとおり見込みプラグインが起動されることで、要求された処理が実行される前から処理の早期終了のための対処が行われるので、実行状況に応じたスケールアウトだけを行う場合に比べて、さらに早く処理が終了させることになる。
【0081】
[2]変形例
上述した実施例は本発明の実施の一例に過ぎず、以下のように変形させてもよい。また、実施例及び各変形例は、必要に応じて組み合わせて実施してもよい。
【0082】
[2−1]見込みプラグインの起動タイミング
第1起動部55(オートスケール管理部115及びプラグイン実行部105)は、実施例では、見込みプラグインが特定されたらすぐにそれを起動したが、見込みプラグインを起動する際にはインスタンスも新たに起動するため、クラウドシステム4においては課金が開始されることになる。そこで、第1起動部55は、課金される期間を少しでも短くするため、状況に応じて起動タイミングを遅らせてもよい。
【0083】
第1起動部55は、例えば、特定された見込みプラグインの起動に要する時間(起動時間)が短いほどその見込みプラグインを起動させる時期を遅くする。プラグインは、関連するプログラム、データ及びパラメータ等を読み出してメモリに記憶させる起動処理を行うことで起動され、この起動処理にはプラグイン毎に異なる一定の時間(起動時間)が必要になる。プラグインの起動時期とは、この起動処理を開始させる時期のことをいう。第1起動部55は、起動時間に応じて起動時期を異ならせるため、例えば起動時間と起動時期とを対応付けた起動時期テーブルを用いる。
【0084】
図10は起動時期テーブルの一例を表す。図10の例では、「A1未満」、「A1以上A2未満」、「A2以上」という起動時間に、「特定時刻T1+t3」、「特定時刻T1+t2」、「特定時刻T1+t1」(t1<t2<t3)という起動時期がそれぞれ対応付けられている。特定時刻T1は、見込みプラグインが特定された時刻であり、例えばタスク要求情報管理部111から特定した見込みプラグインのプラグインIDが供給された時刻を示す。
【0085】
第1起動部55は、見込みプラグイン毎の起動時間を記憶しておき、見込みプラグインのプラグインIDが供給されて特定時刻T1が確定すると、特定された見込みプラグインの起動時間に起動時期テーブルで対応付けられている起動時期まで待ってから見込みプラグインを起動する。
【0086】
起動時期を一律にすると、起動時間が短いほどインスタンスも早く起動するので、インスタンスの使用料金が高くなる。図10の例では起動時間が短いほど見込みプラグインの起動時期を遅くするので、起動時期を一律にする場合に比べて起動が完了して見込みプラグインが処理を実行可能になる時期が近くなり、各インスタンスが起動されている期間の差異、すなわち使用料金の差異が小さくなる。
【0087】
また、第1起動部55は、キュー103に蓄積されているメッセージが多いほど見込みプラグインを起動させる時期を遅くしてもよい。第1起動部55は、メッセージ数に応じて起動時期を異ならせるため、例えばメッセージ数と起動時期とを対応付けた起動時期テーブルを用いる。
図11は起動時期テーブルの別の一例を表す。図11の例では、「B1未満」、「B1以上B2未満」、「B2以上」というメッセージ数に、「特定時刻T1+t1」、「特定時刻T1+t2」、「特定時刻T1+t3」(t1<t2<t3)という起動時期がそれぞれ対応付けられている。
【0088】
第1起動部55は、見込みプラグインのプラグインIDが供給されて特定時刻T1が確定すると、キュー103を参照してメッセージ数をカウントし、カウントしたメッセージ数に起動時期テーブルで対応付けられている起動時期まで待ってから見込みプラグインを起動する。図11の例ではキュー103に蓄積されているメッセージが多いほど見込みプラグインの起動時期を遅くするので、起動時期を一律にする場合に比べて、見込みプラグインの起動が完了して処理を実行可能になる時期と対応するメッセージが読み出されて処理の実行が開始される時期とが近くなり、特に蓄積されているメッセージ数が多いときに、プラグインが処理を実行していないのにインスタンスが起動している状態となる期間が短くなる。
【0089】
また、第1起動部55は、種類が共通し且つ起動済みのプラグインの数が少ないほど特定されたその種類のプラグインを起動させる時期を早くしてもよい。プラグインには、例えば上述した矩形画像抽出、文書分割、OCR及びコンバージョン等の種類がある。第1起動部55は、起動済みの同種のプラグイン数に応じて起動時期を異ならせるため、例えば同種のプラグイン数と起動時期とを対応付けた起動時期テーブルを用いる。
【0090】
図12は起動時期テーブルの別の一例を表す。図12の例では、「C1未満」、「C1以上C2未満」、「C2以上」というメッセージ数に、「特定時刻T1+t1」、「特定時刻T1+t2」、「特定時刻T1+t3」(t1<t2<t3)という起動時期がそれぞれ対応付けられている。第1起動部55は、見込みプラグインのプラグインIDが供給されて特定時刻T1が確定すると、その見込みプラグインと同種の起動済みのプラグイン数をカウントし、カウントしたプラグイン数に起動時期テーブルで対応付けられている起動時期まで待ってから見込みプラグインを起動する。
【0091】
クラウドシステム4においては、見込みプラグインの起動と並行してプラグインの実行状況に応じたオートスケールが行われている。そのため、見込みプラグインと同種のプラグインも、スケールアウトにより増加したり、スケールインにより減少したりする。その同種のプラグインの数が少ないほど、スケールインがされた場合に対応する処理を実行するプラグインの数が少なくなって処理が遅延しやすくなる。図12の例では起動済みの同種のプラグインが少ないほど見込みプラグインの起動時期を早くしてそれと同種のプラグインの数を早めに増やしているので、起動時期を一律にする場合に比べて、起動済みの同種のプラグインの数が少なくても処理の遅延が生じにくいようになっている。
【0092】
また、第1起動部55は、要求されたタスクに含まれる処理を実行する順番が早いほど特定されたプラグインを起動させる時期を早くしてもよい。タスクに複数の処理が含まれる場合、それらの複数の処理は、複数のプラグインにより順番に実行される。例えば図4に表す「TASK01」は、「PLUG01」(矩形画像抽出)、「PLUG08」(文書分割)、「PLUG13」(経費精算データ送信)の順番で実行される。第1起動部55は、処理を実行する順番に応じて起動時期を異ならせるため、例えば処理の実行順と起動時期とを対応付けた起動時期テーブルを用いる。
【0093】
図13は起動時期テーブルの別の一例を表す。図13の例では、「1番」、「2〜3番」、「4番以降」という処理の実行順に、「特定時刻T1+t1」、「特定時刻T1+t2」、「特定時刻T1+t3」(t1<t2<t3)という起動時期がそれぞれ対応付けられている。この例では、タスク要求情報管理部111が、見込みプラグインを特定する際に、その見込みプラグインの実行順も特定する。
【0094】
例えば、タスク定義情報記憶部112が実行順もタスク定義IDに対応付けてタスク定義情報として記憶しておき、タスク要求情報管理部111が、要求データが示すタスク定義IDにタスク定義情報において対応付けられているプラグインID及び実行順を読み出すことで、見込みプラグインの実行順を特定し、特定した見込みプラグインのプラグインID及び実行順をオートスケール管理部115に供給する。
【0095】
第1起動部55(オートスケール管理部115及びプラグイン実行部105)は、見込みプラグインのプラグインIDが供給されて特定時刻T1が確定すると、ともに供給された実行順に起動時期テーブルで対応付けられている起動時期まで待ってから見込みプラグインを起動する。処理の実行順が早いほど、後から起動されるプラグインの数が増えるから、万が一そのプラグインの起動に遅れ(起動エラー等による遅れ)が生じた場合の影響(遅れが生じるプラグインの数)が大きくなる。図13の例では処理の実行順が早い見込みプラグインほど起動時期を早くするので、起動時期を一律にする場合に比べて、見込みプラグインによる処理の遅延が後続の処理に与える影響が小さくなる。
【0096】
また、第1起動部55は、特定された見込みプラグインと同種のプラグインの起動回数が多いほど見込みプラグインを起動させる時期を早くしてもよい。第1起動部55は、起動回数に応じて起動時期を異ならせるため、例えば起動回数と起動時期とを対応付けた起動時期テーブルを用いる。
【0097】
図14は起動時期テーブルの別の一例を表す。図14の例では、「D1未満」、「D1以上D2未満」、「D2以上」という起動回数に、「特定時刻T1+t3」、「特定時刻T1+t2」、「特定時刻T1+t1」(t1<t2<t3)という起動時期がそれぞれ対応付けられている。この例では、履歴情報記憶部114が、プラグイン実行部105から起動されたプラグインのプラグインIDを供給させることで、そのプラグインIDと起動回数とを対応付けた情報を履歴情報として記憶する。
【0098】
第1起動部55は、見込みプラグインのプラグインIDが供給されて特定時刻T1が確定すると、そのプラグインIDに対応付けて履歴情報記憶部114に記憶されている起動回数に起動時期テーブルで対応付けられている起動時期まで待ってから見込みプラグインを起動する。起動回数が多いプラグインほど、処理を要求されることが多いから、万が一そのプラグインの起動に遅れが生じた場合の影響が大きくなる。図14の例では起動回数が多い見込みプラグインほど起動時期を早くするので、起動時期を一律にする場合に比べて、見込みプラグインによる処理の遅延が後続の処理に与える影響が小さくなる。
【0099】
また、第1起動部55は、特定された見込みプラグインをメッセージプラグインとして示すメッセージよりも前にキュー103に蓄積されたメッセージが示すプラグインにより実行される処理に要する時間(処理時間)が長いほど見込みプラグインを起動させる時期を遅くしてもよい。第1起動部55は、処理時間に応じて起動時期を異ならせるため、例えば処理時間と起動時期とを対応付けた起動時期テーブルを用いる。
【0100】
図15は起動時期テーブルの別の一例を表す。図15の例では、「E1未満」、「E1以上E2未満」、「E2以上」という処理時間に、「特定時刻T1+t1」、「特定時刻T1+t2」、「特定時刻T1+t3」(t1<t2<t3)という起動時期がそれぞれ対応付けられている。この例では、例えばプラグイン管理部104が、キュー103に蓄積されているメッセージを読み出して、読み出したメッセージが示す処理の内容に基づいてその処理に要する時間(処理時間)を算出する。この場合のプラグイン管理部104は本発明の「算出部」の一例である。
【0101】
第1起動部55は、見込みプラグインのプラグインIDが供給されて特定時刻T1が確定すると、そのプラグインIDを示すメッセージよりも前に蓄積されたメッセージについて算出された処理時間の合計時間に起動時期テーブルで対応付けられている起動時期まで待ってから見込みプラグインを起動する。こうして算出された処理時間の合計時間は、見込みプラグインに処理の実行が指示されるまでの待ち時間に相当する。この待ち時間が長いほど起動時期を遅くすることで、起動時期を一律にする場合に比べて、図11の例と同様に、プラグインが処理を実行していないのにインスタンスが起動している状態となる期間が短くなる。
【0102】
[2−2]インスタンス上で起動するプラグインの数
プラグイン実行部105は、実施例では、1つのインスタンス上では1つのプラグインだけを実行したが、これに限らず、1つのインスタンス上で複数のインスタンスを実行してもよい。その場合、オートスケール管理部115は、インスタンス上に非処理中プラグインが1つあっても、他のプラグインが処理を実行していれば、非処理中プラグインだけを停止させて、他のプラグイン及びインスタンスは停止させない。
【0103】
そして、オートスケール管理部115は、インスタンス上の全てのプラグインが非処理中プラグインになった場合のみ、その非処理中プラグイン及びインスタンスを停止させる。いずれの場合も、オートスケール管理部115は、処理が完了したプラグインを停止させるという点では変わらない。オートスケール管理部115は本発明の「機能停止部」の一例である。
【0104】
また、オートスケール管理部115は、プラグインをスケールアウトする際に、いずれかのインスタンスにそのプラグインを起動させるリソースが空いていれば、そのインスタンス上でプラグインを起動させる。このように、オートスケール管理部115は、処理を実行中のプラグインは残しつつ、なるべくインスタンス数が増えないようにオートスケールを制御する。
【0105】
[2−3]プラグインのみのオートスケール
プラグイン実行部105は、実施例では、プラグイン及びインスタンスに対して同時にオートスケールを行った(プラグインを起動するときにはインスタンスも起動し、プラグインを停止するときにはインスタンスも停止した)が、これに限らず、前述した変形例のようにプラグインのみに対してオートスケールを行ってもよい。
【0106】
なお、前述した変形例では1つのインスタンス上で複数のインスタンスを実行したが、実施例のように1つのインスタンス上では1つのプラグインだけを実行する場合に、プラグインのみに対してオートスケールを行ってもよい。その場合、プラグインのみを停止させると、プラグインを実行していない状態のインスタンスが残ることになる。第1起動部55は、そのようにインスタンス上のプラグインが処理を完了して停止されると、特定された見込みプラグインをそのインスタンス上で起動してもよい。
【0107】
インスタンスを起動させるためにはプラグインと同様に一定の時間を要するが、上記のとおり起動済みのインスタンスを再利用することで、インスタンスの起動時間を待つことが不要になる。第1起動部55は、このようにインスタンスを再利用して見込みプラグインを起動する場合には、その見込みプラグインについては図10から図15の説明で述べたような起動時期を変化させる制御を行わなくてよい。
【0108】
インスタンスを再利用する場合は新たなインスタンスの費用は掛からないので、起動時期を遅らせても課金される期間が短縮されない。そうであれば、特定された見込みプラグインを第1起動部55がすぐに起動することで、起動時期を遅らせる場合に比べて、処理の早期終了の可能性が高められる。
【0109】
[2−4]見込みプラグインの再利用
上記の各例では、第1起動部55が常に見込みプラグインを新たに起動したが、既に起動されているプラグインを利用することで、見込みプラグインを新たに起動しないようにしてもよい。具体的には、第1起動部55は、特定された見込みプラグインと同種のプラグインが一定期間処理を実行していない状態で存在する場合(つまり上述した非処理中プラグインが存在する場合)は、見込みプラグインの起動を行わない。
【0110】
そして、このように第1起動部55が見込みプラグインの起動を行わない場合に、プラグイン管理部104は、前述した非処理中プラグインを制御して、その見込みプラグインの特定に用いられた要求がされた処理を実行させる。この場合のプラグイン管理部104は本発明の「実行制御部」の一例である。
【0111】
本変形例でも、非処理中プラグインが起動されているインスタンスが再利用されるので、新たなインスタンスの費用は掛からない。また、インスタンス及びプラグインの両方を再利用することで、それら両方の停止及び起動に要する時間が不要になるから、この再利用を行わない場合に比べて、処理の早期終了の可能性が高められる。
【0112】
[2−5]各機能の実現方法
図3に表す各機能は、2以上の機能が統合されてもよいし、1つの機能が2以上の機能に分割されてもよい。例えば、タスクサービス部101が、タスクの実行の要求を受け付ける受付部と、受け付けた要求に基づいてメッセージの生成等を行う生成部と、要求データをタスク要求情報管理部111に供給して要求内容を通知する通知部とに分割されてもよい。また、オートスケール管理部115が、インスタンスのオートスケールを管理する第1管理部と、プラグインのオートスケールを管理する第2管理部とに分割されてもよい。
【0113】
また、タスク要求情報管理部111、タスク定義情報記憶部112、リクエストパラメータ情報記憶部113及び履歴情報記憶部114が、見込みプラグインを特定する特定部として統合されてもよい。また、図3に表す各部とは別に見込みプラグインを特定する特定部を設けてもよい。要するに、タスクサービス提供システム1の全体で図3に表す各機能と同等の機能が実現されていれば、機能のまとめ方はどのようになっていてもよい。
【0114】
[2−6]発明のカテゴリ
本発明は、サーバ装置10という情報処理装置の他、その情報処理装置を備えるクラウドシステム4又はタスクサービス提供システム1という情報処理システムとしても捉えられる。また、本発明は、各装置が実施する処理を実現するための情報処理方法としても捉えられるし、各装置を制御するコンピュータを機能させるためのプログラムとしても捉えられる。このプログラムは、それを記憶させた光ディスク等の記録媒体の形態で提供されてもよいし、インターネット等の通信回線を介してコンピュータにダウンロードさせ、それをインストールして利用可能にするなどの形態で提供されてもよい。
【符号の説明】
【0115】
1…タスクサービス提供システム、3…ユーザ端末、4…クラウドシステム、10…サーバ装置、101…タスクサービス部、102…タスク定義部、103…キュー、104…プラグイン管理部、105…プラグイン実行部、111…タスク要求情報管理部、112…タスク定義情報記憶部、113…リクエストパラメータ情報記憶部、114…履歴情報記憶部、115…オートスケール管理部。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15