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

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

▶ 株式会社日立製作所の特許一覧

特許6785810シミュレーター、シミュレーション装置、および、シミュレーション方法
<>
  • 特許6785810-シミュレーター、シミュレーション装置、および、シミュレーション方法 図000002
  • 特許6785810-シミュレーター、シミュレーション装置、および、シミュレーション方法 図000003
  • 特許6785810-シミュレーター、シミュレーション装置、および、シミュレーション方法 図000004
  • 特許6785810-シミュレーター、シミュレーション装置、および、シミュレーション方法 図000005
  • 特許6785810-シミュレーター、シミュレーション装置、および、シミュレーション方法 図000006
  • 特許6785810-シミュレーター、シミュレーション装置、および、シミュレーション方法 図000007
  • 特許6785810-シミュレーター、シミュレーション装置、および、シミュレーション方法 図000008
  • 特許6785810-シミュレーター、シミュレーション装置、および、シミュレーション方法 図000009
  • 特許6785810-シミュレーター、シミュレーション装置、および、シミュレーション方法 図000010
  • 特許6785810-シミュレーター、シミュレーション装置、および、シミュレーション方法 図000011
  • 特許6785810-シミュレーター、シミュレーション装置、および、シミュレーション方法 図000012
  • 特許6785810-シミュレーター、シミュレーション装置、および、シミュレーション方法 図000013
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6785810
(24)【登録日】2020年10月29日
(45)【発行日】2020年11月18日
(54)【発明の名称】シミュレーター、シミュレーション装置、および、シミュレーション方法
(51)【国際特許分類】
   G06F 11/34 20060101AFI20201109BHJP
   G06F 8/20 20180101ALI20201109BHJP
【FI】
   G06F11/34 157
   G06F8/20
