実施形態1.
以下、本発明の実施形態を、図面を参照して説明する。図1は、第1の実施形態のシステム更新装置によるシステム更新処理の例を示す説明図である。
図1に示すステップS101、ステップS102、ステップS104、およびステップS106の各処理は、図33に示すステップS001、ステップS002、ステップS005、およびステップS006の各処理とそれぞれ同様である。図1に示すステップS103、およびステップS105の各処理が、本実施形態のシステム更新装置による特徴的な処理である。
本実施形態のシステム更新装置は、例外が発生する可能性がある更新作業中の全ての時点に対するロールバック手順をそれぞれ設計する(ステップS103)。ただし、ステップS103で設計されるロールバック手順は、現実的なリソース量で実行可能な計算処理で求められる手順である。後述するように、ステップS103で設計されるロールバック手順には、不適切な手順が含まれている可能性がある。
また、本実施形態のシステム更新装置は、更新作業手順の実行中に例外が発生した時、ステップS103で設計された例外が発生した時のシステムの状態に対応するロールバック手順に応じて、後述するように手順を合成する(ステップS105)。ステップS105の処理により、ロールバック手順が迅速に準備される。
図1に示すシステム更新処理により、本実施形態のシステム更新装置は、事前に各ロールバック手順を準備せずに、例外が発生した時のシステムの全ての状態に迅速に対応できる。以下、ステップS101〜ステップS106の各処理を実行する本実施形態のシステム更新装置の構成および動作を、図面を参照して説明する。
[構成の説明]
図2は、本発明によるシステム更新装置の第1の実施形態の構成例を示すブロック図である。図2に示すように、本実施形態のシステム更新装置100は、正常系ブロックと、事前処理ブロックと、事後対応ブロックとで構成されている。
なお、ブロック図に記載されている単方向の矢印は、データ(情報)が流れる方向を示す。しかし、各矢印が記載されている箇所において双方向にデータが流れる可能性は排除されていない。
図2に示すように、正常系ブロックは、手順計画部111と、実行順序調整部112と、手順実行部113とを含む。手順計画部111は、入力された状態要素モデルを基に、手順を計画する機能を有する。すなわち、手順計画部111は、図1に示すステップS102の処理を行う。
実行順序調整部112は、手順計画部111により設計された手順を構成するタスクの実行順序を調整する機能を有する。また、手順実行部113は、実行順序調整部112によりタスクの実行順序が調整された手順を更新対象システム500に対して実行する機能を有する。すなわち、手順実行部113は、図1に示すステップS104の処理、およびステップS106の処理を行う。
手順実行部113は、更新対象システム500と通信可能に接続されている。また、手順実行中に更新対象システム500において例外が発生した場合、手順実行部113に例外が発生したことが通知される。例外の発生は、人手による確認や、外部のシステム監視サービス等によって手順実行部113に通知される。また、更新対象システム500自身が、例外の発生を手順実行部113に通知してもよい。
また、図2に示すように、事前処理ブロックは、ロールバック手順網羅部121と、逆実行手順計画部122と、部分ロールバック手順保存部123とを含む。
ロールバック手順網羅部121は、例外が発生する可能性がある全ての時点に対してロールバック手順を事前に用意するために、逆実行手順計画部122および部分ロールバック手順保存部123を制御する機能を有する。
逆実行手順計画部122は、更新作業手順の実行中に発生する可能性がある状態に対応するロールバック手順として用いられる逆実行手順を計画する機能を有する。逆実行手順計画部122は、実行順序調整部112によりタスクの実行順序が調整された手順を基に逆実行手順を計画する。なお、逆実行手順の具体的な内容は後述する。
部分ロールバック手順保存部123は、逆実行手順計画部122により設計された部分ロールバック手順を保存する機能を有する。すなわち、事前処理ブロックの各構成要素が、図1に示すステップS103の処理を行う。
また、図2に示すように、事後対応ブロックは、ロールバック手順生成部131と、状態管理部132とを含む。ロールバック手順生成部131は、更新作業手順の実行中の更新対象システム500の現在状態に対応するロールバック手順を生成する機能を有する。
具体的には、ロールバック手順生成部131は、現在状態に応じて、部分ロールバック手順と逆実行手順とを部分ロールバック手順保存部123から取得する。次いで、ロールバック手順生成部131は、取得された部分ロールバック手順と逆実行手順とを合成することによって、ロールバック手順を生成する。ロールバック手順生成部131は、生成されたロールバック手順を手順実行部113に入力する。
状態管理部132は、更新作業手順の実行中の更新対象システム500の現在状態を管理する機能を有する。現在状態は、更新対象システム500の最新の状態である。すなわち、事後対応ブロックの各構成要素が、図1に示すステップS105の処理を行う。
以下、図1に示すステップS103の処理、および図1に示すステップS105の処理を、図3〜図8を参照して具体的に説明する。
本実施形態のシステム更新装置100は、ロールバック手順が、通常手順を構成するタスクと「逆のタスク」が、通常手順と「逆の順序」で並べられる(以下、逆実行されるという。)ことによって生成可能である場合が多いという特徴を利用している。本実施形態における逆実行手順は、上記の方法で生成された手順である。
図3は、本実施形態のロールバック手順の生成処理の例を示す説明図である。図3に示す1つの矩形は、1つのタスクを表す。また、白色の矩形は、未実行のタスクを表す。また、黒色のタスクは、実行済みのタスクを表す。また、図3に示す矢印は、先に実行されるタスクから後に実行されるタスクに向けて伸びている。
図3(a)は、実行途中の手順を示す。具体的には、図3(a)は、タスク「app.conf配備」が実行される直前で例外が発生した状態を示す。
図3(a)に示す状態から初期状態に戻すロールバック手順は、実行済みのタスクが逆実行されることによって生成される。図3(b)は、逆実行で生成されたロールバック手順を示す。
図3(b)に示すタスク「app.war 削除」、タスク「serverXml 復元」、およびタスク「tomcat起動」は、図3(a)に示すタスク「app.war 配備」、タスク「serverXml 更新」、およびタスク「tomcat停止」の逆のタスクである。また、図3(b)に示すロールバック手順では、上記の逆のタスクが図3(a)に示す手順と逆の順序で並べられている。
上記のように例外が発生した時までに実行されたタスクを基にロールバック手順が生成される手法では、事前に各状態に対応したロールバック手順が生成される手法に比べて、消費されるリソース量が削減される。本実施形態のシステム更新装置100は、基本的に上記の手法でロールバック手順を生成する。
しかし、上記のように単に「逆のタスク」が並べられるだけではロールバック手順が生成不可能な場合がある。図4は、更新作業手順の例を示す説明図である。
図4に示す手順において、例えばapp1.warとapp1.conf が削除された時点からロールバックが行われる時、war →confの順で配備されることが求められる。しかし、単純な逆実行で上記の順が考慮されたロールバック手順を生成することは困難である。
また、app1.warの配備に外部のリポジトリへのアクセスが求められる時、適切な操作が補完されなければ、タスク「app1.warの削除」の逆のタスク「app1.warの配備」は、実行不可能である。
よって、本実施形態のシステム更新装置100は、可能な限り逆実行可能なタスクを増やし、逆実行不可能なタスクに対してのみ部分ロールバック手順を計画するという方針でロールバック手順を生成する。
上記の方針に基づいた事前処理ブロックの構成要素の処理を説明する。実行順序調整部112は、逆実行でロールバック手順が生成可能になるように、更新作業手順を構成するタスクの実行順序を調整する。図5は、実行順序調整部112によるタスクの実行順序の調整処理の例を示す説明図である。
図5(a)に示す手順は、図4に示す更新作業手順である。上述したように、app1.warとapp1.conf が削除された場合、war →confの順で配備されることが求められる。単純な逆実行で生成されるロールバック手順において上記の順が考慮されるように、実行順序調整部112は、図5(b)に示すようにタスクの実行順序を調整する。
図5(b)は、図5(a)に示すタスクの実行順序が調整された手順を示す。具体的には、実行順序調整部112は、並列に実行可能なタスク「app1.war削除」とタスク「app1.conf 削除」を、タスク「app1.conf 削除」→タスク「app1.war削除」の順に実行されるように並び替える。図5(b)に示す白抜きの矢印が、調整された実行順序を表す。
また、逆実行手順計画部122は、実行順序が調整されても逆実行不可能なタスクに対してのみ、部分ロールバック手順を事前に計画する。図6は、逆実行手順計画部122による部分ロールバック手順の計画処理の例を示す説明図である。
図6(a)は、図5(b)に示す手順全体に対する逆実行により生成された逆実行手順を示す。タスク「app1.war配備」に「×」が記されている理由は、上記の理由により実行不可能なタスクであるためである。
よって、逆実行手順計画部122は、タスク「app1.war削除」に対する部分的なロールバック手順である部分ロールバック手順を計画する。図6(b)に示すように、逆実行手順計画部122は、部分ロールバック手順としてタスク「repo.conn 接続」→タスク「app1.war配備」→タスク「repo.conn 切断」の手順を計画する。逆実行手順計画部122は、元の手順と、計画された部分ロールバック手順とを、関連付けて部分ロールバック手順保存部123に保存する。
次に、上記の方針に基づいた事後対応ブロックの構成要素の処理を説明する。図7は、ロールバック手順生成部131によるロールバック手順の生成処理の例を示す説明図である。
図7(a)は、実行途中の手順を示す。具体的には、図7(a)は、タスク「app1.war削除」が実行された直後に例外が発生した状態を示す。また、図7(a)に示す破線で囲まれた領域は、逆実行可能な手順の部分を表す。
ロールバック手順生成部131は、実行済みのタスクを逆実行することによって、図7(b)に示す逆実行手順を生成する。図7(b)に示す破線で囲まれた領域には、逆実行可能な手順の部分の逆実行で生成された手順が含まれる。なお、実行不可能なタスクであるタスク「app1.war配備」には、「×」が記されている。
図8は、ロールバック手順生成部131によるロールバック手順の生成処理の他の例を示す説明図である。図8(a)に示す手順は、図7(b)に示す逆実行手順である。図8(a)に示す破線で囲まれた領域は、逆実行不可能な手順の部分を表す。
ロールバック手順生成部131は、元の手順をキーに、事前に計画された部分ロールバック手順を部分ロールバック手順保存部123から取得する。次いで、ロールバック手順生成部131は、取得された部分ロールバック手順と逆実行手順とを合成する。
図8(b)は、2つの手順が合成された手順、すなわち生成目的とするロールバック手順を示す。図8(b)に示す破線で囲まれた領域には、部分ロールバック手順が含まれている。以上のように、本実施形態のシステム更新装置100は、ロールバック手順を準備する。
以下、本実施形態のシステム更新装置100がロールバック手順を準備する具体的な例を図9〜図20を参照して説明する。図9は、手順計画部111に入力される状態要素モデルの例を示す説明図である。
図9に示す状態要素モデルは、更新対象システム500を表す。図9に示す矩形は、状態要素を表す。各状態要素は、更新対象システム500を構成する各部品をそれぞれ表す。
また、図9に示す状態要素内の楕円は、状態要素の状態を表す。二重線の楕円は、現在状態を表す。また、黒色の楕円は、目的状態を表す。また、楕円間の矢印は、状態遷移を表す。手順計画部111は、入力された状態要素モデルを基に、各状態要素の状態を現在状態から目的状態へ遷移させるような更新作業手順を計画する。
また、図9に示す破線の矢印は、依存性を表す。また、図9に示す白色の丸は、依存性の起点を表す。始点が状態要素そのものに付随し、終点が任意の状態に付随する矢印は、当該状態要素内の全ての状態遷移から当該任意の状態への依存性を表す。
例えば、状態要素E1の状態遷移t から状態要素E2の状態s への依存性は、状態遷移t の実行が状態s に依存していることを示す。すなわち、状態要素E1は、状態要素E2の状態が状態s であるときにしか状態遷移t を実行できない。
また、図9に示す破線の角丸四角形は、手順計画部111が入力された状態要素モデルを分割することによって生成されたグループを表す。手順計画部111は、入力された状態要素モデルを基に更新作業手順を計画する。
図10は、手順計画部111が計画する更新作業手順の例を示す説明図である。図10に示す更新作業手順は、図9に示す状態要素モデル内の各現在状態を各目的状態にそれぞれ遷移させるための手順である。
図10に示す各破線の角丸四角形は、図9に示す各グループにそれぞれ対応する。また、図10に示す矩形および矢印は、図34に示す矩形および矢印と同じ意味を有する。例えば、タスク「bot.service:t->f」は、「状態要素bot.service の状態を状態t から状態f へ遷移させる」というタスクである。
手順計画部111は、計画された更新作業手順を逆実行手順計画部122に入力する。逆実行手順計画部122は、入力された順方向の変更手順である図10に示す左のグループの手順および右のグループの手順に対して単純に逆実行することによって、逆実行手順を生成できる。
しかし、図10に示す順方向の変更手順である中央のグループの手順には状態要素app.service に対するタスクが含まれるため、逆実行手順計画部122は、上記の理由により単純に逆実行できない。よって、図10に示すように、逆実行手順計画部122には、中央のグループの手順に対してのみ部分ロールバック手順を計画することが求められる。
なお、部分ロールバック手順の計画が求められるグループ同士が隣接したとき、以下に示す前処理の実行が求められる。図11は、逆実行手順計画部122による各グループの手順に対する統合処理の例を示す説明図である。図11に示す「不要」と記載された角丸四角形は、部分ロールバック手順の計画が求められないグループの手順を表す。また、図11に示す「必要」と記載された角丸四角形は、部分ロールバック手順の計画が求められるグループの手順を表す。
部分ロールバック手順の計画が求められるグループ同士が隣接すると、以降の手続きに不都合が生じる可能性がある。よって、逆実行手順計画部122は、図11に示すように部分ロールバック手順の計画が求められるグループ同士を1つのグループに統合する前処理を行う。
図12は、逆実行手順計画部122が計画する逆実行手順の例を示す説明図である。図12に示す各破線の角丸四角形は、図10に示す各グループにそれぞれ対応する。上記のように、図12に示す左のグループの逆実行手順および右のグループの逆実行手順は、図10に示す左のグループの手順および右のグループの手順に対する単純な逆実行で生成された手順である。
例えば、図10に示すタスク「bot.service:t->f」は、図12に示すタスク「bot.service:f->t」に変更されている。また、図12に示す矢印の向きは、図10に示す矢印の向きとそれぞれ反対になっている。すなわち、左のグループの逆実行手順および右のグループの逆実行手順は、通常の逆実行で計画された手順である。
実行順序調整部112は、図12に示す逆実行手順のように生成された逆実行手順のうち、実行順序の調整が求められる逆実行手順に対して実行順序補完処理を実行する。
以下、実行順序調整部112が実行順序補完処理を実行することによってシステム逆実行手順Pからシステム逆実行手順P’を生成する処理を、図13〜図15を参照して説明する。図13は、実行順序調整部112による順序関係候補の収集処理の例を示す説明図である。
図13に示す手順Pは、逆実行手順である。また、タスクt は、逆実行不可能なタスクである。最初に、実行順序調整部112は、タスクt に対して図13に示す処理Aと処理Bを実行する。
処理Aにおいて、実行順序調整部112は、以下の2つの条件を満たすタスク群d1,d2,・・・,dn を列挙する。
(1)タスクt と並列に実行可能
(2)タスクt の実行可能条件に影響する
図13に示す処理Aでは、タスク群としてタスクd1、タスクd2、タスクd3が列挙されている。その理由は、いずれのタスクもタスクt と並列に実行可能である。また、タスクd1とタスクd3が実行されると、タスクt が実行可能になる。また、タスクd2が実行されると、タスクt が実行不可能になる。すなわち、いずれのタスクもタスクt の実行可能条件に影響するからである。
次いで、処理Bにおいて、実行順序調整部112は、タスクt とタスクdi(i=1, ・・・,n) との間に張られる順序関係の候補の集合X(t,di) を生成する。X には、候補「t →di」、および候補「di→t 」が含まれる。
上記の実行可能条件への影響が踏まえられると、順序関係の候補としてタスクt とタスクd1との間には、「d1→t 」が張られる。また、タスクt とタスクd2との間には、「t →d2」が張られる。また、タスクt とタスクd3との間には、「d3→t 」が張られる。よって、上記の手順で全てのタスクt に対して集められた順序関係の候補の集合X は、図13に示すようにX={d1 →t, t→d2, d3→t}になる。
次に、実行順序調整部112は、全てのタスクt に対して「タスクt が実行可能」になるための制約Cexe(t) を生成する。タスクt が実行可能なタイミングは、図13に示す処理Bを参照すると、以下のいずれかである。
1.タスクd1が実行された後
2.タスクd3が実行された後、タスクd2が実行される前
「順序関係a →b を採用する」ことを[a→b]と記載すると、「タスクt が実行可能」になるための制約Cexe(t) は、以下のように記載される。
Cexe(t) = ( [d1→t] OR ( [d3→t] AND [t→d2] ) ) ・・・式(1)
次に、実行順序調整部112は、「手順Pの順序関係に矛盾がない」ための制約Cordを生成する。「順序関係に矛盾がない」とは、以下の2つのルールが保たれていることを意味する。
1.(非対称律)[a→b]と[b→a]が同時に成立してはならない
2.(推移律)[a→b]と[b→c]が成立するなら[a→c]も成立する
よって、図13に示す手順の順序関係に矛盾がないための制約Cordは、以下のように記載される。
Cord = NOT ( [t→d2] AND [d1→t] ) ・・・式(2)
なお、非特許文献4には、制約Cexe(t) の式、および制約Cordの式のより複雑な例が記載されている。
次に、実行順序調整部112は、制約解決ソルバを用いて、Cordを満たし、かつ可能な限り多くのCexe(t) を満たす手順のうち、必要最小限の順序構造を手順P’として採用する。実行順序調整部112は、例えば集合X から必要最小限の順序関係を採用し、手順Pに追加することによって手順P’を構成する。
制約解決ソルバとして、例えば非特許文献4に記載されているMaxSATソルバが使用される。MaxSATソルバが使用されると、手順の半順序化が実現される。また、非特許文献4には、上記のような制約の例が記載されている。
図14は、実行順序調整部112により実行順序が補完された手順の例を示す説明図である。図14に示す手順P’1、および手順P’2はいずれも、制約「Cexe(t) かつCord」を満たす。
また、図14に示す手順P’2の方が手順P’1よりも順序性の制約が少ない。すなわち、実行順序調整部112は、順序関係の数が最小である手順P’2をシステム逆実行手順P’に採用する。
図15は、手順における順序関係の数を示す説明図である。手順における順序関係の数は、タスク間にかかる全ての順序関係の数である。図15(a)に示すように矢印が3本だけ張られている手順において、タスク間にかかる全ての順序関係の数は、図15(b)に示すように6つである。タスク間にかかる全ての順序関係の数を用いて、実行順序調整部112は、システム逆実行手順Pを決定する。
また、中央のグループの部分ロールバック手順は、図12にはまだ記載されていない。逆実行手順計画部122は、周辺の逆実行手順との実行順序も考慮された手順を構築し、全体として正しい部分ロールバック手順を計画する。
以下、逆実行手順計画部122が部分ロールバック手順計画処理を実行することによって部分手順Pから部分ロールバック手順参照テーブルDを生成する処理を、図16〜図20を参照して説明する。
最初に、逆実行手順計画部122は、逆実行不可能な部分手順Pが実行される時に発生する可能性がある全ての実行状況S(S={s0,s1, ・・・,sn}) を列挙する。
図16は、逆実行手順計画部122による部分ロールバック手順の計画処理の例を示す説明図である。図16(a)の上に示す手順は、図10に示す中央のグループの手順である。
また、図16(a)の下に示す吹き出しには、実行状況S が記載されている。図16(a)の下に示す白色の矩形は、未実行のタスクを表す。また、黒色の矩形は、実行済みのタスクを表す。
図16(a)の下に示すように、実行状況S には8通りの状況が含まれている。計算処理が削減されるためには可能な限り発生する可能性がある状況を減らすことが求められるため、逆実行手順計画部122は、手順の一部の線形化を行う。具体的には、逆実行手順計画部122は、適当に順序関係を加えることによって、逆実行不可能な部分手順Pを線形手順に変形する。
図16(b)の上に示す手順は、一部が線形化された図10に示す中央のグループの手順である。具体的には、図16(a)で並列に実行可能なタスク「app.config:u->t 」とタスク「dependPackage:f->t」が、図16(b)でタスク「dependPackage:f->t」→タスク「app.config:u->t 」の順に並び替えられている。
また、図16(b)の下に示すように、実行状況S に含まれている状況は、6通りまで削減されている。よって、逆実行手順計画部122は、図16(b)の上に示す手順を基に部分ロールバック手順を計画する。
なお、線形化が実行される場合、元の更新作業手順における部分手順Pも、線形化された後の手順に置き換えられることが求められる。また、手順の線形化は、手順に応じて実行されなくてもよい。
次いで、逆実行手順計画部122は、各実行状況siに対して、状態モデルの状態を部分手順Pが実行される前の状態へ遷移させるための部分ロールバック手順Piを求める。図17は、逆実行手順計画部122による部分ロールバック手順の計画処理の他の例を示す説明図である。
図17(a)は、例外が発生したタイミングの手順の実行状況を示す。具体的には、図17(a)は、タスク「app.service:t->r」→タスク「app.config:u->t 」→タスク「dependPackage:f->t」まで実行された段階で例外が発生した状況を示す。
図17(a)に示す例外が発生した状況に対して、逆実行手順計画部122は、図17(b)に示す状態要素モデルの状態を初期状態に戻すという構成変更問題の解を部分ロールバック手順として求める。上記のように、逆実行手順計画部122は、例外が発生した各状況に対して状態を初期状態に遷移させるための部分ロールバック手順を求める。
また、部分ロールバック手順を求める際、部分ロールバック手順の計画対象に依存する周辺タスクが存在する場合、逆実行手順計画部122は、仮状態要素を追加する。図18は、逆実行手順計画部122による部分ロールバック手順の計画処理の他の例を示す説明図である。
図18(a)に示す仮状態要素は、状態app.service.t に依存するタスク「bot.service:f->t」に対応する状態遷移を含む。また、図18(a)に示す状態モデルにおいて、状態遷移「bot.service:f->t」に対応する仮状態要素の状態遷移から状態app.service.t への依存性も追加されている。
図18(b)は、逆実行手順計画部122が図18(a)に示す状態モデルを基に計画した部分ロールバック手順を示す。仮状態要素および依存性が追加されたことによって、図18(b)に示す部分ロールバック手順とタスク「bot.service:f->t」とが接合されている。
すなわち、図18に示す追加処理を実行することによって、逆実行手順計画部122は、計画された部分ロールバック手順と部分ロールバック手順の計画対象に依存するタスクとを矛盾なく接合できる。
また、部分ロールバック手順から周辺の状態要素に対する依存性が存在する場合、逆実行手順計画部122は、部分ロールバック手順と周辺の逆向きのタスクとの間に順序関係を追加する。図19は、逆実行手順計画部122による部分ロールバック手順の計画処理の他の例を示す説明図である。
図19に示す吹き出し内の状態要素モデルを参照すると、部分ロールバック手順の計画対象から状態repo.connect.tへ依存性が付与されている。状態repo.connect.tへの依存性が満たされるように、逆実行手順計画部122は、部分ロールバック手順とタスクとの間に順序関係を追加する。
順序関係を追加するために、逆実行手順計画部122は、例えば実行順序調整部112による実行順序補完処理と同様に、順序関係の候補を生成し、生成された候補に対して制約解決を行う。図19に示す例では、逆実行手順計画部122は、「付与されている依存性が全て満たされる最小の順序構造」を求める。
求められた最小の順序構造に基づいて、逆実行手順計画部122は、タスク「repo.connect:f->t 」からタスク「dependPackage:f->t」への順序関係を追加する。また、逆実行手順計画部122は、タスク「dependPackage:f->t」からタスク「repo.connect:t->f 」への順序関係を追加する。
すなわち、図19に示す追加処理を実行することによって、逆実行手順計画部122は、計画された部分ロールバック手順と部分ロールバック手順の計画対象が依存するタスクとを矛盾なく接合できる。
次いで、逆実行手順計画部122は、実行状況siをキーとして部分ロールバック手順Piを返すテーブルである部分ロールバック手順参照テーブルDを生成する。図20は、逆実行手順計画部122により生成された部分ロールバック手順参照テーブルDの例を示す説明図である。
逆実行手順計画部122は、例外が発生した時の各実行状況に対応する部分ロールバック手順、および図18〜図19に示す周囲との依存性を解決可能な手段(図示せず)を含む部分ロールバック手順参照テーブルDを部分ロールバック手順保存部123に入力する。
また、逆実行手順計画部122は、生成された逆実行手順も部分ロールバック手順保存部123に入力する。部分ロールバック手順保存部123は、入力された部分ロールバック手順参照テーブルDおよび逆実行手順を保存する。
[動作の説明]
以下、本実施形態のシステム更新装置100の手順を生成する動作を図21を参照して説明する。図21は、第1の実施形態のシステム更新装置100による手順生成処理の動作を示すフローチャートである。
最初に、手順計画部111に状態要素モデルが入力される(ステップS110)。入力された状態要素モデルを基に、手順計画部111は、更新作業手順を計画する(ステップS120)。手順計画部111は、計画された更新作業手順を実行順序調整部112に入力する。
次いで、実行順序調整部112は、入力された更新作業手順を基に、実行順序補完処理を行う(ステップS130)。実行順序調整部112は、実行順序が補完された更新作業手順をロールバック手順網羅部121に入力する。
次いで、ロールバック手順網羅部121は、入力された更新作業手順のうち逆実行可能な部分のみを逆実行手順計画部122に入力する。逆実行手順計画部122は、入力された部分を基に逆実行手順を生成する(ステップS140)。
次いで、ロールバック手順網羅部121は、入力された更新作業手順のうち逆実行不可能な部分を逆実行手順計画部122に入力する。逆実行手順計画部122は、入力された部分を基に部分ロールバック手順計画処理を行う(ステップS150)。部分ロールバック手順計画処理を実行した後、システム更新装置100は、手順生成処理を終了する。
次に、本実施形態のシステム更新装置100の手順を実行する動作を図22を参照して説明する。図22は、第1の実施形態のシステム更新装置100による手順実行処理の動作を示すフローチャートである。
最初に、手順実行部113に、実行順序調整部112により実行順序が補完された更新作業手順が入力される(ステップS210)。
次いで、手順実行部113は、入力された更新作業手順を構成するタスクを実行する(ステップS220)。タスクを実行した後、手順実行部113は、更新対象システム500の現在状態を状態管理部132に記憶する(ステップS230)。
次いで、手順実行部113は、更新対象システム500において例外が発生したことが通知されたか否かを確認する(ステップS240)。例外が発生したことが通知されなかった場合(ステップS240におけるNo)、手順実行部113は、ステップS290の処理を行う。
例外が発生したことが通知された場合(ステップS240におけるYes )、手順実行部113は、実行済みの更新作業手順全てに対する逆実行が可能であるか否かを確認する(ステップS250)。
更新作業手順全てに対する逆実行が可能である場合(ステップS250におけるYes )、手順実行部113は、ロールバック手順生成部131に更新作業手順を基に逆実行でロールバック手順を生成するように指示する。
次いで、ロールバック手順生成部131は、部分ロールバック手順保存部123から現在状態に応じた逆実行手順をロールバック手順として取得する(ステップS260)。次いで、手順実行部113は、取得されたロールバック手順をロールバック手順生成部131から取得する。ロールバック手順を取得した後、手順実行部113は、ステップS280の処理を行う。
更新作業手順の一部に対する逆実行が不可能である場合(ステップS250におけるNo)、手順実行部113は、実行中の更新作業手順をロールバック手順生成部131に入力する。
ロールバック手順生成部131は、入力された手順のうちの逆実行が不可能である部分手順に対応する部分ロールバック手順を、状態管理部132に記憶されている現在状態も用いて部分ロールバック手順保存部123から取得する。また、ロールバック手順生成部131は、取得された部分ロールバック手順に応じた逆実行手順も併せて取得する。
次いで、ロールバック手順生成部131は、逆実行が可能である部分手順に対する逆実行で生成された逆実行手順と取得された部分ロールバック手順とを合成することによって、ロールバック手順を生成する(ステップS270)。ロールバック手順生成部131は、生成されたロールバック手順を手順実行部113に入力する。手順が入力された後、手順実行部113は、ステップS280の処理を行う。
ステップS280において、手順実行部113は、入力されたロールバック手順を実行する。ロールバック手順が実行されることによって、更新対象システム500の状態が初期状態に戻る。ロールバック手順を実行した後、システム更新装置100は、手順実行処理を終了する。
ステップS290において、手順実行部113は、入力された更新作業手順を構成するタスクのうち、まだ実行されていないタスクが存在するか否かを確認する。まだ実行されていないタスクが存在する場合(ステップS290におけるYes )、手順実行部113は、再度ステップS220の処理を行う。
更新作業手順を構成する全てのタスクが実行済みである場合(ステップS290におけるNo)、システム更新装置100は、手順実行処理を終了する。
次に、図21に示す手順生成処理を構成する副処理であるステップS130の実行順序補完処理を、図23を参照して説明する。図23は、第1の実施形態の実行順序調整部112による実行順序補完処理の動作を示すフローチャートである。
最初に、実行順序調整部112は、逆実行不可能なタスクt と並列に実行可能で、かつ逆実行不可能なタスクt の実行可能条件に影響するタスク群を列挙する(ステップS131)。
次いで、実行順序調整部112は、逆実行不可能なタスクt と列挙されたタスク群との間に張られる順序関係の候補の集合を生成する(ステップS132)。
次いで、実行順序調整部112は、全てのタスクt に対して「タスクt が実行可能」になるための制約Cexe(t) を生成する(ステップS133)。
次いで、実行順序調整部112は、逆実行手順の順序関係に矛盾がないための制約Cordを生成する(ステップS134)。
次いで、実行順序調整部112は、Cordを満たし、かつ可能な限り多くのCexe(t) を満たす必要最小限の順序構造の手順を逆実行手順として採用する(ステップS135)。採用した後、実行順序調整部112は、実行順序補完処理を終了する。
次に、図21に示す手順生成処理を構成する副処理であるステップS150の部分ロールバック手順計画処理を、図24を参照して説明する。図24は、第1の実施形態の逆実行手順計画部122による部分ロールバック手順計画処理の動作を示すフローチャートである。
最初に、逆実行手順計画部122は、適当に順序関係を加えることによって、逆実行不可能な部分手順Pを線形手順に変形する(ステップS151)。なお、ステップS151の処理は、省略されてもよい。
次いで、逆実行手順計画部122は、逆実行不可能な部分手順Pが実行される時に発生する可能性がある全ての実行状況S を列挙する(ステップS152)。
次いで、逆実行手順計画部122は、各実行状況siに対して、状態モデルの状態を部分手順Pが実行される前の状態へ遷移させるための部分ロールバック手順Piを計画する(ステップS153)。
次いで、逆実行手順計画部122は、計画された部分ロールバック手順Piの周囲との依存性を解決可能な手段を生成する(ステップS154)。
次いで、逆実行手順計画部122は、実行状況siをキーとして部分ロールバック手順Piを返すテーブルである部分ロールバック手順参照テーブルDを生成する(ステップS155)。部分ロールバック手順参照テーブルDには、例外が発生した時の各実行状況siに対応する部分ロールバック手順Pi、および部分ロールバック手順Piの周囲との依存性を解決可能な手段が含まれる。
次いで、逆実行手順計画部122は、部分ロールバック手順参照テーブルDと逆実行手順を部分ロールバック手順保存部123に入力する。部分ロールバック手順保存部123は、部分ロールバック手順参照テーブルDと逆実行手順を保存する(ステップS156)。保存された後、逆実行手順計画部122は、部分ロールバック手順計画処理を終了する。
[効果の説明]
本実施形態のシステム更新装置100の実行順序調整部112は、更新作業手順に対する逆実行で生成された逆実行手順に対して実行順序を補完する。実行順序が補完されることによって、生成された逆実行手順がロールバック手順として使用可能になる。すなわち、単純な逆実行処理によりロールバック手順が生成されるため、システム更新装置100は、ロールバック手順の準備に要するリソース量を削減できる。
また、本実施形態のシステム更新装置100のロールバック手順生成部131は、更新作業手順の逆実行可能な部分に対する逆実行で生成された逆実行手順と、更新作業手順の逆実行不可能な部分に対する計画処理で生成された部分ロールバック手順とを合成する。合成することによって、ロールバック手順生成部131は、使用可能なロールバック手順を生成する。すなわち、計画処理の対象部分が削減されるため、システム更新装置100は、ロールバック手順の準備に要するリソース量を削減できる。
実施形態2.
[構成の説明]
次に、本発明の第2の実施形態を、図面を参照して説明する。図25は、本発明によるシステム更新装置の第2の実施形態の構成例を示す説明図である。図25に示すように、本実施形態のシステム更新装置200は、正常系ブロックと、事前処理ブロックと、事後対応ブロックとで構成されている。
図25に示す正常系ブロック、および事後対応ブロックは、図2に示す正常系ブロック、および事後対応ブロックとそれぞれ同様である。図25に示す事前処理ブロックには、図2に示す事前処理ブロックと異なり、ロールバック手順網羅部121と、部分ロールバック手順保存部123とが含まれる。
すなわち、本実施形態のシステム更新装置200は、第1の実施形態の部分ロールバック手順計画処理を実行せず、第1の実施形態の実行順序補完処理を実行する装置である。システム更新装置200の事前処理ブロックは、逆実行不可能な部分手順が含まれていない更新作業手順を処理対象にする。なお、本実施形態では、ロールバック手順網羅部121が逆実行手順を生成する。
[動作の説明]
以下、本実施形態のシステム更新装置200の手順を生成する動作を図26を参照して説明する。図26は、第2の実施形態のシステム更新装置200による手順生成処理の動作を示すフローチャートである。
図26に示すステップS310〜ステップS330の各処理は、図21に示すステップS110〜ステップS130の各処理とそれぞれ同様である。
次いで、ロールバック手順網羅部121は、入力された更新作業手順を基に逆実行手順を生成する(ステップS340)。ロールバック手順網羅部121は、生成された逆実行手順を部分ロールバック手順保存部123に入力する。
次いで、部分ロールバック手順保存部123は、入力された逆実行手順を保存する(ステップS350)。保存された後、システム更新装置200は、手順生成処理を終了する。
次に、本実施形態のシステム更新装置200の手順を実行する動作を図27を参照して説明する。図27は、第2の実施形態のシステム更新装置200による手順実行処理の動作を示すフローチャートである。
図27に示すステップS410〜ステップS440の各処理は、図22に示すステップS210〜ステップS240の各処理とそれぞれ同様である。また、図27に示すステップS450〜ステップS470の各処理は、図22に示すステップS260、ステップS280〜ステップS290の各処理とそれぞれ同様である。
[効果の説明]
本実施形態のシステム更新装置200の実行順序調整部112は、更新作業手順に対する逆実行で生成された逆実行手順に対して実行順序を補完する。実行順序が補完されることによって、生成された逆実行手順がロールバック手順として使用可能になる。すなわち、単純な逆実行処理によりロールバック手順が生成されるため、システム更新装置200は、ロールバック手順の準備に要するリソース量を削減できる。
実施形態3.
[構成の説明]
次に、本発明の第3の実施形態を、図面を参照して説明する。図28は、本発明によるシステム更新装置の第3の実施形態の構成例を示す説明図である。図28に示すように、本実施形態のシステム更新装置300は、正常系ブロックと、事前処理ブロックと、事後対応ブロックとで構成されている。
図28に示す事前処理ブロック、および事後対応ブロックは、図2に示す事前処理ブロック、および事後対応ブロックとそれぞれ同様である。図28に示す正常系ブロックには、図2に示す正常系ブロックと異なり、手順計画部111と、手順実行部113とが含まれる。
すなわち、本実施形態のシステム更新装置300は、第1の実施形態の実行順序補完処理を実行せず、第1の実施形態の部分ロールバック手順計画処理を実行する装置である。システム更新装置300の事前処理ブロックは、生成された逆実行手順において実行順序の補完が不要な更新作業手順を処理対象にする。
[動作の説明]
以下、本実施形態のシステム更新装置300の手順を生成する動作を図29を参照して説明する。図29は、第3の実施形態のシステム更新装置300による手順生成処理の動作を示すフローチャートである。
図29に示すステップS510〜ステップS520の各処理は、図21に示すステップS110〜ステップS120の各処理とそれぞれ同様である。
手順計画部111は、計画された更新作業手順をロールバック手順網羅部121に入力する。ロールバック手順網羅部121は、入力された更新作業手順のうち逆実行可能な部分のみを逆実行手順計画部122に入力する。逆実行手順計画部122は、入力された部分を基に逆実行手順を生成する(ステップS530)。
次いで、ロールバック手順網羅部121は、入力された更新作業手順のうち逆実行不可能な部分を逆実行手順計画部122に入力する。逆実行手順計画部122は、入力された部分を基に部分ロールバック手順計画処理を行う(ステップS540)。部分ロールバック手順計画処理を実行した後、システム更新装置300は、手順生成処理を終了する。
また、本実施形態のシステム更新装置300の手順を実行する処理は、図22に示す手順実行処理と同様である。
[効果の説明]
本実施形態のシステム更新装置300のロールバック手順生成部131は、更新作業手順の逆実行可能な部分に対する逆実行で生成された逆実行手順と、更新作業手順の逆実行不可能な部分に対する計画処理で生成された部分ロールバック手順とを合成する。合成することによって、ロールバック手順生成部131は、使用可能なロールバック手順を生成する。すなわち、計画処理の対象部分が削減されるため、システム更新装置300は、ロールバック手順の準備に要するリソース量を削減できる。
以下、各実施形態のシステム更新装置100、システム更新装置200、およびシステム更新装置300のハードウェア構成の具体例を説明する。図30は、本発明の各実施形態を適用可能なシステム更新装置のハードウェア構成例を示す説明図である。
図30に示すシステム更新装置は、CPU(Central Processing Unit )101と、主記憶部102と、通信部103と、補助記憶部104とを備える。また、ユーザが操作するための入力部105や、ユーザに処理結果または処理内容の経過を提示するための出力部106を備えてもよい。
システム更新装置100、システム更新装置200、およびシステム更新装置300は、図30に示すCPU101が各構成要素が有する機能を提供するプログラムを実行することによって、ソフトウェアにより実現される。
すなわち、CPU101が補助記憶部104に格納されているプログラムを、主記憶部102にロードして実行し、システム更新装置100、システム更新装置200、およびシステム更新装置300の各動作を制御することによって、各機能がソフトウェアにより実現される。
主記憶部102は、データの作業領域やデータの一時退避領域として用いられる。主記憶部102は、例えばRAM(Random Access Memory)である。
通信部103は、有線のネットワークまたは無線のネットワーク(情報通信ネットワーク)を介して、周辺機器との間でデータを入力および出力する機能を有する。
補助記憶部104は、一時的でない有形の記憶媒体である。一時的でない有形の記憶媒体として、例えば磁気ディスク、光磁気ディスク、CD−ROM(Compact Disk Read Only Memory )、DVD−ROM(Digital Versatile Disk Read Only Memory )、半導体メモリが挙げられる。
入力部105は、データや処理命令を入力する機能を有する。入力部105は、例えばキーボードやマウス等の入力デバイスである。
出力部106は、データを出力する機能を有する。出力部106は、例えば液晶ディスプレイ装置等の表示装置、またはプリンタ等の印刷装置である。
また、図30に示すように、システム更新装置において、各構成要素は、システムバス107に接続されている。
補助記憶部104は、例えば、図2に示す手順計画部111、実行順序調整部112、手順実行部113、ロールバック手順網羅部121、逆実行手順計画部122、ロールバック手順生成部131、および状態管理部132を実現するためのプログラムを記憶している。
また、主記憶部102は、例えば、部分ロールバック手順保存部123の記憶領域として利用される。また、手順計画部111、および手順実行部113は、通信部103を介して通信処理を実行してもよい。
なお、システム更新装置100、システム更新装置200、およびシステム更新装置300は、ハードウェアにより実現されてもよい。例えば、システム更新装置100は、内部に図2に示すような機能を実現するLSI(Large Scale Integration )等のハードウェア部品が含まれる回路が実装されてもよい。
また、各構成要素の一部または全部は、汎用の回路(circuitry )または専用の回路、プロセッサ等やこれらの組み合わせによって実現されてもよい。これらは、単一のチップ(例えば、上記のLSI)によって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
次に、本発明の概要を説明する。図31は、本発明によるシステム更新装置の概要を示すブロック図である。本発明によるシステム更新装置10は、更新対象システムを構成する状態要素の状態を現在状態から目的状態へ遷移させるための作業(例えば、タスク)が所定の順に複数並べられた手順である更新手順に含まれている作業を基に状態要素の状態を更新手順の実行中の任意の状態から現在状態へ遷移させるための作業である逆作業を生成する逆作業生成部11(例えば、逆実行手順計画部122)と、生成された逆作業が所定の順と逆の順に複数並べられた手順をロールバック手順として生成する第1手順生成部12(例えば、逆実行手順計画部122)と、生成されたロールバック手順に含まれている実行不可能な逆作業が実行可能になるための条件が満たされるように実行不可能な逆作業の生成元の作業と更新手順に含まれている他の作業との間に存在する実行順序を示す情報を調整する調整部13(例えば、実行順序調整部112)とを備える。
そのような構成により、システム更新装置は、ロールバック手順の準備に要するリソース量を削減できる。
また、システム更新装置10は、逆作業が生成不可能な作業が含まれている更新手順の部分に対応する状態要素の状態を更新手順の実行中の任意の状態から現在状態へ遷移させるための作業の手順を計画する計画部(例えば、逆実行手順計画部122)と、逆作業が生成不可能な作業が含まれていない更新手順の部分を基に生成されたロールバック手順と計画された手順とを合成することによって新たなロールバック手順を生成する第2手順生成部(例えば、ロールバック手順生成部131)とを備えてもよい。
そのような構成により、システム更新装置は、ロールバック手順の生成に関してより多くの更新手順に対応できる。
また、システム更新装置10は、更新手順の実行中の更新対象システムの最新の状態を管理する管理部(例えば、状態管理部132)を備え、第2手順生成部は、管理されている最新の状態に基づいて新たなロールバック手順を生成してもよい。
そのような構成により、システム更新装置は、システムの状態を現在状態から初期状態へロールバックさせるための作業の手順を生成できる。
また、システム更新装置10は、手順を実行する実行部(例えば、手順実行部113)を備えてもよい。
そのような構成により、システム更新装置は、例外が発生した時にロールバック手順を実行できる。
また、更新手順は、2つ以上の作業が順不同に実行可能に並べられた手順でもよい。
そのような構成により、システム更新装置は、半順序手順の実行中に更新対象システムが到達する可能性がある全ての状態に対してロールバック手順を生成できる。
また、第1手順生成部12は、更新対象システムの初期状態と更新対象システムの目的状態とに基づいて更新手順を生成してもよい。
そのような構成により、システム更新装置は、更新手順を生成できる。
以上、本実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2018年3月29日に出願された日本特許出願2018−063841を基礎とする優先権を主張し、その開示の全てをここに取り込む。
また、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下に限られない。
(付記1)更新対象システムを構成する状態要素の状態を現在状態から目的状態へ遷移させるための作業が所定の順に複数並べられた手順である更新手順に含まれている前記作業を基に前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業である逆作業を生成する逆作業生成部と、生成された逆作業が前記所定の順と逆の順に複数並べられた手順をロールバック手順として生成する第1手順生成部と、生成されたロールバック手順に含まれている実行不可能な逆作業が実行可能になるための条件が満たされるように前記実行不可能な逆作業の生成元の作業と前記更新手順に含まれている他の作業との間に存在する実行順序を示す情報を調整する調整部とを備えることを特徴とするシステム更新装置。
(付記2)逆作業が生成不可能な作業が含まれている前記更新手順の部分に対応する状態要素の状態を前記更新手順の実行中の任意の状態から現在状態へ遷移させるための作業の手順を計画する計画部と、逆作業が生成不可能な作業が含まれていない前記更新手順の部分を基に生成されたロールバック手順と計画された手順とを合成することによって新たなロールバック手順を生成する第2手順生成部とを備える付記1記載のシステム更新装置。
(付記3)前記更新手順の実行中の前記更新対象システムの最新の状態を管理する管理部を備え、前記第2手順生成部は、管理されている最新の状態に基づいて新たなロールバック手順を生成する付記2記載のシステム更新装置。
(付記4)手順を実行する実行部を備える付記1から付記3のうちのいずれかに記載のシステム更新装置。
(付記5)前記更新手順は、2つ以上の作業が順不同に実行可能に並べられた手順である付記1から付記4のうちのいずれかに記載のシステム更新装置。
(付記6)前記第1手順生成部は、前記更新対象システムの初期状態と前記更新対象システムの目的状態とに基づいて前記更新手順を生成する付記1から付記5のうちのいずれかに記載のシステム更新装置。
(付記7)更新対象システムを構成する状態要素の状態を現在状態から目的状態へ遷移させるための作業が所定の順に複数並べられた手順である更新手順に含まれている前記作業を基に前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業である逆作業を生成し、生成された逆作業が前記所定の順と逆の順に複数並べられた手順をロールバック手順として生成し、生成されたロールバック手順に含まれている実行不可能な逆作業が実行可能になるための条件が満たされるように前記実行不可能な逆作業の生成元の作業と前記更新手順に含まれている他の作業との間に存在する実行順序を示す情報を調整することを特徴とするシステム更新方法。
(付記8)逆作業が生成不可能な作業が含まれている前記更新手順の部分に対応する状態要素の状態を前記更新手順の実行中の任意の状態から現在状態へ遷移させるための作業の手順を計画し、逆作業が生成不可能な作業が含まれていない前記更新手順の部分を基に生成されたロールバック手順と計画された手順とを合成することによって新たなロールバック手順を生成する付記7記載のシステム更新方法。
(付記9)コンピュータに、更新対象システムを構成する状態要素の状態を現在状態から目的状態へ遷移させるための作業が所定の順に複数並べられた手順である更新手順に含まれている前記作業を基に前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業である逆作業を生成する逆作業生成処理、生成された逆作業が前記所定の順と逆の順に複数並べられた手順をロールバック手順として生成する手順生成処理、および生成されたロールバック手順に含まれている実行不可能な逆作業が実行可能になるための条件が満たされるように前記実行不可能な逆作業の生成元の作業と前記更新手順に含まれている他の作業との間に存在する実行順序を示す情報を調整する調整処理を実行させるためのシステム更新プログラム。
(付記10)コンピュータに、逆作業が生成不可能な作業が含まれている前記更新手順の部分に対応する状態要素の状態を前記更新手順の実行中の任意の状態から現在状態へ遷移させるための作業の手順を計画する計画処理、および逆作業が生成不可能な作業が含まれていない前記更新手順の部分を基に生成されたロールバック手順と計画された手順とを合成することによって新たなロールバック手順を生成する合成処理を実行させる付記9記載のシステム更新プログラム。
(付記11)コンピュータで実行されるときに、更新対象システムを構成する状態要素の状態を現在状態から目的状態へ遷移させるための作業が所定の順に複数並べられた手順である更新手順に含まれている前記作業を基に前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業である逆作業を生成し、生成された逆作業が前記所定の順と逆の順に複数並べられた手順をロールバック手順として生成し、生成されたロールバック手順に含まれている実行不可能な逆作業が実行可能になるための条件が満たされるように前記実行不可能な逆作業の生成元の作業と前記更新手順に含まれている他の作業との間に存在する実行順序を示す情報を調整するシステム更新プログラムを記録したコンピュータ読み取り可能な記録媒体。
(付記12)コンピュータで実行されるときに、逆作業が生成不可能な作業が含まれている前記更新手順の部分に対応する状態要素の状態を前記更新手順の実行中の任意の状態から現在状態へ遷移させるための作業の手順を計画し、逆作業が生成不可能な作業が含まれていない前記更新手順の部分を基に生成されたロールバック手順と計画された手順とを合成することによって新たなロールバック手順を生成する付記11記載の記録媒体。
産業上の利用の可能性
本発明は、例外処理手順(ロールバック手順)の自動生成の分野に好適に適用される。