【請求項の数】14
【全頁数】31
(21)【出願番号】特願2018-37006(P2018-37006)
(22)【出願日】2018年3月1日
(65)【公開番号】特開2019-153017(P2019-153017A)
(43)【公開日】2019年9月12日
【審査請求日】2020年2月20日
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】特許業務法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】中田 侑
(72)【発明者】
【氏名】郡浦 宏明
(72)【発明者】
【氏名】松浦 芳樹
(72)【発明者】
【氏名】津野 高志
【審査官】 今城 朋彬
(56)【参考文献】
【文献】 特開2005−196601(JP,A)
【文献】 特表2004−536406(JP,A)
【文献】 特開2009−009207(JP,A)
【文献】 国際公開第2017/056238(WO,A1)
【文献】 国際公開第2011/105001(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/34
G06F 8/20
(57)【特許請求の範囲】
【請求項1】
(A)下記の(a1)ないし(a3)の情報を入力し、
(a1)複数のサービスで構成されサービス間でリクエストが送受信されることで当該複数のサービスが連携してエンドユーザーからのリクエストに従う処理を実行するサービスシステムにおける各サービス間の依存関係を記述したシステム構成、
(a2)前記複数のサービスのうちの1以上のサービスの各々について下記の(a21)および(a22)を記述した他サービスリクエスト送信ポリシー、
(a21)当該サービスの依存先であるが故にリクエスト送信先となるサービスにおける障害有無と処理速度とのうちの少なくとも1つである処理状況に関する条件、
(a22)当該条件が満たされたとした場合の当該サービスの変更後の処理内容と変更後のリクエスト送信先との少なくとも1つである処理変更、
(a3)前記サービスシステムに前記エンドユーザーとして送信するリクエストの内容と当該リクエストの送信レートとを記述したリクエスト生成ポリシー、
(B)前記リクエスト生成ポリシーに基づくリクエストが前記リクエスト生成ポリシーに基づく送信レートで到着したとした場合の前記サービスシステムの挙動であるシステム挙動のシミュレーションを、前記システム構成および前記他サービスリクエスト送信ポリシーに基づき実行し、
(C)当該シミュレーションの実行結果としての前記システム挙動を表す情報であるシミュレーション結果情報を、出力する、
ことをコンピューターに実行させ、
(B)のシミュレーションの実行中に、
前記他サービスリクエスト送信ポリシー及び前記リクエスト生成ポリシーのうちの少なくとも1つの変更後のポリシーを受け付け、
当該変更後のポリシーを、前記シミュレーションを停止させることなく反映し、
当該反映後のポリシーに従い、当該シミュレーションを継続する、
ことを前記コンピューターに実行させることを特徴とするシミュレーター。
【請求項2】
(A)下記の(a1)ないし(a3)の情報を入力し、
(a1)複数のサービスで構成されサービス間でリクエストが送受信されることで当該複数のサービスが連携してエンドユーザーからのリクエストに従う処理を実行するサービスシステムにおける各サービス間の依存関係を記述したシステム構成、
(a2)前記複数のサービスのうちの1以上のサービスの各々について下記の(a21)および(a22)を記述した他サービスリクエスト送信ポリシー、
(a21)当該サービスの依存先であるが故にリクエスト送信先となるサービスにおける障害有無と処理速度とのうちの少なくとも1つである処理状況に関する条件、
(a22)当該条件が満たされたとした場合の当該サービスの変更後の処理内容と変更後のリクエスト送信先との少なくとも1つである処理変更、
(a3)前記サービスシステムに前記エンドユーザーとして送信するリクエストの内容と当該リクエストの送信レートとを記述したリクエスト生成ポリシー、
(B)前記リクエスト生成ポリシーに基づくリクエストが前記リクエスト生成ポリシーに基づく送信レートで到着したとした場合の前記サービスシステムの挙動であるシステム挙動のシミュレーションを、前記システム構成および前記他サービスリクエスト送信ポリシーに基づき実行し、
(C)当該シミュレーションの実行結果としての前記システム挙動を表す情報であるシミュレーション結果情報を、出力する、
ことをコンピューターに実行させ、
(B)のシミュレーションは、前記システム構成および前記他サービスリクエスト送信ポリシーに基づき、前記サービスシステムが仮想化されたシステムである仮想システムを構築することを含み、
前記仮想システムは、前記複数のサービスが仮想化された複数のサービスである複数の仮想サービスで構成され、
前記1以上のサービスの各々は、出力インターフェースを有し、
前記複数の仮想サービスのうち、前記1以上のサービスにそれぞれ対応する1以上の仮想サービスの各々について、当該仮想サービスが有する出力インターフェースは、前記他サービスリクエスト送信ポリシーに基づく設定がされた出力インターフェースとしてのモジュールである他サービスリクエスト部である、
ことを特徴とするシミュレーター。
【請求項3】
請求項に記載のシミュレーターであって、
前記1以上のサービスの各々は、入力インターフェースを有し、
前記1以上のサービスにそれぞれ対応した1以上の仮想サービスの各々は、更に、
入力インターフェースとしてリクエストを受け付け当該リクエストに従う処理を実行するモジュールであるサービス処理部と、
当該仮想サービスにおける前記サービス処理部及び前記他サービスリクエスト部を制御するモジュールであるサービス制御受信部と
を有する、
ことを特徴とするシミュレーター。
【請求項4】
請求項に記載のシミュレーターであって、
(B)のシミュレーションの実行中であって、前記仮想システムの構築後に、
前記他サービスリクエスト送信ポリシーの変更後のポリシーを受け付け、
当該変更後のポリシーに従う変更対象の他サービスリクエスト部を有する仮想サービスにおけるサービス制御受信部に、当該変更後のポリシーに従う設定の指示を送信する、
ことを前記コンピューターに実行させ、
当該指示を受けたサービス制御受信部は、
当該サービス制御受信部を有する仮想サービス内のサービス処理部を一時停止させ、
当該一時停止中に、当該仮想サービス内の他サービスリクエスト部に対し、当該指示に従う設定を行う、
ことを特徴とするシミュレーター。
【請求項5】
(A)下記の(a1)ないし(a3)の情報を入力し、
(a1)複数のサービスで構成されサービス間でリクエストが送受信されることで当該複数のサービスが連携してエンドユーザーからのリクエストに従う処理を実行するサービスシステムにおける各サービス間の依存関係を記述したシステム構成、
(a2)前記複数のサービスのうちの1以上のサービスの各々について下記の(a21)および(a22)を記述した他サービスリクエスト送信ポリシー、
(a21)当該サービスの依存先であるが故にリクエスト送信先となるサービスにおける障害有無と処理速度とのうちの少なくとも1つである処理状況に関する条件、
(a22)当該条件が満たされたとした場合の当該サービスの変更後の処理内容と変更後のリクエスト送信先との少なくとも1つである処理変更、
(a3)前記サービスシステムに前記エンドユーザーとして送信するリクエストの内容と当該リクエストの送信レートとを記述したリクエスト生成ポリシー、
(B)前記リクエスト生成ポリシーに基づくリクエストが前記リクエスト生成ポリシーに基づく送信レートで到着したとした場合の前記サービスシステムの挙動であるシステム挙動のシミュレーションを、前記システム構成および前記他サービスリクエスト送信ポリシーに基づき実行し、
(C)当該シミュレーションの実行結果としての前記システム挙動を表す情報であるシミュレーション結果情報を、出力する、
ことをコンピューターに実行させ、
(B)のシミュレーションにおいて、
前記システム構成および前記他サービスリクエスト送信ポリシーに基づき、前記サービスシステムが仮想化されたシステムである仮想システムを構築し、
前記リクエスト生成ポリシーに従う内容のリクエストを、前記リクエスト生成ポリシーに従う送信レートで前記エンドユーザーとして前記仮想システムに送信し、
(B)のシミュレーションの実行中であって、前記仮想システムの構築後に、
前記リクエスト生成ポリシーの変更後のポリシーを受け付け、
当該変更後のポリシーに従う内容のリクエストを、当該変更後のポリシーに従う送信レートで前記エンドユーザーとして前記仮想システムに送信する、
ことを前記コンピューターに実行させることを特徴とするシミュレーター。
【請求項6】
(A)下記の(a1)ないし(a3)の情報を入力し、
(a1)複数のサービスで構成されサービス間でリクエストが送受信されることで当該複数のサービスが連携してエンドユーザーからのリクエストに従う処理を実行するサービスシステムにおける各サービス間の依存関係を記述したシステム構成、
(a2)前記複数のサービスのうちの1以上のサービスの各々について下記の(a21)および(a22)を記述した他サービスリクエスト送信ポリシー、
(a21)当該サービスの依存先であるが故にリクエスト送信先となるサービスにおける障害有無と処理速度とのうちの少なくとも1つである処理状況に関する条件、
(a22)当該条件が満たされたとした場合の当該サービスの変更後の処理内容と変更後のリクエスト送信先との少なくとも1つである処理変更、
(a3)前記サービスシステムに前記エンドユーザーとして送信するリクエストの内容と当該リクエストの送信レートとを記述したリクエスト生成ポリシー、
(B)前記リクエスト生成ポリシーに基づくリクエストが前記リクエスト生成ポリシーに基づく送信レートで到着したとした場合の前記サービスシステムの挙動であるシステム挙動のシミュレーションを、前記システム構成および前記他サービスリクエスト送信ポリシーに基づき実行し、
(C)当該シミュレーションの実行結果としての前記システム挙動を表す情報であるシミュレーション結果情報を、出力する、
ことをコンピューターに実行させ、
前記システム構成が含む1以上の情報要素は、前記システム構成に含める情報要素の入力を受け付ける1以上のUI(User Interface)経由で入力された情報要素であり、
前記1以上のUIは、
1又は複数のサービステンプレートから1以上のサービステンプレートの選択を受け付ける第1のUIと、
前記第1のUIから選択された1以上のサービステンプレートにそれぞれ対応した1以上のオブジェクトを表示し当該1以上のオブジェクトの依存関係の指定を受け付ける第2のUIと、
当該1以上のオブジェクトのうちの選択されたオブジェクトに対応したサービステンプレートに対する1以上の値の入力を受け付ける第3のUIと
を含み、
前記複数のサービスの少なくとも1つは、前記第3のUIを介して入力された1以上の値が設定されたサービステンプレートに基づくサービスである、
ことを特徴とするシミュレーター。
【請求項7】
下記の(a1)ないし(a3)の情報、
(a1)複数のサービスで構成されサービス間でリクエストが送受信されることで当該複数のサービスが連携してエンドユーザーからのリクエストに従う処理を実行するサービスシステムにおける各サービス間の依存関係を記述したシステム構成、
(a2)前記複数のサービスのうちの1以上のサービスの各々について下記の(a21)および(a22)を記述した他サービスリクエスト送信ポリシー、
(a21)当該サービスの依存先であるが故にリクエスト送信先となるサービスにおける障害有無と処理速度とのうちの少なくとも1つである処理状況に関する条件、
(a22)当該条件が満たされたとした場合の当該サービスの変更後の処理内容と変更後のリクエスト送信先との少なくとも1つである処理変更、
(a3)前記サービスシステムに前記エンドユーザーとして送信するリクエストの内容と当該リクエストの送信レートとを記述したリクエスト生成ポリシー、
を格納した記憶部と、
下記の処理、
(A)前記システム構成、前記他サービスリクエスト送信ポリシー、および、前記リクエスト生成ポリシーを入力し、
(B)前記リクエスト生成ポリシーに基づくリクエストが前記リクエスト生成ポリシーに基づく送信レートで到着したとした場合の前記サービスシステムの挙動であるシステム挙動のシミュレーションを、前記システム構成および前記他サービスリクエスト送信ポリシーに基づき実行し、
(C)当該シミュレーションの実行結果としての前記システム挙動を表す情報であるシミュレーション結果情報を、出力する、
を実行するシミュレーション部と
を備え
前記シミュレーション部が、(B)のシミュレーションの実行中に、
前記他サービスリクエスト送信ポリシー及び前記リクエスト生成ポリシーのうちの少なくとも1つの変更後のポリシーを受け付け、
当該変更後のポリシーを、前記シミュレーションを停止させることなく反映し、
当該反映後のポリシーに従い、当該シミュレーションを継続する、
シミュレーション装置。
【請求項8】
下記の(a1)ないし(a3)の情報、
(a1)複数のサービスで構成されサービス間でリクエストが送受信されることで当該複数のサービスが連携してエンドユーザーからのリクエストに従う処理を実行するサービスシステムにおける各サービス間の依存関係を記述したシステム構成、
(a2)前記複数のサービスのうちの1以上のサービスの各々について下記の(a21)および(a22)を記述した他サービスリクエスト送信ポリシー、
(a21)当該サービスの依存先であるが故にリクエスト送信先となるサービスにおける障害有無と処理速度とのうちの少なくとも1つである処理状況に関する条件、
(a22)当該条件が満たされたとした場合の当該サービスの変更後の処理内容と変更後のリクエスト送信先との少なくとも1つである処理変更、
(a3)前記サービスシステムに前記エンドユーザーとして送信するリクエストの内容と当該リクエストの送信レートとを記述したリクエスト生成ポリシー、
を格納した記憶部と、
下記の処理、
(A)前記システム構成、前記他サービスリクエスト送信ポリシー、および、前記リクエスト生成ポリシーを入力し、
(B)前記リクエスト生成ポリシーに基づくリクエストが前記リクエスト生成ポリシーに基づく送信レートで到着したとした場合の前記サービスシステムの挙動であるシステム挙動のシミュレーションを、前記システム構成および前記他サービスリクエスト送信ポリシーに基づき実行し、
(C)当該シミュレーションの実行結果としての前記システム挙動を表す情報であるシミュレーション結果情報を、出力する、
を実行するシミュレーション部と
を備え、
(B)のシミュレーションは、前記システム構成および前記他サービスリクエスト送信ポリシーに基づき、前記サービスシステムが仮想化されたシステムである仮想システムを構築することを含み、
前記仮想システムは、前記複数のサービスが仮想化された複数のサービスである複数の仮想サービスで構成され、
前記1以上のサービスの各々は、出力インターフェースを有し、
前記複数の仮想サービスのうち、前記1以上のサービスにそれぞれ対応する1以上の仮想サービスの各々について、当該仮想サービスが有する出力インターフェースは、前記他サービスリクエスト送信ポリシーに基づく設定がされた出力インターフェースとしてのモジュールである他サービスリクエスト部である、
シミュレーション装置。
【請求項9】
下記の(a1)ないし(a3)の情報、
(a1)複数のサービスで構成されサービス間でリクエストが送受信されることで当該複数のサービスが連携してエンドユーザーからのリクエストに従う処理を実行するサービスシステムにおける各サービス間の依存関係を記述したシステム構成、
(a2)前記複数のサービスのうちの1以上のサービスの各々について下記の(a21)および(a22)を記述した他サービスリクエスト送信ポリシー、
(a21)当該サービスの依存先であるが故にリクエスト送信先となるサービスにおける障害有無と処理速度とのうちの少なくとも1つである処理状況に関する条件、
(a22)当該条件が満たされたとした場合の当該サービスの変更後の処理内容と変更後のリクエスト送信先との少なくとも1つである処理変更、
(a3)前記サービスシステムに前記エンドユーザーとして送信するリクエストの内容と当該リクエストの送信レートとを記述したリクエスト生成ポリシー、
を格納した記憶部と、
下記の処理、
(A)前記システム構成、前記他サービスリクエスト送信ポリシー、および、前記リクエスト生成ポリシーを入力し、
(B)前記リクエスト生成ポリシーに基づくリクエストが前記リクエスト生成ポリシーに基づく送信レートで到着したとした場合の前記サービスシステムの挙動であるシステム挙動のシミュレーションを、前記システム構成および前記他サービスリクエスト送信ポリシーに基づき実行し、
(C)当該シミュレーションの実行結果としての前記システム挙動を表す情報であるシミュレーション結果情報を、出力する、
を実行するシミュレーション部と
を備え、
前記シミュレーション部は、(B)のシミュレーションにおいて、
前記システム構成および前記他サービスリクエスト送信ポリシーに基づき、前記サービスシステムが仮想化されたシステムである仮想システムを構築し、
前記リクエスト生成ポリシーに従う内容のリクエストを、前記リクエスト生成ポリシーに従う送信レートで前記エンドユーザーとして前記仮想システムに送信し、
(B)のシミュレーションの実行中であって、前記仮想システムの構築後に、
前記リクエスト生成ポリシーの変更後のポリシーを受け付け、
当該変更後のポリシーに従う内容のリクエストを、当該変更後のポリシーに従う送信レートで前記エンドユーザーとして前記仮想システムに送信する、
シミュレーション装置。
【請求項10】
下記の(a1)ないし(a3)の情報、
(a1)複数のサービスで構成されサービス間でリクエストが送受信されることで当該複数のサービスが連携してエンドユーザーからのリクエストに従う処理を実行するサービスシステムにおける各サービス間の依存関係を記述したシステム構成、
(a2)前記複数のサービスのうちの1以上のサービスの各々について下記の(a21)および(a22)を記述した他サービスリクエスト送信ポリシー、
(a21)当該サービスの依存先であるが故にリクエスト送信先となるサービスにおける障害有無と処理速度とのうちの少なくとも1つである処理状況に関する条件、
(a22)当該条件が満たされたとした場合の当該サービスの変更後の処理内容と変更後のリクエスト送信先との少なくとも1つである処理変更、
(a3)前記サービスシステムに前記エンドユーザーとして送信するリクエストの内容と当該リクエストの送信レートとを記述したリクエスト生成ポリシー、
を格納した記憶部と、
下記の処理、
(A)前記システム構成、前記他サービスリクエスト送信ポリシー、および、前記リクエスト生成ポリシーを入力し、
(B)前記リクエスト生成ポリシーに基づくリクエストが前記リクエスト生成ポリシーに基づく送信レートで到着したとした場合の前記サービスシステムの挙動であるシステム挙動のシミュレーションを、前記システム構成および前記他サービスリクエスト送信ポリシーに基づき実行し、
(C)当該シミュレーションの実行結果としての前記システム挙動を表す情報であるシミュレーション結果情報を、出力する、
を実行するシミュレーション部と
を備え、
前記システム構成が含む1以上の情報要素は、前記システム構成に含める情報要素の入力を受け付ける1以上のUI(User Interface)経由で入力された情報要素であり、
前記1以上のUIは、
1又は複数のサービステンプレートから1以上のサービステンプレートの選択を受け付ける第1のUIと、
前記第1のUIから選択された1以上のサービステンプレートにそれぞれ対応した1以上のオブジェクトを表示し当該1以上のオブジェクトの依存関係の指定を受け付ける第2のUIと、
当該1以上のオブジェクトのうちの選択されたオブジェクトに対応したサービステンプレートに対する1以上の値の入力を受け付ける第3のUIと
を含み、
前記複数のサービスの少なくとも1つは、前記第3のUIを介して入力された1以上の値が設定されたサービステンプレートに基づくサービスである、
シミュレーション装置。
【請求項11】
(A)下記の(a1)ないし(a3)の情報を入力し、
(a1)複数のサービスで構成されサービス間でリクエストが送受信されることで当該複数のサービスが連携してエンドユーザーからのリクエストに従う処理を実行するサービスシステムにおける各サービス間の依存関係を記述したシステム構成、
(a2)前記複数のサービスのうちの1以上のサービスの各々について下記の(a21)および(a22)を記述した他サービスリクエスト送信ポリシー、
(a21)当該サービスの依存先であるが故にリクエスト送信先となるサービスにおける障害有無と処理速度とのうちの少なくとも1つである処理状況に関する条件、
(a22)当該条件が満たされたとした場合の当該サービスの変更後の処理内容と変更後のリクエスト送信先との少なくとも1つである処理変更、
(a3)前記サービスシステムに前記エンドユーザーとして送信するリクエストの内容と当該リクエストの送信レートとを記述したリクエスト生成ポリシー、
(B)前記リクエスト生成ポリシーに基づくリクエストが前記リクエスト生成ポリシーに基づく送信レートで到着したとした場合の前記サービスシステムの挙動であるシステム挙動のシミュレーションを、前記システム構成および前記他サービスリクエスト送信ポリシーに基づき実行し、
(C)当該シミュレーションの実行結果としての前記システム挙動を表す情報であるシミュレーション結果情報を、出力
(B)のシミュレーションの実行中に、
前記他サービスリクエスト送信ポリシー及び前記リクエスト生成ポリシーのうちの少なくとも1つの変更後のポリシーを受け付け、
当該変更後のポリシーを、前記シミュレーションを停止させることなく反映し、
当該反映後のポリシーに従い、当該シミュレーションを継続する、
シミュレーション方法。
【請求項12】
(A)下記の(a1)ないし(a3)の情報を入力し、
(a1)複数のサービスで構成されサービス間でリクエストが送受信されることで当該複数のサービスが連携してエンドユーザーからのリクエストに従う処理を実行するサービスシステムにおける各サービス間の依存関係を記述したシステム構成、
(a2)前記複数のサービスのうちの1以上のサービスの各々について下記の(a21)および(a22)を記述した他サービスリクエスト送信ポリシー、
(a21)当該サービスの依存先であるが故にリクエスト送信先となるサービスにおける障害有無と処理速度とのうちの少なくとも1つである処理状況に関する条件、
(a22)当該条件が満たされたとした場合の当該サービスの変更後の処理内容と変更後のリクエスト送信先との少なくとも1つである処理変更、
(a3)前記サービスシステムに前記エンドユーザーとして送信するリクエストの内容と当該リクエストの送信レートとを記述したリクエスト生成ポリシー、
(B)前記リクエスト生成ポリシーに基づくリクエストが前記リクエスト生成ポリシーに基づく送信レートで到着したとした場合の前記サービスシステムの挙動であるシステム挙動のシミュレーションを、前記システム構成および前記他サービスリクエスト送信ポリシーに基づき実行し、
(C)当該シミュレーションの実行結果としての前記システム挙動を表す情報であるシミュレーション結果情報を、出力し、
(B)のシミュレーションは、前記システム構成および前記他サービスリクエスト送信ポリシーに基づき、前記サービスシステムが仮想化されたシステムである仮想システムを構築することを含み、
前記仮想システムは、前記複数のサービスが仮想化された複数のサービスである複数の仮想サービスで構成され、
前記1以上のサービスの各々は、出力インターフェースを有し、
前記複数の仮想サービスのうち、前記1以上のサービスにそれぞれ対応する1以上の仮想サービスの各々について、当該仮想サービスが有する出力インターフェースは、前記他サービスリクエスト送信ポリシーに基づく設定がされた出力インターフェースとしてのモジュールである他サービスリクエスト部である、
シミュレーション方法。
【請求項13】
(A)下記の(a1)ないし(a3)の情報を入力し、
(a1)複数のサービスで構成されサービス間でリクエストが送受信されることで当該複数のサービスが連携してエンドユーザーからのリクエストに従う処理を実行するサービスシステムにおける各サービス間の依存関係を記述したシステム構成、
(a2)前記複数のサービスのうちの1以上のサービスの各々について下記の(a21)および(a22)を記述した他サービスリクエスト送信ポリシー、
(a21)当該サービスの依存先であるが故にリクエスト送信先となるサービスにおける障害有無と処理速度とのうちの少なくとも1つである処理状況に関する条件、
(a22)当該条件が満たされたとした場合の当該サービスの変更後の処理内容と変更後のリクエスト送信先との少なくとも1つである処理変更、
(a3)前記サービスシステムに前記エンドユーザーとして送信するリクエストの内容と当該リクエストの送信レートとを記述したリクエスト生成ポリシー、
(B)前記リクエスト生成ポリシーに基づくリクエストが前記リクエスト生成ポリシーに基づく送信レートで到着したとした場合の前記サービスシステムの挙動であるシステム挙動のシミュレーションを、前記システム構成および前記他サービスリクエスト送信ポリシーに基づき実行し、
(C)当該シミュレーションの実行結果としての前記システム挙動を表す情報であるシミュレーション結果情報を、出力し、
(B)のシミュレーションにおいて、
前記システム構成および前記他サービスリクエスト送信ポリシーに基づき、前記サービスシステムが仮想化されたシステムである仮想システムを構築し、
前記リクエスト生成ポリシーに従う内容のリクエストを、前記リクエスト生成ポリシーに従う送信レートで前記エンドユーザーとして前記仮想システムに送信し、
(B)のシミュレーションの実行中であって、前記仮想システムの構築後に、
前記リクエスト生成ポリシーの変更後のポリシーを受け付け、
当該変更後のポリシーに従う内容のリクエストを、当該変更後のポリシーに従う送信レートで前記エンドユーザーとして前記仮想システムに送信する、
シミュレーション方法。
【請求項14】
(A)下記の(a1)ないし(a3)の情報を入力し、
(a1)複数のサービスで構成されサービス間でリクエストが送受信されることで当該複数のサービスが連携してエンドユーザーからのリクエストに従う処理を実行するサービスシステムにおける各サービス間の依存関係を記述したシステム構成、
(a2)前記複数のサービスのうちの1以上のサービスの各々について下記の(a21)および(a22)を記述した他サービスリクエスト送信ポリシー、
(a21)当該サービスの依存先であるが故にリクエスト送信先となるサービスにおける障害有無と処理速度とのうちの少なくとも1つである処理状況に関する条件、
(a22)当該条件が満たされたとした場合の当該サービスの変更後の処理内容と変更後のリクエスト送信先との少なくとも1つである処理変更、
(a3)前記サービスシステムに前記エンドユーザーとして送信するリクエストの内容と当該リクエストの送信レートとを記述したリクエスト生成ポリシー、
(B)前記リクエスト生成ポリシーに基づくリクエストが前記リクエスト生成ポリシーに基づく送信レートで到着したとした場合の前記サービスシステムの挙動であるシステム挙動のシミュレーションを、前記システム構成および前記他サービスリクエスト送信ポリシーに基づき実行し、
(C)当該シミュレーションの実行結果としての前記システム挙動を表す情報であるシミュレーション結果情報を、出力し、
前記システム構成が含む1以上の情報要素は、前記システム構成に含める情報要素の入力を受け付ける1以上のUI(User Interface)経由で入力された情報要素であり、
前記1以上のUIは、
1又は複数のサービステンプレートから1以上のサービステンプレートの選択を受け付ける第1のUIと、
前記第1のUIから選択された1以上のサービステンプレートにそれぞれ対応した1以上のオブジェクトを表示し当該1以上のオブジェクトの依存関係の指定を受け付ける第2のUIと、
当該1以上のオブジェクトのうちの選択されたオブジェクトに対応したサービステンプレートに対する1以上の値の入力を受け付ける第3のUIと
を含み、
前記複数のサービスの少なくとも1つは、前記第3のUIを介して入力された1以上の値が設定されたサービステンプレートに基づくサービスである、
シミュレーション方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、設計されたシステムのシミュレーションに関する。
【背景技術】
【0002】
設計されたシステムのシミュレーションに関する技術として、特許文献1に開示の技術が知られている。特許文献1に開示のシミュレーターは、設計したシステムに、入力負荷と、システムを構成するハードウェア故障といった外乱とを与えた時の、システムの挙動を出力する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2005-196601号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
以下、「システム開発」は、システムの設計と構築を含む。すなわち、システム開発では、システムの設計、設計されたシステムの構築、および、構築されたシステムの検証といったプロセスを経て、システムの開発が完成する。
【0005】
近年、クラウドコンピューティングの普及によって、マイクロサービスアーキテクチャに基づくシステム開発が一般化している。マイクロサービスアーキテクチャに基づくシステム開発では、サービスシステムが、開発者が開発したサービスと、他のベンダーが開発したサービスと、クラウドコンピューティングの提供元が提供するサービスといった複数のサービスを組み合わせて構築されることが多い。これらのサービスは、分散環境(例えば、複数の計算機(例えば汎用計算機)から構成された分散型の計算機システム)上で分散的にデプロイされることが多い。そして、個々のサービスにはAPI(Application Programming Interface)が用意されており、サービス同士が互いにネットワークを経由して処理のリクエストを送信し合い、サービスシステムの処理(例えば、1又は複数の業務)が実現される。このようなシステム開発によって、サービスの再利用性による迅速なシステムの構築や、迅速なリソースの確保によるスケーリング性能の向上が可能となり、開発と運用の両面からメリットが期待されている。
【0006】
しかし、マイクロサービスアーキテクチャに基づくシステム開発の欠点は、サービスシステムのレスポンスタイムが変動する場合の原因究明や、サービスの障害への対応を設計することが困難なことである。
【0007】
モノリシックのシステム開発、すなわち、単一のサーバ上に展開されるサービスシステムのシステム開発では、サービスシステムのレスポンスタイムが変動する場合の原因究明は比較的容易である。なぜなら、サービスシステム内の処理の流れがたどりやすく、さらに実行時のリソース消費量などを監視することが、単一のサーバで完結するためである。そのため、あらかじめ障害となりうる箇所も推測しやすく、対応も設計に組み入れるのが比較的容易である。
【0008】
これに対し、マイクロサービスアーキテクチャでは、小規模の独立した処理が分散環境としての計算機システムで実行され、サービスシステムに対する一つのリクエストに関する処理が、計算機システムを構成する複数のサービスが分散されたサーバ間にまたがるため、開発時および実行時に処理の流れを捉えることが難しくなる。また、一つのリクエストに対する処理が、多数の箇所(サーバ)で処理が実行されるため、サーバ間で多数の通信が発生する。そのため、処理のボトルネックが、今まで存在しにくかったネットワークやメッセージキューに存在する可能性がある。さらに、同一のサービスシステムのうちの少なくとも一部のサービスが異なる開発組織によって開発されたサービスであることもあるため、サービスシステム内で利用される全サービスの処理内容や特徴を把握できる者(例えば開発者または設計者)は少ない。
【0009】
一般的なシステム開発では、設計したシステムの可用性の検証のために、設計したシステムを試験的に構築した後で(つまり、本番環境と同等の試験環境としての試験用のシステムを構築した後で)、負荷試験やレスポンスタイムの測定を行いその試験結果を基に設計を見直すといったことを繰り返すことが行われる。ただし、この方法は、試験のための試験環境が必要であり、時間的コストが大きい。
【0010】
そこで、特許文献1のようなシミュレーション技術の利用をして、サービスシステムの構築の前に当該サービスシステムの可用性を推定することが考えられる。
【0011】
しかしながら、特許文献1におけるシミュレーション対象のシステムは、サービスシステムとは異なり、複数のサーバから構成されたシステム(例えば3階層Webシステム)である。つまり、特許文献1では、シミュレーション対象のシステムの構成要素は、サーバであり、いわゆるオートスケールによりシステムが維持される。
【0012】
一方、サービスシステム(典型的には、マイクロサービスアーキテクチャに基づくシステム開発において設計されたサービスシステム)がデプロイされる計算機システム(複数のサーバ)は、一般に、システム開発側(例えば、サービスシステムを提供する企業)の管理下に無い計算機システム(例えば、クラウドコンピューティングを提供する企業の管理下の計算機システム)である。
【0013】
従って、システム開発側で、サービスシステムの可用性を維持するために計算機システムにおけるオートスケールの仕方を制御するといった手法を取ることはできない。つまり、サービスシステムの可用性の検証のためのシミュレーションに、特許文献1に開示の技術を適用することはできない。
【課題を解決するための手段】
【0014】
いずれのサービスに不具合が生じても(例えば、一部のサービスで障害やレスポンスタイムの変動といった不具合が生じても)、サービスシステム全体として期待する動作(例えば、エンドユーザーに対して何らかのレスポンスを返すこと)を保証することができるようにするために、不具合が生じたサービスに依存するサービスの処理内容およびリクエスト送信先の少なくとも1つが変更される。例えば、あるサービスから当該あるサービスの依存先のサービスにリクエストが送信されたが一定時間経っても依存先のサービスから当該あるサービスにレスポンスが返ってない場合に、当該あるサービスが、下記のうちのいずれかを実行することが考えられる。
・当該あるサービスが、エラー通知を生成し、当該サービスの依存元(またはエンドユーザ)にエラー通知を返す(当該あるサービスの処理内容の変更の一例)。
・当該あるサービスが、リクエスト送信先を、依存先のサービスから、アラート通知用のサービスや、代替サービスに変更する(当該あるサービスのリクエスト送信先の変更の一例)。
・当該あるサービスが、一定頻度で送信されるリクエストの大部分のリクエストを変更後のリクエスト送信先に送信するが、一部のリクエストを、依存先のサービスの不具合が解消しているかもしれないために依存先のサービスに送信する(当該あるサービスの処理内容およびリクエスト送信先の変更の一例)。
【0015】
このようにサービスシステム内で処理内容およびリクエスト送信先の少なくとも1つを変更することをシミュレーションにおいて実現(再現)するために、下記の(a1)ないし(a3)の情報が、シミュレーターに入力される。
(a1)複数のサービスで構成されサービス間でリクエストが送受信されることで当該複数のサービスが連携してエンドユーザーからのリクエストに従う処理を実行するサービスシステムにおける各サービス間の依存関係を記述したシステム構成。
(a2)前記複数のサービスのうちの1以上のサービスの各々について下記を記述した他サービスリクエスト送信ポリシー。
・当該サービスの依存先であるが故にリクエスト送信先となるサービスにおける障害有無と処理速度とのうちの少なくとも1つである処理状況に関する条件。
・当該条件が満たされたとした場合の当該サービスの変更後の処理内容と変更後のリクエスト送信先との少なくとも1つである処理変更。
(a3)サービスシステムにエンドユーザーとして送信するリクエストの内容と当該リクエストの送信レートとを記述したリクエスト生成ポリシー。
【0016】
シミュレーターは、リクエスト生成ポリシーに基づくリクエストが当該リクエスト生成ポリシーに基づく送信レートで到着したとした場合のサービスシステムの挙動であるシステム挙動のシミュレーションを、システム構成および他サービスリクエスト送信ポリシーに基づき実行し、当該シミュレーションの実行結果としてのシステム挙動を表す情報であるシミュレーション結果情報を、出力する。
【発明の効果】
【0017】
複数のサービスで構成されたサービスシステム、特に、マイクロサービスアーキテクチャに基づき設計され分散環境にデプロイされるようなサービスシステムにおいて、リクエスト送信先および処理内容の少なくとも1つを変更することを、シミュレーションにおいて実現(再現)することができ、当該変更が行われた場合のシステム挙動をシミュレートして出力することができる。このため、サービスシステムの可用性を推定することができる。
【0018】
本明細書において開示される主題の、少なくとも一つの実施例の詳細は、添付されている図面と以下の記述の中で述べられる。開示される主題のその他の特徴、態様、効果は、以下の開示、図面、請求項により明らかにされる。
【図面の簡単な説明】
【0019】
図1】マイクロサービスシミュレーターの入出力を例示する図。
図2】マイクロサービスシミュレーターの利用フローを例示する図。
図3】シミュレーション入力データ作成ツールおよびマイクロサービスシミュレーターの実行に用いられる装置の内部構成を示す図。
図4】シミュレーション入力データ作成ツールにより表示されるシステム構成作成支援画面を例示する図。
図5】他サービスリクエスト送信ポリシーの一例を示す図。
図6】リクエスト生成ポリシーの一例を示す図。
図7】マイクロサービスシミュレーターのシステム構成を例示する図。
図8】シミュレーション環境構築時の処理シーケンスを例示する図。
図9】シミュレーション中のポリシー変更の処理シーケンスを例示する図。
図10】システムへのリクエストに対する処理シーケンスを例示する図。
図11】マイクロサービスシミュレーターへの外乱設定時の処理シーケンスを例示する図。
図12】外乱発生シナリオの一例を示す図。
【発明を実施するための形態】
【0020】
以下の説明では、「インターフェースデバイス部」は、1以上のインターフェースデバイスでよい。当該1以上のインターフェースデバイスは、下記のうちのいずれでもよい。
・I/O(Input/Output)デバイスと遠隔の表示用計算機とのうちの少なくとも1つに対するI/Oインターフェースデバイス。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも1つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・1以上の通信インターフェースデバイス。1以上の通信インターフェースデバイスは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
【0021】
また、以下の説明では、「メモリ部」は、1以上のメモリであり、典型的には主記憶デバイスでよい。メモリ部における少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
【0022】
また、以下の説明では、「PDEV部」は、1以上のPDEVであり、典型的には補助記憶デバイスでよい。「PDEV」は、物理的な記憶デバイス(Physical storage DEVice)を意味し、典型的には、不揮発性の記憶デバイス、例えばHDD(Hard Disk Drive)またはSSD(Solid State Drive)である。
【0023】
また、以下の説明では、「記憶部」は、メモリ部およびPDEV部のうちの少なくとも1つ(典型的には少なくともメモリ部)である。
【0024】
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。少なくとも1つのプロセッサは、シングルコアでもよいしマルチコアでもよい。少なくとも1つのプロセッサは、処理の一部または全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
【0025】
また、以下の説明では、「kkk部」(インターフェースデバイス部、記憶部およびプロセッサ部を除く)の表現にて機能を説明することがあるが、機能は、1以上のコンピュータープログラムがプロセッサ部によって実行されることで実現されてもよいし、1以上のハードウェア回路によって実現されてもよい。プログラムがプロセッサ部によって実行されることで機能が実現される場合、定められた処理が、適宜に記憶部および/または通信インターフェースデバイス部等を用いながら行われるため、機能はプロセッサ部の少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサ部あるいはそのプロセッサ部を有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機または計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。各機能の説明は一例であり、複数の機能が1つの機能にまとめられたり、1つの機能が複数の機能に分割されたりしてもよい。
【0026】
また、以下の説明では、「データセット」とは、プログラムから見た1つの論理的な電子データの塊であり、例えば、レコード、ファイル、キーバリューペア及びタプルのうちのいずれでもよい。
【0027】
また、以下の説明では、「xxxデータセット」といった表現にて、入力に対して出力が得られるデータセット(情報)を説明することがあるが、データセットは、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。以下の説明において、各データセットの構成は一例であり、1つのデータセットは、2以上のデータセットに分割されてもよいし、2以上のデータセットの全部または一部が1つのデータセットであってもよい。
【0028】
また、以下の説明では、装置が「表示用情報を表示する」ことは、装置が有する表示デバイスに表示用情報を表示することであってもよいし、装置が表示用計算機に表示用情報を送信することであってもよい(後者の場合は表示用計算機によって表示用情報が表示される)。表示用情報の一例が、システム挙動を表す情報であるシミュレーション結果情報である。
【0029】
以下、本発明の好適な一実施例について、図面を用いて説明する。
【0030】
本実施例に係るシミュレーターは、マイクロサービスアーキテクチャに基づき設計されたサービスシステムの可用性を推定するためのシミュレーターに係る。そこで、以下、本シミュレーターを、「マイクロサービスシミュレーター」と呼ぶ。また、マイクロサービスシミュレーター内で構築した後述の仮想システム(仮想的なサービスシステム)内の仮想サービス(サービスに対応した仮想的なサービス)に対して意図的に発生させる、過負荷状態やレスポンスタイムの長時間化などを、「外乱」と呼ぶ。
【0031】
図1は、マイクロサービスシミュレーターの入出力の例を示す。
【0032】
マイクロサービスシミュレーター0112の入力は、システム構成0106と、リクエスト生成ポリシー0108と、他サービスリクエスト送信ポリシー0107である。これらの入力データは、入力データストレージ0105に保存される。
【0033】
システム構成0106は、サービスシステムを構成するサービスと、サービス間の依存関係を示したデータセットである。システム構成0106の詳細は、図4を基に説明は後述する。
【0034】
他サービスリクエスト送信ポリシー0107は、複数のサービスのうちの1以上のサービスの各々について、(1)当該サービスの依存先であるが故にリクエスト送信先となるサービスにおける障害有無と処理速度とのうちの少なくとも1つである処理状況に関する条件、および、(2)当該条件が満たされたとした場合の当該サービスの変更後の処理内容と変更後のリクエスト送信先との少なくとも1つである処理変更、を記述したデータセットである。他サービスリクエスト送信ポリシー0107は、例えば、各サービスが、依存する別のサービスへリクエストを送る際のポリシーを示すデータセットである。他サービスリクエスト送信ポリシー0107の中で、依存先のサービスの状態によって、リクエストの送信先を変更することを記述できるものとする。また、自身のサービスの処理内容を変更することも記述できるものとする。例えば、あるサービスが、依存先のサービスでレスポンスタイムがある閾値を超えた場合に、その依存先のサービスへリクエストを送信せず、自身のサービスへリクエストを送信したリクエスト元のサービスにエラーメッセージを送ることが記述できる。
【0035】
リクエスト生成ポリシー0108は、シミュレーション中に、マイクロサービスシミュレーター0112内に構築した仮想システムへ疑似的に送信されるメッセージを作成する際に用いられるポリシーである。リクエスト生成ポリシー0108では、生成されるメッセージの内容と、送信先のサービスと、一定時間内の送信レートが指定可能である。また送信に用いられるプロトコルを指定することも可能とする。プロトコルが指定できることで、プロトコル特有の送信速度や、再送制御や、同期通信または非同期通信などの特性をシミュレーション内で再現することができる。また、リクエスト生成ポリシー0108では、生成するリクエスト数を指定することもできる。リクエスト数は、無限を指定することで、シミュレーションを永続的に稼動させることが可能である。この場合、シミュレーションは、マイクロサービスシミュレーター0112のユーザー(例えばシステム設計者)が、マイクロサービスシミュレーター0112に対してシミュレーション終了を命令することで終了する。
【0036】
以降では、システム構成0106と、リクエスト生成ポリシー0108と、他サービスリクエスト送信ポリシー0107を総称して、「入力データ」と呼ぶ。また、これ以降に記載するユーザーは、全て、マイクロサービスシミュレーター0112のユーザーを指すものとする。なお、「エンドユーザー」は、サービスシステムのユーザーを指すものとし、例えば、サービスシステムに対するリクエストの発行元である。
【0037】
マイクロサービスシミュレーター0112の外部には、シミュレーション入力データ作成ツール0103、外乱入力コンソール0110およびポリシー入力コンソール0113が存在する。これらの要素0103、0110および0113のいずれも、コンピュータープログラムであってもよいし物理的な装置であってもよい。例えば、クラウド基盤(複数の計算リソースを有する計算機システム)において、マイクロサービスシミュレーター0112、シミュレーション入力データ作成ツール0103、外乱入力コンソール0110およびポリシー入力コンソール0113のうちの少なくとも1つが実行されてよい。
【0038】
入力データは、ユーザーが、シミュレーション入力データ作成ツール0103を用いて作成することができる。シミュレーション入力データ作成ツール0103は、システム構成0106、他サービスリクエスト送信ポリシー0107、および、リクエスト生成ポリシー0108のうちの少なくとも1つに含める情報要素の入力を受け付ける1以上のUI(User Interface)を表示する。当該1以上のUIは、1又は複数のGUI(Graphical User Interface)に含まれていてよい。当該1以上のUI経由で入力された情報要素が、システム構成0106、他サービスリクエスト送信ポリシー0107、および、リクエスト生成ポリシー0108のうちの少なくとも1つに含まれる。シミュレーション入力データ作成ツール0103が提供する1以上のUIを利用して効率的に入力データを用意することが期待される。例えば、シミュレーション入力データ作成ツール0103は、シミュレーション中に仮想システムに投入するリクエストメッセージのテンプレートを格納するDB(データベース)であるリクエストテンプレートDB0101から、メッセージのテンプレートをインポート可能である。また、サービスシステムを構成するサービスのテンプレートを格納するサービステンプレートDB0102から、サービスのテンプレートをインポート可能である。さらに、作成した入力ファイルを入力データリポジトリ0104に保存し、次回作成する際にインポートすることが可能である。なお、入力データは、ユーザーが、任意のエディタで作成することは可能なものとする。
【0039】
マイクロサービスシミュレーター0112は、システム挙動の情報の出力の一例として、各サービスのリクエスト処理時間であるレスポンスタイムの推移や、ある時刻に各サービスが消費するリソース量を表す情報を出力(表示)することができる。これらの情報の出力の一例は、システム挙動を表示するUIの一例であるシステム挙動出力画面(例えばGUI)0111の出力である。システム挙動出力画面0111によって、出力結果をグラフ化して出力することが可能である。すなわち、マイクロサービスシミュレーター0112は、マイクロサービスアーキテクチャに基づき設計されたサービスシステム(ITシステムと呼ばれてもよい)に所望の可用性があることを確認するために、システム開発側において設計されたサービスシステムに対して想定されるリクエストが入力された際のシステム挙動(例えば、各サービスのレスポンスタイムや利用リソース量の推移)を推定し、当該システム挙動を可視化することができる。また、シミュレーションログDB0113にログとして保存することが可能である。
【0040】
サービスシステムの可用性を測るためには、シミュレーションの途中で、特定のサービスに意図的に外乱を発生させ、外乱発生時の可用性を確認することが望ましい。そこで、ユーザーは、外乱入力コンソール0110を用いて、シミュレーションの実行中に、特定のサービスに対して、外乱(例えば、障害、または、過負荷によるレスポンスタイムの長時間化)を、意図的に発生させることができる。また、ユーザーが外乱入力コンソール0110で入力した外乱は、入力データストレージ0105内に、外乱発生シナリオ0109として保存することができるものとする。外乱発生シナリオ0109は、サービスシステムに含まれる少なくとも1つのサービスのIDと、当該少なくとも1つのサービスについて指定時点での外乱(意図的な処理停止、処理速度向上または処理速度低下)とを記述したデータセットである。外乱発生シナリオ0109は、シミュレーション開始前に(または、シミュレーションの実行中に)、マイクロサービスシミュレーター0112に入力され、シミュレーション開始後にマイクロサービスシミュレーター0112が外乱発生シナリオ0109に沿って仮想システム内の仮想サービスに外乱を発生させることができる。
【0041】
サービスシステムの可用性を測るためには、シミュレーションの途中で(例えば、システム挙動出力画面0111が表示するレスポンスタイムや消費リソース量の推移を基に)、エンドユーザーとして発行するリクエストの内容または送信レートや、少なくとも1つのサービスの処理内容またはリクエスト送信先を変更することが望ましい。そこで、ユーザーは、ポリシー入力コンソール0113を用いて、シミュレーションの実行中に、他サービスリクエスト送信ポリシー0107およびリクエスト生成ポリシー0108の少なくとも1つを変更し、マイクロサービスシミュレーター0112は、変更後のポリシーをシミュレーション実行中に受け付け、変更後のポリシーを、シミュレーションを停止させることなく反映し、当該反映後のポリシーに従い、当該シミュレーションを継続する。これにより、推定されたシステム挙動の出力と当該出力に基づくポリシー変更との繰り返しを、シミュレーションを止めずに行うといった、効率的な処理が期待できる。なお、ユーザーがポリシー入力コンソール0113で入力したポリシーは、入力データストレージ0105内に、他サービスリクエスト送信ポリシー0107およびリクエスト生成ポリシー0108のいずれかとして保存することができるものとする。
【0042】
本実施例によれば、マイクロサービスシミュレーター0112は、上述したシステム構成0106、他サービスリクエスト生成ポリシー0107、および、リクエスト生成ポリシー0108を入力し、リクエスト生成ポリシー0108に基づくリクエストが当該ポリシー0108に基づく送信レートで到着したとした場合のシステム挙動のシミュレーションを、システム構成0106および他サービスリクエスト送信ポリシー0107に基づき実行し、当該システム挙動を表す情報を表示する。これにより、マイクロサービスアーキテクチャに基づき設計され分散環境にデプロイされるようなサービスシステムにおいて、リクエスト送信先および処理内容の少なくとも1つを変更することを、シミュレーションにおいて実現(再現)することができ、当該変更が行われた場合のシステム挙動をシミュレートして出力することができる。このため、サービスシステムの可用性を推定することができる。
【0043】
具体的には、例えば、マイクロサービスシミュレーター0112は、シミュレーションの実行中に、サービスシステムに含まれる1以上のサービスの各々について、他サービスリクエスト送信ポリシー0107に基づき、当該サービスの依存先のサービスの処理状況を変更し、それに伴い、当該サービスの処理内容およびリクエスト送信先の少なくとも1つを変更し、当該変更後のシステム挙動をシミュレートする。マイクロサービスシミュレーター0112は、当該1以上のサービスの各々についての依存先のサービスの処理状況の変更前後のシステム挙動を表す情報を含んだ情報を表示する。これにより、ユーザーは、依存先サービスの処理状況の変更(依存元サービスの処理内容およびリクエスト送信先の少なとも1つの変更)の前後でのシステム挙動を比較することができる。
【0044】
なお、入力データストレージ0105、リクエストテンプレートDB0101、サービステンプレートDB0102、入力データリポジトリ0104、および、シミュレーションログDB0113のうちの少なくとも1つは、1以上の計算機が有する記憶部により実現される。
【0045】
図2は、マイクロサービスシミュレーター0112をユーザーが利用する際の利用フロー図を示す。
【0046】
ユーザーの利用が開始されると(0201)、まず、ユーザーは、シミュレーション入力データ作成ツール0103を用いて、入力データを作成する(0202)。入力データは、リクエストテンプレートDB0101やサービステンプレートDB0102に格納されたテンプレートを用いて作成しても、入力データリポジトリ0104から過去の入力データをインポートして、それを修正して、または修正せずに、作成してよい。その後、ユーザーは、作成した入力データを入力データストレージ0105に保存する(0203)。
【0047】
次に、ユーザーは、マイクロサービスシミュレーター0112に対して、入力データストレージ0105に保存されている入力データを読み込むように命令する(0204)。読み込みが完了したら、ユーザーは、マイクロサービスシミュレーター0112に対し、シミュレーションの開始を命令する(0205)。
【0048】
シミュレーションが開始後、ユーザーは外乱入力コンソール0110を用いて、一つ以上のサービスへの外乱の模擬発生を指示することができる(0206)。外乱の影響をシミュレーションで確認する必要がない場合は、このステップは行わなくてもよい。
【0049】
また、ユーザーは、シミュレーションの実行中に、他サービスリクエスト送信ポリシー0107を変更することができる(0207)。他サービスリクエスト送信ポリシーをシミュレーション中に変更するためには、例えば、まずユーザーが変更後の他サービスリクエスト送信ポリシー0107を入力データストレージ0105内に用意し、マイクロサービスシミュレーター0112に、変更後の他サービスリクエスト送信ポリシー0107をインポートするように命令する。もし、シミュレーション中に、他サービスリクエスト送信ポリシー0107を修正する必要がない場合は、このステップは行わなくてもよい。
【0050】
また、ユーザーは、シミュレーションの実行中に、リクエスト生成ポリシー0108を変更することができる(0208)。リクエスト生成ポリシー0108を変更する場合は、例えば、他サービスリクエスト送信ポリシー0107の変更と同様に、ユーザーがまず入力データストレージ0105に変更後のリクエスト生成ポリシー0108を用意し、マイクロサービスシミュレーター0112に変更後のリクエスト生成ポリシー0108をインポートするように命令する。もし、シミュレーション中に、リクエスト生成ポリシー0108を修正する必要がない場合は、このステップは行わなくてもよい。
【0051】
シミュレーションの終了条件は、任意の条件でよい。例えば、終了条件は、仮想システムへのリクエストが、リクエスト生成ポリシー0108に記載されたメッセージ生成回数分、仮想システムに投入されて、リクエストに応じた処理が実行し終わるか、もしくは、シミュレーション中にユーザーがマイクロサービスシミュレーター0112へ、シミュレーション終了命令を送ることである。前述のどちらかの条件に適合した場合は、シミュレーションが終了し(0209)、ユーザーの利用は終了となる(0210)。
【0052】
図3は、シミュレーション入力データ作成ツール0103およびマイクロサービスシミュレーター0112の実行に用いられる装置の内部構成を示す。当該装置は、シミュレーション装置の一例であり、計算機でよい。以下、図3に例示の装置を、便宜上、「シミュレーション装置」と呼ぶ。なお、本実施例では、シミュレーション入力データ作成ツール0103およびマイクロサービスシミュレーター0112が同装置で実行されるが、シミュレーション入力データ作成ツール0103およびマイクロサービスシミュレーター0112は、異なる2以上の計算機で実行されてもよい。
【0053】
シミュレーション装置0301は、プロセッサ部0302とI/Oインターフェースデバイス部0303と記憶部0304と通信インターフェースデバイス部0305で構成され、それらは内部のバスで互いに接続されている。I/Oインターフェースデバイス部0303と通信インターフェースデバイス部0305は、インターフェースデバイス部である。I/Oインターフェースデバイス部0303に、キーボードのような入力デバイスや液晶ディスプレイのような出力デバイスといった1以上のユーザインターフェースデバイスが接続される。通信インターフェースデバイス部0305に、1以上の外部装置0306が、例えばインターネットのようなネットワーク経由で接続される。ただし、記憶部0304に格納されるデータは装置ごとに異なっており、それぞれの装置の記憶部0304には、その装置の機能を実現するためのプログラムと、イベントログやイベントログに対する処理を行った後のデータを格納する記憶領域が存在してよい。シミュレーション入力データ作成ツール0103およびマイクロサービスシミュレーター0112は、記憶部0304からロードされプロセッサ部0302によって実行される。
【0054】
図4は、シミュレーション入力データ作成ツール0103により表示されるシステム構成作成支援画面を示す。
【0055】
システム構成作成支援画面0401は、複数のUIとして、サービステンプレート画面0404(第1のUIの一例)、システム構成設計画面0405(第2のUIの一例)、および、サービス詳細画面0406(第3のUIの一例)を有する。システム構成0106が含む1以上の情報要素は、システム構成作成支援画面0401経由で入力された情報要素である。
【0056】
サービステンプレート画面0404は、サービステンプレートDB0102に格納されている1又は複数のサービステンプレートのうちの所望の1以上のサービステンプレートの選択をユーザーから受け付けるUIである。当該画面0404には、例えば、4つのサービステンプレートにそれぞれ対応した4つのテンプレートオブジェクト0407〜0410が表示されている。
【0057】
システム構成設計画面0405は、サービステンプレート画面0404から選択された1以上のサービステンプレート(テンプレートオブジェクト)にそれぞれ対応した1以上のサービスオブジェクトを表示し、当該1以上のサービスオブジェクトの依存関係の指定をユーザーから受け付けるUIである。図4の例では、5つのサービスにそれぞれ対応した5つのサービスオブジェクト0411〜0415が表示されている。少なくとも1つのサービスオブジェクトが、サービステンプレート画面0404から選択されたサービステンプレートに対応したサービスオブジェクトでよい。また、サービステンプレート画面0404には、いずれのサービステンプレートを使用すること無しに作成されたサービスに対応するサービスオブジェクトが表示されてもよい。システム構成設計画面0405において、サービス間の依存関係は、サービスオブジェクト(ノード)間の矢印(エッジ)で表現可能であるが、他種の表現が採用されてもよい。矢印で結ばれた2つのサービスオブジェクトにおいて、矢印の始点(元)にあるサービスオブジェクトは、依存元のサービスに対応したオブジェクトであり、矢印の終点(先)にあるサービスオブジェクトは、依存先のサービスに対応したオブジェクトである。
【0058】
サービス詳細画面0406は、システム構成設計画面0405に展開(表示)された1以上のサービスオブジェクトのうちの選択されたサービスオブジェクト(例えばサービスCのオブジェクト0413)に対応したサービステンプレートに対する1以上の値の入力を受け付けるUIである。
【0059】
サービスシステムを構成する複数のサービスの少なくとも1つは、サービス詳細画面0406を介して入力された1以上の値が設定されたサービステンプレートに基づくサービスである。サービステンプレートを利用することにより、サービスシステムの設計を効率的に行うことができる。少なくとも1つのサービステンプレートは、過去に作成されたサービスそれ自体でもよい。
【0060】
図4に例示のシステム構成作成支援画面0401を利用して、ユーザーは、例えば次のようにして、サービスシステムを設計することができる。なお、当該画面0401に対するユーザー操作に応答した表示は、シミュレーション入力データ作成ツール0103により制御される。
【0061】
ユーザーは、システム構成設計画面0405で、システム構成0106を記述する。システム構成0106には、システム内で利用するサービスの全てと、サービス間の依存関係が表現される。サービス間をつなぐ矢印は、あるサービスが別のサービスにリクエストを送信することを意味している。例えば、サービスAの依存先はサービスBおよびサービスであるが故に、サービスAは、サービスBとサービスCにリクエストを送信することになる。
【0062】
ユーザーが、システム構成設計画面0405内のサービスを選択すると、選択したサービスの詳細が、サービス詳細画面0406に表示される。サービスの詳細の例として、サービスがリクエストごとの処理で消費するリソース量が表示される。消費するリソースの量を設定する項目に対応したUIとして、CPUの数の入力用UI0416と、メモリ量の入力用UI0417と、同時に多数のリクエストが到着した時にリソース量を動的に増加させるオートスケールへの対応有無の設定用のUI0418、が表示される。これらの値は、マイクロサービスシミュレーター0112の入力データとして、ユーザーが設定できるものとする。オートスケールに対応しない場合は、各サービスに割り当てられるリソース量も設定できるものとする。サービス詳細画面0406のレスポンスタイム変動項目のUI0419では、ユーザーがサービスのレスポンスタイムを設定できる。サービス詳細画面0406の、処理同期性項目のUI0420では、そのサービスがリクエストを受けた際に、リクエスト元をレスポンス待ちの状態で待たせるか、待たせずに非同期的に処理を行うかを、ユーザーが設定できる。
【0063】
サービス詳細画面0406におけるリクエストの処理負荷と、レスポンスタイム変動と、処理同期性の項目は、サービスが処理するリクエストの内容ごとに個別に記載することも可能なものとする。
【0064】
サービステンプレート画面0404では、システム構成設計画面0405内に含めるサービスのサービステンプレートが全てまたは部分的に一覧表示される。ユーザーが、サービステンプレートを、システム構成設計画面0405に張り付けると、張り付けられたサービステンプレートはサービスとして認識される。サービステンプレートから作られたサービスは、サービス詳細画面0406に値が設定されており、ユーザーは必要であればいずれかの項目の値を修正する。これにより、ユーザーがシステム構成0106を作成する時間が短縮される。
【0065】
システム構成の設計が完了した場合、ユーザーが保存ボタン0403をクリックまたはタップすることで、設計されたシステム構成を表すシステム構成0106が、入力データリポジトリ0104と入力データストレージ0105に保存される。なお、インポートボタン0402をクリックすることで、入力データリポジトリ0104に保存されたシステム構成0106を、システム構成設計画面0405にインポートすることができる。
【0066】
図4に例示の通り、ユーザーが、サービスの選択(作成)とサービス間の依存関係の構築とを繰り返すことで、サービスシステムを設計することができる。設計されたサービスシステムのうちの少なくとも1つのサービスは、ユーザー側(システム開発側)とは異なる組織が開発したサービスであり得る。ユーザーは、各サービス間で依存関係を持った複数のサービスの連携により1または複数の業務を実現するサービスシステムを設計する。
【0067】
なお、シミュレーション入力データ作成ツール0103で、各サービスの他サービスリクエスト送信ポリシー0107と、システムへのリクエスト生成ポリシー0108を、ユーザーが設定する画面があってよいこととする。
【0068】
図5は、他サービスリクエスト送信ポリシー0107の一例を示す。図5の他サービスリクエスト送信ポリシー0107は、JSON(JavaScript(登録商標) Object Notation)フォーマットに従っているが、フォーマットはJSONである必要はない。
【0069】
0503行目の記述は、0502行目から0528行目で記述されているポリシーの適用対象であるサービスを指定している。0504行目の記述は、0503行目で指定されたサービスが、リクエストを待ち受けるサービスの識別子である。“{”と“}”で囲まれた箇所は、変数を表している。ユーザーは、変数の値ごとに、サービスに届いたリクエストの処理と転送先を記述することができる。0505行目の記述は、ポート番号を示す。0507行目の記述は、サービスへのリクエストのメソッドを示す。例えば、HTTPによるリクエストを待ち受ける場合は、GET、PUT 、PUSH、DELETEのいずれかが指定される。0509行目と0510行目の記述は、0504行目の文字列の変数として指定されていた箇所の値を指定している。ここでのアスタリスクは、任意の文字列を示す。特にアスタリスクである必要はなく、エンドポイントの記述として有効ではない文字または文字列であれば良い。0511行目から0526行目の記述は、エンドポイントが0504行目と0509行目と0510行目の記述の組み合わせで指定されたリクエストに対する処理と転送先を示している。
【0070】
0512行目から0524行目の記述は、リクエストの送信先サービスと、送信先サービスにレスポンスが長時間返ってこないなどの障害が発生した場合の処理を示している。0513行目の記述は、リクエストの送信先サービスを示している。0514行目は、リクエストのメソッドを示す。0515行目の記述は、リクエスト送信先のエンドポイントを示す。0517行目と0524行目の記述は、送信先のサービスに障害が発生したとみなす指標と基準を示す。図5の例では、サービスCがサービスDに障害が発生したとみなす基準として、サービスDのレスポンスタイムが50ms以上であることと設定されている。この他の障害判定基準として、サービスCがサービスDに送ってまだレスポンスが返っていないリクエスト数が、一定数を超えた場合に障害とみなす、といった障害の判定基準も指定できるものとする。0518行目の記述は、リクエスト送信先のサービスに障害が発生したとみなした場合の処理を指定している。図5の例では、サービスDで障害が発生したとみなすと、次にサービスDへ送信すべきリクエストは、サービスDへ送信せず、サービスCへリクエストを送信したサービスに、エラーを示すレスポンスを返す。その操作は、システム全体のレスポンスタイムが、サービスDの障害によって長時間化することを防ぐ。
【0071】
ユーザーは、0517行目から0523行目に相当する箇所に、リクエスト送信先で障害が発生した際にリクエストを送る先のサービスを指定できる。例えば、システムを監視するサービスにアラートメッセージを送信する場合には、ユーザーはシステムを監視するサービスを指定する。
【0072】
0522行目の記述は、リクエスト送信先のサービスが障害から回復したとみなす基準を示している。図5の例では、時間としており、0523行目の記述により、時間が1秒経過したら、サービスDが障害から復旧したとみなすことを意図している。
【0073】
0503行目で指定したサービスが、複数のサービスにリクエストを送る場合、ユーザーは0512行目から0525行目の記述を、配列形式で列挙する。また、0503行目で指定したサービスが、複数のリクエストメソッドを受け付ける場合、ユーザーは0507行目から0528行目の記述を、メソッドをキーとした連想配列で列挙する。また、ユーザーは0502行目から0530行目の記述を、システム構成0106に含まれる全サービスごとに、配列形式で列挙する。
【0074】
図5の例によれば、他サービスリクエスト送信ポリシー0107は、1以上のサービスの各々について、1つのサービスを例に取ると(図5の説明において「対象サービス」)、下記のうちの少なくとも1つ、
・対象サービスのID、
・対象サービスの依存先のサービス(例えば、対象サービスがリクエストを待ち受けるサービス)のID、
・対象サービスに届いたリクエストの通常時での処理内容(「通常時」とは、依頼先サービスの不具合時以外の時)、
・依頼先サービスに不具合があるとする条件(例えば、レスポンスタイム閾値)、
・当該条件が満たされた場合である不具合時での処理内容およびリクエスト送信先の少なくとも1つ、
を含む。
【0075】
図6は、リクエスト生成ポリシー0108の一例を示す。図6のリクエスト生成ポリシー0108は、JSON(JavaScript(登録商標) Object Notation)フォーマットに従っているが、フォーマットはJSONである必要はない。
【0076】
リクエスト生成ポリシー0108は、シミュレーション中にシステムへのリクエストを生成する際のポリシーである。0603行目の記述は、リクエストのプロトコルを示している。0604行目の記述は、システムへのリクエスト送信先であるエンドポイントを示している。0605行目の記述は、エンドポイントのポート番号を示している。0606行目の記述は、シミュレーション中にシステムに送信されるリクエストの数を示している。0617行目のように、リクエスト数の項目に数値以外の文字を入力した場合は、リクエストがシステムに永久的に送り続けられる。0607行目から0611行目の記述は、システムへのリクエストの送信レートを示している。図6の0607行目から0611行目の例では、単位時間に、平均100リクエストであり、分散が10の正規分布に従う確率でリクエストが送信される。
【0077】
システムに複数の種類のリクエストを送る場合や、複数のサービスにリクエストを送信する場合、0602行目から0612行目の記述と同等の記述を、複数記載する。図6の例では、シミュレーション中に、サービスAの80番ポートに、HTTPプロトコルで、単位時間あたり平均100個かつ分散が10の正規分布に従う送信レートでリクエストが到着し、さらに、サービスBの18181番ポートに、Thriftプロトコルで、単位時間あたり100個のリクエストが固定レートで到着する。
【0078】
図7は、マイクロサービスシミュレーター0112のシステム構成を示す。
【0079】
マイクロサービスシミュレーター0112は、シミュレーション制御部0706と、入力ファイルロード部0703と、仮想システム構築部0704と、リクエスト生成部0707といった複数のモジュール(機能)を有する。
【0080】
シミュレーション制御部0706は、ユーザーからの命令に応じて、シミュレーション環境の構築、シミュレーションの開始、シミュレーションの一時停止、シミュレーションの終了、特定のサービスへの外乱の入力を行う。なお、ユーザーからの命令は、外乱入力コンソール0110、ポリシー入力コンソール0113、および、その他の図示しない入力コンソールのうちの少なくとも1つの入力コンソール経由で受信することができる。
【0081】
入力ファイルロード部0703は、シミュレーション制御部0706からの指示に応じて、入力データストレージ0105内に存在する入力ファイル(入力データセットの一例)を読み取り、仮想システム構築部0704に転送する。
【0082】
仮想システム構築部0704は、入力ファイルロード部0703から受け取った入力ファイルを基に、シミュレーション対象であるサービスシステムをマイクロサービスシミュレーター0112内で仮想的に構築する。その際、仮想システム構築部0704は、システム構成に基づき、サービスシステムに含まれる各サービスのインスタンスを生成する。すなわち、仮想システム構築部0704が、複数のサービスにそれぞれ対応した複数の仮想サービス0708で構成された仮想的なサービスシステムである仮想システム0700を構築する。従って、仮想システム0700において、各仮想サービス間の依存関係は、サービスシステムにおける各サービス間の依存関係と同じである。各仮想サービス0708は、対応するサービスが仮想化されたサービスであり、具体的には、例えば、対応するサービスのインスタンスに相当する。
【0083】
シミュレーション制御部0706は、ユーザーからのシミュレーションの制御を受け付ける。シミュレーション制御部0706が受け付ける制御は、シミュレーション内での仮想システム0700の構築と、シミュレーションの開始と、シミュレーションの一時停止と、シミュレーションの終了と、特定のサービスへの意図的な外乱発生、のいずれかである。
【0084】
リクエスト生成部0707は、シミュレーション中に、仮想システム0700に入力するリクエストを生成する。仮想システム構築部0704によって生成された仮想サービス0708は、サービス制御受信部0709と、サービス処理部0710と、他サービスリクエスト部0711を含む。以下、1つの仮想サービス0708を例に取る(図7の説明において「対象仮想サービス0708」)。
【0085】
サービス制御受信部0709は、シミュレーション制御部0706から対象仮想サービス0708への制御を受け付ける。例えば、ユーザーがシミュレーションを一時停止させる場合は、ユーザーがシミュレーション制御部0706に対して一時停止を命令し、シミュレーション制御部0706が各仮想サービス0708のサービス制御受信部0709に、一時停止命令を送信する。サービス処理部0710は、対象仮想サービス0708が処理を行っている間、対象仮想サービス0708の処理に必要なリソース量を消費し続ける。対象仮想サービス0708の処理時間と処理中に消費するリソース量は、システム構成0106内で指定された値に基づく。他サービスリクエスト部0711は、サービス処理部0710で処理が終わった後に、他の仮想サービス0708にリクエストを送信する。リクエスト送信先は、他サービスリクエスト送信ポリシー0107で指定されたルールに従う。すなわち、リクエスト送信先は、原則、対象仮想サービス0708の依存先の仮想サービス0708であるが、依存先の仮想サービス0708に不具合が生じた場合には、依存先の仮想サービス0708とは別の仮想サービス0708とされ得る。言い換えれば、対象仮想サービス0708にとって、通常のリクエスト送信先は、サービス構成0106が示す依存関係に従う依存先の仮想サービス0708であるが、依存先の仮想サービス0708に不具合が生じた場合のリクエスト送信先は、他サービスリクエスト送信ポリシー0107に従う仮想サービス0708となる。
【0086】
各サービスは、典型的にはアプリケーションであり、リクエストを受け付ける入力インターフェースの一例としてのAPI(Application Programming Interface)や、別のサービスの入力APIに対するリクエストを送信する出力インターフェースの一例としてのAPIを有する。対象仮想サービス0708において、サービス処理部0710は、対象仮想サービス0708に対応したサービスの入力APIに対応した部分であり、サービス構成0106に基づく値が設定されることで実現された部分である。対象仮想サービス0708において、他サービスリクエスト部0711は、対象仮想サービス0708に対応したサービスの出力APIに対応した部分であり、他サービスリクエスト送信ポリシー0107に基づく値が設定されることで実現された部分である。
【0087】
以上のように、各仮想サービス0708は、当該仮想サービス0708が有する出力インターフェースは、他サービスリクエスト送信ポリシー0107に基づく設定がされた出力インターフェースとしてのモジュールである他サービスリクエスト部0711である。これにより、依存先のサービスで不具合が生じた場合にリクエスト送信先を別のサービスに切り替えることをシミュレーションにおいて実行することができる。なお、依存先の仮想サービス0708が存在しない仮想サービス0708には、他サービスリクエスト部0711が設けられないでよい。
【0088】
また、各仮想サービス0708は、入力インターフェースとしてリクエストを受け付け当該リクエストに従う処理を実行するサービス処理部0710に加えて、当該仮想サービス0708におけるサービス処理部0710(及び他サービスリクエスト部0711)を制御するサービス制御受信部0709を有する。これにより、サービス処理部0710(及び他サービスリクエスト部0711)それ自体に特段の設定をすること無しに、サービス処理部0710(及び他サービスリクエスト部0711)を制御することができる。具体的には、例えば、シミュレーションの実行中であって、仮想システム0700の構築後に、仮想システム0700の外にあるシミュレーション制御部0706が、他サービスリクエスト送信ポリシー0107の変更後のポリシー0107を受け付けたとする(本実施例において、ユーザーは、シミュレーション中に表示されるシステム挙動を見て、適宜、他サービスリクエスト送信ポリシー0107およびリクエスト生成ポリシー0108の少なくとも1つを変更可能)。この場合、当該変更後のポリシー0107に従う変更対象の他サービスリクエスト部0711を有する仮想サービス0708(例えば、変更後のポリシー0107で指定されたサービスに対応する仮想サービス0708)におけるサービス制御受信部0709に、当該変更後のポリシー0107に従う設定の指示を送信する。当該指示を受けたサービス制御受信部0709は、当該サービス制御受信部0709を有する仮想サービス0708内のサービス処理部0710を一時停止させ、当該一時停止中に、当該仮想サービス0708内の他サービスリクエスト部0711に対し、当該指示に従う設定を行う。このようにして、シミュレーションを止めること無しに、変更後のポリシー0107を反映することができる。
【0089】
また、本実施例では、サービス処理部0710が、能動的に規定された処理を実行し適宜リクエスト送信を他サービスリクエスト部0711に指示するのではなく、リクエストを外部から受信したことに応答して処理を実行するようになっている。具体的には、仮想システム0700の外部に、エンドユーザーとしてリクエストを送信するリクエスト生成部0707が設けられている。リクエスト生成部0707は、リクエスト生成ポリシー0108に従う内容のリクエストを、当該ポリシー0108に従う送信レートでエンドユーザーとして仮想システム0700に送信するようになっている。シミュレーションの実行中であって、仮想システム0700の構築後に、仮想システム0700の外にあるリクエスト生成部0707が、シミュレーション制御部0706経由で、リクエスト生成ポリシー0108の変更後のポリシー0108を受け付けたとする。この場合、リクエスト生成部0707が、当該変更後のポリシー0108に従う内容のリクエストを、当該変更後のポリシー0108に従う送信レートでエンドユーザーとして仮想システム0700に送信する。
【0090】
図8は、シミュレーション環境構築の処理シーケンスを示す。
【0091】
シミュレーション環境の構築は、シミュレーション開始前に実行される。ユーザーが、シミュレーション制御部0706に、シミュレーション環境の構築を命令すると(0801)、シミュレーション制御部0706は、入力ファイルロード部0703に、入力ファイルのロード命令を送信する(0802)。入力ファイルロード部0703は、当該命令に応答して、入力データストレージ0105を参照し(0803)、入力ファイル(入力データ)を取得(0804)して受け取る(0805)。
【0092】
その後、入力ファイルロード部0703は、仮想システム構築部0704に、システム構成0106と他サービスリクエスト送信ポリシー0107を転送する(0806)。仮想システム構築部0704は、システム構成0106と他サービスリクエスト送信ポリシー0107に従い、仮想システム0700を構築する、例えば、システム構成0106に含まれるサービスのインスタンスをシミュレーション環境内に生成する(0807)。また、入力ファイルロード部0703は、リクエスト生成部0707にリクエスト生成ポリシー0108を送信する(0808)。リクエスト生成部0707は、リクエスト生成ポリシー0108に従い、サービスシステム(仮想システム0700)へ入力するリクエストの内容と、リクエストの送信先であるサービス(当該サービスに対応した仮想サービス0708)と、リクエスト送信レートを設定する(0809)。
【0093】
リクエスト生成ポリシー0108と、他サービスリクエスト送信ポリシー0107は、上述したように、シミュレーション中であっても、シミュレーションを停止させることなく変更することが可能である。
【0094】
図9は、シミュレーション中のポリシー変更の処理シーケンスを示す。
【0095】
シミュレーションが開始(0901)された後、ユーザーが新しいリクエスト生成ポリシー0108、または他サービスリクエスト送信ポリシー0107を、入力データストレージ0105に用意する。
【0096】
ユーザーが、シミュレーション制御部0706に、リクエスト生成ポリシー0108の再読み込みを命令すると(0902)、シミュレーション制御部0706は、入力ファイルロード部0703に、新しいリクエスト生成ポリシー0108の取得を命令する(0903)。その後、入力ファイルロード部0703は、入力データストレージ0105にリクエスト生成ポリシー0108を参照する(0904)。入力データストレージ0105は、該当するリクエスト生成ポリシー0108を取得し(0905)、入力ファイルロード部0703に当該ポリシー0108を送信する(0906)。入力ファイルロード部0703は、リクエスト生成部0707にリクエスト生成ポリシー0108を転送する(0907)。リクエスト生成部0707は、取得した新しいリクエスト生成ポリシーを反映し(0908)、新しいリクエスト生成ポリシー0108に基づいて、サービスシステム(仮想システム0700)にリクエストを送信する。
【0097】
また、ユーザーが、他サービスリクエスト送信ポリシー0107の再読み込みをシミュレーション制御部0706に命令すると(0909)、シミュレーション制御部0706は、入力ファイルロード部0703に、新しい他サービスリクエスト送信ポリシー0107の取得を命令する(0910)。その後、入力ファイルロード部0703は、入力データストレージ0105に他サービスリクエスト送信ポリシー0107を参照する(0911)。入力データストレージ0105は、該当する他サービスリクエスト送信ポリシー0107を取得し(0912)、入力ファイルロード部0703に当該ポリシー0107を送信する(0913)。入力ファイルロード部0703は、他サービスリクエスト送信ポリシー0107に従う修正が必要な仮想サービス0708のサービス制御受信部0709に、新しい他サービスリクエスト送信ポリシー0107(またはそのうちの外部部分)を送信する(0914)。サービス制御受信部0709は、自身のサービス内の他サービスリクエスト部0711に、新しい他サービスリクエスト送信ポリシー0107を転送する(0915)。その後、他サービスリクエスト部0711は、受け取った他サービスリクエスト送信ポリシー0107を、自身のリクエスト送信のポリシーとして反映する(0916)。なお、0914のステップにおいて、新しい他サービスリクエスト送信ポリシー0107の送信先を、他サービスリクエスト部0711とし、サービス制御受信部0709が他サービスリクエスト送信ポリシーを中継しなくてもよいものとする。
【0098】
図10は、シミュレーション実行中における、システムへのリクエストに対する処理シーケンスを示す。
【0099】
ユーザーが、シミュレーション制御部0706にシミュレーションの開始を命令すると(1001)、シミュレーション制御部0706は、リクエスト生成部0707に対しリクエストの生成を指示する(1002)。リクエスト生成部0707は、リクエスト生成ポリシー0108に従ってリクエストを生成し(1003)、仮想サービス0708内のサービス処理部0710に当該リクエストを転送する(1004)。
【0100】
サービス処理部0710にリクエストが到着すると、サービス処理部0710は、サービスが消費するリソース量を、一回のリクエストに対するサービスの処理に必要なリソース量分増加させ(1005)、処理に要する時間だけ処理を待機する(1006)。なお、「一回のリクエストに対するサービスの処理に必要なリソース量」および「処理に要する時間」は、サービス構成0106(またはその他の入力データセット)に定義されており、サービス処理部0710に設定されているものとする。処理に要する時間が経過すると、サービス処理部0710は、一回のリクエストに対するサービスの処理に必要なリソース量分減少させる(1007)。仮想サービス0708が他の仮想サービス0708にリクエストを送る場合は、サービス処理部0710が、他サービスリクエスト部0711にリクエストを送信する(1008)。他サービスリクエスト部0711は、他の仮想サービス0708(典型的には依存先の仮想サービス0708)が規定された不具合条件に適合するか否かに応じて(例えば、レスポンスタイム、障害状況、または、レスポンスが返っていない送信済みリクエスト数といった状況が、他サービスリクエスト送信ポリシー0107に規定された条件を満たすか否かに応じて)、リクエスト送信先の仮想サービス0708を決定する(1009)。つまり、リクエスト送信先が、依存先の仮想サービス0708のままでよいか、あるいは異なる仮想サービス0708とされるかが決定される。そして、他サービスリクエスト部0711は、決定したリクエスト送信先仮想サービス0708のサービス処理部0710に、リクエストを送信する(1010)。
【0101】
他サービスリクエスト部0711は、他の仮想サービス0708からレスポンスを受信すると(1011)、当該他の仮想サービス0708のレスポンスタイムを記憶する(1012)。記憶した、他の仮想サービス0708のレスポンスタイムは、サービス処理部0710からも参照できるものとする。他の仮想サービス0708のレスポンスタイムを記憶することで、サービス処理部0710は、リクエスト送信先の仮想サービス0708のレスポンスタイムに応じて仮想サービス0708の処理内容を変更することができる。さらに、他サービスリクエスト部0711は、出力されたログに応じて、送信先の仮想サービス0708を変更することができる。レスポンスを自身の仮想サービス0708のサービス処理部0710に返す(1013)。その後、サービス処理部0710は、他の仮想サービス0708へのリクエストにおけるレスポンスタイムをログとして出力する(1014)。その後、サービス処理部0710は、リクエスト生成部0707にレスポンスを返す(1015)。
【0102】
図11は、シミュレーション中に、ユーザーがマイクロサービスシミュレーター0112へ外乱を入力する際の処理シーケンスを示す。シミュレーションにおいて、依存先の仮想サービス0708の不具合は、他サービスリクエスト送信ポリシー0107と外乱発生シナリオ0109とのうちの少なくとも1つに従い発生することになる。
【0103】
ユーザーが、シミュレーション中に、外乱入力コンソール0110を用いて、外乱(外乱発生シナリオ0109)を入力する(1101)。1101のステップにおいて、ユーザーは、外乱を発生させるサービスと、外乱の内容を指定する。外乱の内容の例として、サービスの停止または、サービスのレスポンスタイムの増大を指定できるものとする。外乱入力コンソール0110は、シミュレーション制御部0706に、ユーザーが入力した外乱をシミュレーション内で発生させるように指示を送る(1102)。シミュレーション制御部0706は、ユーザーに指定されたサービスに対応する仮想サービス0708がシミュレーション中で稼動中であることを確認し、当該仮想サービス0708のサービス制御受信部0709に外乱の発生指示を送信する(1103)。サービス制御受信部0709が外乱発生の指示を受けると、当該サービス制御受信部0709は、サービス処理部0710に、ユーザーに指定された外乱の内容に応じた、処理の変更を指示する(1104)。例えば、ユーザーがサービスの停止を指定した場合は、サービス処理部0710は、他のサービスからのリクエストを受け付けず、さらに実行中の処理は、処理のリクエスト元にはレスポンスを返さずに、処理を終了する。また、ユーザーがサービスのレスポンスタイムの増加を指定した場合は、サービス処理部0710は、サービス処理部0710内で設定されているレスポンスタイムを、ユーザーの指定量分増加させる。
【0104】
図12は、外乱発生シナリオ0109の一例を示す。
【0105】
1202行目から1209行目までの記述は、単一のサービスに対する単一の外乱事象を示している。複数の外乱を設定する場合は、1210行目から1218行目のように、配列形式で全ての外乱を列挙する。
【0106】
1203行目の記述は、シミュレーション開始後から外乱が発生するまでの時間または時刻を表す。1204行目の記述は、外乱の事象が終了する時刻、または外乱の継続時間を表す。1205行目の記述は、外乱が発生するサービスを示している。1206行目の記述は、外乱の内容を示している。図12の1206行目は、例として、サービスが停止したことを表しており、1214行目は、サービスのレスポンスタイムが長時間化したことを示している。1207行目から1208行目までの記述は、発生する外乱の補足情報を示す。例として、1215行目から1217行目では、レスポンスタイムが通常の3倍になることを表している。
【0107】
外乱発生シナリオ0109は、シミュレーション開始前に、マイクロサービスシミュレーター0112に入力され、シミュレーション開始後にマイクロサービスシミュレーター0112が外乱発生シナリオ0109に沿ってシステム内のサービスに外乱を発生させることができる。ユーザーは、外乱入力コンソール、またはシミュレーション入力データ作成ツール、または任意のテキストエディタを用いて、外乱発生シナリオを作成できるものとする。
【0108】
以上、本発明の一実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
【符号の説明】
【0109】
0112:マイクロサービスシミュレーター、0105:入力データストレージ、0106:システム構成、0107:他サービスリクエスト送信ポリシー、0108:リクエスト生成ポリシー、0109:外乱発生シナリオ、0103:シミュレーション入力データ作成ツール、0110:外乱入力コンソール、0706:シミュレーション制御部、0703:入力ファイルロード部、0113:ポリシー入力コンソール
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12