説明

リリースプログラム管理方法およびリリースプログラム管理システム

【課題】一旦リリースしたプログラムに不備があった場合に、プログラムの回復処理をするか否かを判定し管理することができるリリースプログラム管理方法を提供する。
【解決手段】本番用サーバ10の記憶装置11にプログラムをリリースする際にひとつ以上のプログラムをリリースグループとして識別するリリースグループ識別情報、プログラム名称、リリース日、および監視期限日を関連付けたリリース管理テーブル101が記憶されており、CPU13(処理部)は、クライアントから入力されたリリースグループ回復処理要求およびリリースグループ識別情報を受理すると、リリースグループ識別情報をもとにリリース管理テーブルを検索し、リリースグループ識別情報に関連付けられた監視期限日を取得し、リリースグループ回復処理要求の日が監視期限日を過ぎていないとき、リリースグループの回復処理をすることを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、システム開発・運用・保守において、本番環境へリリースしたリリースプログラムの管理方法およびリリースプログラム管理システムに関する。
【背景技術】
【0002】
従来技術において、プログラムを本番環境へリリースする仕組みについて、様々な検討がなされてきた。開発者から修正オブジェクトのリリース依頼があると、システム管理装置は、オブジェクトファイルが修正されているか否かを判定し、修正されていると判定した場合には、リリース対象オブジェクトファイルを、本番用オブジェクトファイルへリリースする(例えば、特許文献1参照)。なお、オブジェクトファイルとは、コンパイラがプログラムのソースコードをもとに生成したモジュールのことである。
【0003】
また、一方で、プログラムのバージョンを戻す仕組みについても検討がなされてきた。リリース後にクライアントのプログラムの戻しが必要な事態が発生した場合には、サーバからクライアントへ戻すよう命令を発行し、クライアントではリリース前のバックアップを使用して元に戻すという方法がある(例えば、特許文献2参照)。
【特許文献1】特開平11−296350号公報
【特許文献2】特開2001−350630号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
前記した特許文献2に開示された技術によれば、クライアントは、機能毎に独立したプログラムの場合にはサーバからの指示によって戻すことができる。しかしながら、サーバから配布されるプログラムは、多数の機能が複雑に入り組んだプログラムが多く、サーバからの差し戻しの指示が問題となる。
【0005】
システム管理者が、一旦プログラムをリリースした後でプログラムの戻しをする際に、戻す対象のプログラムを手動で選別したり、プログラムを戻す作業を手動で実行したりしてしまうと、手動のために人為的なミスが発生する可能性があり、更に障害が拡大する恐れがある。
【0006】
プログラムをリリースする仕組みにおいては、整合性をとってリリースしたり安全にリリースしたりするための仕組みは検討されてきたが、万一リリースしたプログラムに不備があった場合に、それを整合性をとって戻す仕組みが十分に検討された例は無かった。
【0007】
本発明は、前記の課題を解決するための発明であって、一旦リリースしたプログラムに不備があった場合に、プログラムの回復処理をするか否かを判定し管理することができるリリースプログラム管理方法およびリリースプログラム管理システムを提供することを目的とする。
【課題を解決するための手段】
【0008】
前記目的を達成するために、記憶部(例えば、記憶装置11)、処理部(例えば、CPU13)を有する管理サーバ(例えば、本番用サーバ10)を備える情報処理システム(リリースプログラム管理システム)において、リリースするプログラムの管理をするリリースプログラム管理方法は、プログラムをリリースする際にひとつ以上のプログラムをリリースグループとして識別するリリースグループ識別情報(例えば、リリースグループID)、プログラム名称、リリース日、および監視期限日を関連付けたリリース管理情報(例えば、リリース管理テーブル101)が記憶部に記憶されており、
処理部は、クライアントから前記リリースグループに障害があった際に、以前のリリースグループに回復する処理要求であるリリースグループ回復処理要求およびリリースグループ識別情報を受理すると、リリースグループ識別情報をもとにリリース管理情報を検索し、リリースグループ識別情報に関連付けられた監視期限日を取得し、リリースグループ回復処理要求の日が監視期限日を過ぎていないとき、リリースグループの回復処理(例えば、プログラム戻しの処理)をし、リリースグループ回復処理要求の日が監視期限日を過ぎているとき、リリースグループの回復処理をしないことを特徴とする。
【発明の効果】
【0009】
本発明によれば、一旦リリースしたプログラムに不備(障害)があった場合に、プログラムの回復処理をするか否かを判定し管理することができる。
【発明を実施するための最良の形態】
【0010】
以下、本発明の実施形態について、図面を参照して説明する。
図1は、本発明の実施形態に係わるプログラムリリース処理およびプログラム戻し処理を示す説明図である。プログラムリリース処理(図6から図8参照)およびプログラム戻し処理(図10から図12参照)の詳細については後述するものとし、図1においては概要のみ説明する。
【0011】
本実施形態によれば、一旦プログラムをリリースした後にプログラム戻しの処理をする際に、関連性のある複数のプログラムをまとめて元の状態に戻すことのできるよう、リリースグループという概念を採用している。リリースグループとは、ある機能に対応するためにリリースされるプログラム群であり、プログラムをリリースする際には、リリースする機能毎に1つのリリースグループID(リリースグループ識別情報)を定義し、その機能のためにバージョンアップされる全てのプログラムはそのリリースグループに属するように設定する。リリース後にその機能に関連するプログラムの戻しをする際には、そのリリースグループに属する全てのプログラムを、予め退避していたリリース前のプログラムに戻すことができる。以下、具体的に説明する。
【0012】
処理部(図2参照、CPU13)は、リリース日になりリリース処理要求を受理すると、プログラムリリース処理を開始する。ステップS701にて、リリース日になりリリース処理要求を受理すると、プログラムの処理要求をリリース管理テーブル101(リリース管理情報)からリリース対象となるプログラム名称、リリースグループID(リリースグループ識別情報)を取得する。プログラムをリリースする際には、リリースする機能毎に1つのリリースグループIDを定義し、その機能のためにバージョンアップされる全てのプログラムは、そのリリースグループに属するように設定されている。
【0013】
ステップS702にて、バックアップとして、現在リリースされているリリース対象のリリースグループに属するプログラムを、本番稼動資源用ライブラリ103から、資源退避用ライブラリ105にコピーしてバックアップを取得する。ステップS703にて、今回リリースするリリース対象のリリースグループに属するプログラムを、リリース前資源用ライブラリ104から、本番稼動資源用ライブラリ103へコピーし、コピーされた本番稼動資源用ライブラリ103のプログラムをリリースする。
【0014】
処理部は、プログラム戻し要求を受理すると、プログラム戻し処理を開始する。ステップS704にて、プログラム戻し処理画面1301(図19参照)から、戻す対象のリリースグループIDを取得する。ステップS705にて、取得したリリースグループIDに属するプログラムを、資源退避用ライブラリ105から本番稼動資源用ライブラリ103に戻し、リリースすることにより、プログラムのバックアップの戻しを行う。
【0015】
具体的には、リリースグループを、B0001、B0002、B0003として説明する。プログラムリリース処理において、今回のリリースされるグループがB0003であると、今回のリリース前においては、リリース前資源用ライブラリ104には、B0003が格納されており、本番稼動資源用ライブラリ103には、B0002が格納されており、資源退避用ライブラリ105には、B0001が格納されている。
【0016】
プログラムリリース処理により、本番稼動資源用ライブラリ103から、資源退避用ライブラリ105にコピーしてバックアップを取得し、B0002が格納される。また、リリース前資源用ライブラリ104から、本番稼動資源用ライブラリ103へコピーし、本番稼動資源用ライブラリ103には、B0003が格納される。そして、B0003がリリースされる。一方、プログラム戻し処理においては、資源退避用ライブラリ105から本番稼動資源用ライブラリ103に戻し、B0002がリリースされる。
【0017】
図2は、本発明の実施形態に係わるリリースプログラム管理システムを示す構成図である。リリースプログラム管理システム(情報処理システム)は、本番用サーバ10(管理サーバ)、SI管理用サーバ20、作業用クライアント30(クライアント)を有し、本番用サーバ10、SI管理用サーバ20、作業用クライアント30は、LAN(Local Area Network)40などのネットワークで相互に接続されている。なお、SIはSystem Integratorの略である。
【0018】
本番用サーバ10は、記憶装置11、メモリ12、CPU13(処理部)、通信部14を有している。記憶装置11は、本番用サーバ10が処理を実行するための各種データを保存する。メモリ12は、本番用サーバ10が処理を実行する各種プログラムおよび一時的なデータを保持する。CPU13は、メモリ12に格納される各種プログラムを実行する。通信部14は、LAN40を介して、他の装置と各種データやコマンドを交換する。
【0019】
メモリ12には、プログラムをリリースする際にリリースする機能毎に1つのリリースグループIDとして設定するリリースグループ設定部111、リリースする際に前処理・後処理などの実行処理を登録するリリース時実行処理登録部112、所定日時になるとプログラムリリースの処理をするプログラムリリース処理部113、障害監視システムからの起動命令により異常終了調査の処理をする異常終了調査処理部114、リリースプログラムの戻し処理をするプログラム戻し処理部115が格納される。
【0020】
記憶装置11には、リリースプログラムの管理テーブルであるリリース管理テーブル101(図13参照)、リリース時の実行処理の定義テーブルであるリリース時実行処理定義テーブル102(図14参照)、本番稼動のリリースプログラムを格納する本番稼動資源用ライブラリ103(図23参照)、次回リリースするリリース前のリリースプログラムを記憶するリリース前資源用ライブラリ104(図24参照)、本番稼動資源用ライブラリのバックアップを記憶する資源退避用ライブラリ105(図25参照)、リリース時の実行処理用プログラムを記憶するリリース時実行処理用ライブラリ106(図26参照)が格納される。
【0021】
SI管理用サーバ20は、記憶装置21、CPU22、メモリ23、通信部24を有している。記憶装置21には、リリースプログラムの管理ライブラリであるSI管理用ライブラリ121(図21参照)、リリース時の実行処理シェル、プログラムなどの管理ライブラリであるリリース時実行処理管理用ライブラリ122(図22参照)が格納されており、CPU22で実行されている処理から必要に応じて読み込まれる。通信部24は、LAN40を介して、他の装置と各種データやコマンドを交換する。
【0022】
作業用クライアント30は、CPU31、メモリ32、通信部36を有し、ディスプレイ33、キーボード34、マウス35を接続している。作業者は、ディスプレイ33に表示される画面を見て、キーボード34およびマウス35を使用して操作を行う。ディスプレイ33には、リリースグループ設定画面1101(図17参照)、リリース時実行処理登録画面1201(図18参照)、プログラム戻し処理画面1301(図19参照)が表示され、状況に応じて、本番用サーバ10で実行されるリリースグループ設定部111、リリース時実行処理登録部112、異常終了調査処理部114、プログラム戻し処理部115と、通信部14,36およびLAN40を介して通信を行う。
【0023】
図13は、リリース管理テーブルの一例を示す説明図である。リリース管理テーブル101は、リリースグループID901、リリースグループ名902、プログラム名称903、リリース日904、監視期限日905、後述する図20で示される状態906を有している。例えば、リリースグループID901がB0001の場合は、マスタの項目を追加対応するリリースグループ名であり、プログラムとしては、PA11.exe、PA12.exe、SA11.cshなどがある。
【0024】
監視期限日905は、本実施形態の特徴とする項目であり、繰り返しリリースされるプログラムの日程管理をするための項目である。一度、リリースされたプログラムを再度リリースする際に、同じプログラム名称があるとき、最も新しい監視期限日を取得し、リリースグループ設定部111が受理したリリース日が最も新しい監視期限日を過ぎているとき、該当するプログラムをリリースグループに設定登録することができる。具体的には、PA11.exeのプログラムを次回リリースする場合には、リリースグループ設定部111は、リリース管理テーブル101を検索し、レコード911およびレコード912を抽出し、レコード912に示される監視期限日が最も新しい日である2008年8月4日(2008/08/04)を取得する。したがって、次回リリース日は、2008年8月5日以降であれば設定登録することができる。例えば、PA11.exeのプログラムの場合、レコード911の監視期限日は2008年7月28日であるので、レコード912において、リリース日は、2008年7月29日として登録されていることがわかる。
【0025】
図14は、リリース時実行処理定義テーブルの一例を示す説明図である。リリース時実行処理定義テーブル102は、リリースグループID1001、実行タイミング1002、実行順1003、プログラム名称1004を有している。例えば、レコード1011に示すB0001_11.cshのプログラムの場合、リリースされる前の前処理のプログラムを意味し、レコード1012のB0001_21.cshのプログラムの場合、リリース後の後処理のプログラムを意味する。
【0026】
次に処理フローについて説明する。
(リリースグループ設定の処理)
図3および図4は、リリースグループ設定の処理を示すフロー図である。図13に示すリリース管理テーブル101および図17に示すリリースグループ設定画面表示例を、適宜参照して説明する。リリースグループ設定の処理は、メモリ12に格納されるリリースグループ設定部111のプログラムをCPU13が実行することで実現される。
【0027】
図17は、リリースグループ設定画面例を示す説明図である。図17(a)に示すリリースグループ設定画面1101は、リリースグループ設定処理の実行時に作業用クライアント30のディスプレイ33に表示する画面表示例である。リリースグループ設定画面1101には、リリースグループID1102、リリースグループ名1103、リリース日1104、監視期限日1105、プログラム名称1106のフィールド、メッセージ表示エリア1107、実行ボタン1108、システム日付1110のフィールドを有している。なお、図17(b)の画面については後述する。
【0028】
図3に戻り、CPU13(処理部)は、ステップS201において、リリースグループ設定画面1101の実行ボタン1108が押下されたのを検知すると、ステップS202において、リリースグループ設定画面1101のリリース日1104、プログラム名称1106のフィールドに入力されたデータを取得し、ステップS203からステップS207までの処理を、取得したプログラム名称の数分繰り返す。
【0029】
ステップS204において、リリース管理テーブル101を、リリースグループ設定画面から取得したプログラム名称1106をキーに検索し、リリース管理テーブル101から、ヒットしたリリース管理テーブル101のレコードの中から最も新しい監視期限日905を取得する。もし該当するレコードがリリース管理テーブル101に存在しない場合には、「0」を取得する。ステップS205では、ステップS204で取得した監視期限日が画面のリリース日1104以降であるか否かを条件判定する。条件を満たす場合には(ステップS205,Yes)、「監視期間中のためリリース登録できません」のメッセージをリリースグループ設定画面1101のメッセージ表示エリア1107に表示し(ステップS206)、処理を終了する。条件を満たさない場合には(ステップS205,No)、処理を続行する。
【0030】
図17(b)には、ステップS206での画面表示例を示している。図17(b)においては、リリースグループIDがB0003を、システム日付1110が2008年8月1日に、その日のうちにリリースグループ設定を試みた場合である。この場合、ステップS204において、プログラム名称1106中のPA11.exeをキーとしてリリース管理テーブル101(図13参照)のレコードの中から最も新しい監視期限日905を取得すると、2008年8月4日である。ステップS205において、リリース日1104の2008年8月1日は、取得した監視期限日(2008年8月4日)以前のために、ステップS206において、メッセージ表示エリア1107に「監視期間中のためリリース登録できません(PA11.exe)」が表示されている。なお、メッセージ表示エリア1107には、どのプログラムが監視期間中であるかも表示されており、作業者は容易に、どのプログラムが適切でないかを知ることができる。
【0031】
ここで、ステップS205のチェックを実施している理由を具体的に、図27を参照して説明する。監視期限日は、リリースされるプログラムの管理と、リリースプログラムを戻すか否かの判断とに利用される。
【0032】
図27は、比較例を示す説明図である。比較例では、以下のような現象が想定される。なお、以下のプログラム名称などは例示として示す。また、リリースされるリリースグループは、A0001およびA0002があるとして説明する。A0001およびA0002は、複数のプログラムのまとめたリリースグループであり、同じプログラム「PA01.exe」を含んでいる。リリースグループのA0001は、リリース日が2008年9月1日(2008/09/01)であり、リリースグループのA0002は、リリース日が2008年9月8日(2008/09/08)とする。
【0033】
仮に、2008年9月12日(2008/09/12)に、リリースグループのA0001に含まれる他のプログラム「PA02.exe」に不具合があることが判明し、それを元のバージョンに戻してシステムを動かしたいとする。元のバージョンの「PA02.exe」が動くためには、リリースグループのA0001のリリース時にリリースした他のプログラムも元のバージョンに戻しておかないとプログラム間の整合性が取れなくなるおそれがあるため、リリースグループのA0001に含まれる全プログラムの戻しを行う必要がある。
【0034】
しかし、リリースグループのA0001に含まれる全プログラムをA0001のリリース前のプログラムに戻してしまうと、リリースグループのA0002で修正した内容が反映されていない2008年9月1日より前のバージョンの「PA01.exe」が戻されてしまうことになり、そのバージョンのプログラム「PA01.exe」はシステム日付が2008年9月12日の時点の環境では正常に動作しない可能性がある。
【0035】
具体的には、リリースグループのA0001のリリース時に、ある業務マスタ1、業務マスタ2の両者にAという項目を追加し、リリースグループのA0002のリリース時に、ある業務マスタ2、業務マスタ3の両者にBという項目を追加した場合である。例えば、リリースグループのA0002のリリース後は、業務マスタ2には項目A,B両方がある状態だが、2008年9月1日より前の「PA01.exe」は、項目A,Bのどちらもない時点のプログラムであるため、リリースグループのA0001のプログラム戻し時に業務マスタ1、業務マスタ2からAという項目を削除したとしても、業務マスタ2にはBという項目が残ったままのため、マスタの読み込みなどで不具合の発生する可能性がある。
【0036】
このとき、リリースグループのA0001の全プログラムを戻すだけでなく(対策1参照)、更にリリースグループのA0002の全プログラムも戻す(対策2参照)、という方法も考えられる。しかし、リリースグループのA0002に含まれる他のプログラムが、更に、リリースグループのA0001のリリース日以降にリリースされた他のリリースグループに入っている可能性もあり、その場合はそのリリースグループの全プログラムも元に戻さないとプログラム間の整合性が取れなくなる可能性が出てくる。このように、リリースグループのプログラムを戻すには他のリリースグループの戻しも必要になることがある。これらの影響調査をシステム的に実装すると複雑になる。
【0037】
本実施形態によれば、ステップS205の制限を課し、しかも、後述するプログラム戻しの処理をするときには、ステップS607(図10参照)の制限を課すことにより、リリースプログラムの管理を容易にすることができる。
【0038】
図4において、ステップS221からステップS223は、リリースグループ設定画面1101のプログラム名称1106の数分繰り返す。ステップS222では、リリース管理テーブル101にレコードを追加する。追加するレコードには、リリースグループ設定画面1101の同名の項目をそれぞれセットする。即ち、リリースグループID901の項目にはリリースグループID1102のフィールドの入力値を、リリースグループ名902の項目にはリリースグループ名1103のフィールドの入力値、プログラム名称903にはプログラム名称1106のフィールドの入力値、リリース日904にはリリース日1104のフィールドの入力値、監視期限日905には監視期限日1105のフィールドの入力値をそれぞれセットする。また、状態906の項目は「0」をセットする。この時点でのリリース管理テーブル101は、図15に示すテーブル801の状態になっている。
【0039】
ステップS224からステップS228については、リリースグループ設定画面1101のプログラム名称1106の数分繰り返す。ステップS225では、SI管理用サーバ20のSI管理用ライブラリ121のパス名(図21に示す、/SI_KANRI/bin/ の例示参照)を取得し、リリースグループ設定画面1101のプログラム名称1106と名称が一致するファイルをFTPでダウンロードする。
【0040】
ステップS226では、本番用サーバ10のリリース前資源用ライブラリ104のパス名(図24に示す、/release/の例示参照)を取得し、ステップS225でダウンロードしたファイルを、本番用サーバ10のリリース前資源用ライブラリ104へコピーする。ステップS227では、リリースグループ設定画面1101のリリースグループID1102、プログラム名称1106をキーにリリース管理テーブル101を検索し、ヒットしたレコードの状態906の項目を「1」に更新する。この時点でのリリース管理テーブル101は、図15に示すテーブル802の状態になっている。そして、一連のリリースグループ設定の処理を終了する。
【0041】
(リリース時実行処理登録の処理)
図5は、リリース時実行処理登録の処理を示すフロー図である。図13に示すリリース管理テーブル101、図14に示すリリース時実行処理定義テーブル102および図18に示すリリース時実行処理登録画面表示例を、適宜参照して説明する。リリース時実行処理登録の処理は、メモリ12に格納されるリリース時実行処理登録部112のプログラムをCPU13が実行することで実現される。
【0042】
図18は、リリース時実行処理登録画面表示例を示す説明図である。リリース時実行処理登録画面1201は、リリース時実行処理登録の実行時に作業用クライアント30のディスプレイ33に表示する画面表示例である。リリース時実行処理登録画面1201には、リリースグループID1202、リリースグループ名1203、リリース日1204、監視期限日1205、実行タイミング1206、実行順1207、プログラム名称1208のフィールド、実行ボタン1209、システム日付1210のフィールドを有している。
【0043】
図5に戻り、CPU13は、ステップS301では、リリース時実行処理登録画面1201のリリースグループID1202が更新されたのを検知し、ステップS302では、リリース時実行処理登録画面1201のリリースグループID1202をキーにリリース管理テーブル101からリリースグループ名902、リリース日904、監視期限日905の項目を取得し、それぞれリリース時実行処理登録画面1201の図18におけるリリースグループ名1203のフィールド、リリース日1204のフィールド、監視期限日1205のフィールドに表示する。
【0044】
ステップS303では、リリース時実行処理登録画面1201の実行ボタン1209が押下されたのを検知し、ステップS304では、リリース時実行処理登録画面1201からプログラム名称1208を取得し、ステップS305からステップS309をプログラム名称の数分繰り返す。
【0045】
ステップS306では、リリース時実行処理定義テーブル102にレコードを追加する。追加するレコードの各項目の値は、リリース時実行処理登録画面1201の同名の項目をそれぞれセットする。即ち、リリースグループID1001にはリリースグループID1202のフィールドの入力値を、実行タイミング1002には実行タイミング1206のフィールドの入力値を、実行順1003には実行順1207のフィールドの入力値を、プログラム名称1004にはプログラム名称1208のフィールドの入力値をセットする。
【0046】
ステップS307では、SI管理用サーバ20のリリース時実行処理管理用ライブラリ122のパス名(図22に示す、/SI_KANRI/release_exec/の例示参照)を取得し、リリース時実行処理登録画面1201のプログラム名称1208と名称が一致するファイルをFTPでダウンロードする。
【0047】
ステップS308では、本番用サーバ10のリリース時実行処理用ライブラリ106のパス名(図26に示す、/release_exec/の例示参照)を取得し、ステップS307でダウンロードしたファイルを、本番用サーバ10のリリース時実行処理用ライブラリ106へコピーする。そして、一連のリリース時実行処理登録の処理を終了する。
【0048】
(プログラムリリースの処理)
図6から図8は、プログラムリリースの処理を示すフロー図である。図13に示すリリース管理テーブル101を、適宜参照して説明する。プログラムリリースの処理は、メモリ12に格納されるリリースグループ設定部111のプログラムをCPU13が実行することで実現される。
【0049】
図6に示すように、CPU13は、ステップS401にて、リリース管理テーブル101から、リリース日904=システム日付、かつ、状態906=「1」の条件を満たすレコードを検索し、全項目を取得する。ステップS402からステップS405は、取得したレコードの数分繰り返す。
【0050】
ステップS403では、取得したレコードについて、リリース管理テーブル101のプログラム名称903と名称が一致するファイルを、本番稼動資源用ライブラリ103から資源退避用ライブラリ105へコピーする。ステップS404では、リリースグループID901とプログラム名称903をキーにリリース管理テーブル101を検索し、ヒットしたレコードの状態906の項目を「2」に更新する。この時点でのリリース管理テーブル101は、図15に示すテーブル803の状態になっている。
【0051】
図7に示すように、CPU13は、ステップS421では、リリース管理テーブル101から、状態906=「2」の条件を満たすレコードのリリースグループID901を取得する。ステップS422からステップS424は、取得されたリリースグループIDの数分繰り返す。ステップS423では、リリース管理テーブル101に、取得されたリリースグループID=リリース管理テーブルのリリースグループID901、かつ、状態906が2以外のレコードが存在するか否かを判定する。存在した場合は(ステップS423,Yes)、ディスプレイ33にプログラムリリースのError表示をし(ステップS450)、処理を終了する。存在しなかった場合は(ステップS423,No)、処理を続行する。
【0052】
ここで、ステップS423での判定条件について具体的に説明する。リリース対象となるプログラムは、リリース管理テーブル101の状態906の項目が「2」となっているレコードのプログラム名称をもつプログラムであり、リリース処理はリリースグループ毎に実行される。もし、同じリリースグループIDを持つレコードに、状態が「1」のレコードが存在している場合には、何らかの異常な事態が発生している可能性があり、処理を直ちに停止する。
【0053】
前記のような事態が発生するケースとして、以下の場合がある。プログラムリリース処理は重複して実行されることがないことを想定しているが、仮に重複して実行されたとして、一方でステップS403のプログラム退避を行っている最中に、他方でステップS423の条件判定が行われた場合である。
【0054】
もし、ステップS423の条件判定をせずに以降の処理が流れ、図6に示すステップS442が実行されると、ステップS403のプログラム退避が完了していないリリースグループに対して、ステップS442でプログラムリリースをしてしまう可能性がある。このような事態を防止するため、ステップS423の条件判定を行っている。
【0055】
ステップS425からステップS449は、ステップS421で取得されたリリースグループIDの数分繰り返す。
【0056】
ステップS426は、リリース時実行処理定義テーブル102から、ステップS421で取得したリリースグループID=リリース時実行処理定義テーブル102のリリースグループID1001、かつ、実行タイミング1002=「1」の条件を満たすレコードを、実行順1003で昇順にソートして検索し、全項目を取得する。
【0057】
ステップS427からステップS429は、ステップS426で取得したレコードの数分繰り返す。ステップS428は、取得したリリース時実行処理定義テーブル102のプログラム名称1004と名称が一致するリリース時実行処理用ライブラリ106のプログラムを、メモリ12に読み込んで実行する。
【0058】
ステップS430では、ステップS425で取得したリリースグループIDをキーにリリース管理テーブル101を検索し、プログラム名称903を取得する。
【0059】
図8に示すように、ステップS441からステップS444は、ステップS430で取得したプログラム名称の数分繰り返す。ステップS442は、本番用サーバ10のリリース前資源用ライブラリ104のパス名(図24に示す、/release/の例示参照)および本番稼動資源用ライブラリ103のパス名(図23に示す/uap01/bin/の例示参照)を取得し、プログラム名称903と名称が一致するファイルを、リリース前資源用ライブラリ104から本番稼動資源用ライブラリ103にコピーする。ステップS443では、リリースグループID901とプログラム名称903をキーにリリース管理テーブル101を検索し、ヒットしたレコードの状態906の項目を「3」に更新する。この時点でのリリース管理テーブル101は、図15に示すテーブル804の状態になっている。
【0060】
ステップS445は、リリース時実行処理定義テーブル102から、ステップS421で取得されたリリースグループID=リリースグループID1001、かつ、実行タイミング1002=「2」の条件を満たすレコードを、実行順1003で昇順にソートして検索し、全項目を取得する。
【0061】
ステップS446からステップS448は、ステップS445で取得したレコードの数分繰り返す。ステップS447は、取得したリリース時実行処理定義テーブル102のプログラム名称1004と名称が一致するリリース時実行処理用ライブラリ106のプログラムを、メモリ12に読み込んで実行する。そして、一連のプログラムリリースの処理を終了する。
【0062】
(異常終了調査の処理)
図9は、異常終了調査の処理を示すフロー図である。図13に示すリリース管理テーブル101を、適宜参照して説明する。異常終了調査の処理は、メモリ12に格納される異常終了調査処理部114のプログラムをCPU13が実行することで実現される。CPU13は、ステップS501にて、一般的な障害監視システム550からの起動命令を検知すると、ステップS502では、異常終了時の各種ログを取得し、異常終了したプログラム名称を検出する。ステップS503では、リリース管理テーブル101から、異常終了したプログラム名称をキーに、状態906=「3」の条件を満たすレコードを検索し、最も新しい監視期限日905を取得する。もし、条件を満たすレコードが存在しなければ「0」を取得する。ステップS504では、システム日付≦取得した監視期限日905か否かをチェックする。条件を満たさない場合は(ステップS504,No)、処理を終了する。条件を満たす場合(ステップS504,Yes)、ステップS505にて、「プログラム戻しを実行するか判定して下さい」のメッセージを作業用クライアント30のディスプレイ33に表示し、処理を終了する。
【0063】
(プログラム戻しの処理)
図10から図12は、プログラム戻しの処理を示すフロー図である。図13に示すリリース管理テーブル101および図19に示すプログラム戻し処理画面表示例を、適宜参照して説明する。プログラム戻しの処理は、メモリ12に格納されるプログラム戻し処理部115のプログラムをCPU13が実行する。
【0064】
図19は、プログラム戻し処理画面例を示す説明図である。プログラム戻し処理画面1301は、プログラム戻し処理の実行時に作業用クライアント30のディスプレイ33に表示する画面表示例である。プログラム戻し処理画面1301には、リリースグループID1302、リリースグループ名1303、リリース日1304、監視期限日1305、プログラム名称1306のフィールド、メッセージ表示エリア1307、実行ボタン1308、システム日付1310のフィールドを有している。
【0065】
図10において、CPU13は、ステップS601では、プログラム戻し処理画面1301のリリースグループID1302の更新を検知し、ステップS602では、プログラム戻し処理画面1301のリリースグループID1302をキーにリリース管理テーブル101からリリースグループ名902、リリース日904、監視期限日905、プログラム名称903の項目を取得し、それぞれプログラム戻し処理画面1301の図19におけるリリースグループ名1303のフィールド、リリース日1304のフィールド、監視期限日1305、プログラム名称1306のフィールドに表示する。
【0066】
ステップS603では、プログラム戻し処理画面1301の実行ボタン1308が押下されたのを検知し、ステップS604では、プログラム戻し処理画面1301からリリースグループID1302を取得する。ステップS605では、リリース管理テーブル101から、プログラム戻し処理画面1301のリリースグループID1302をキーに検索し、全項目を取得する。
【0067】
ステップS606からステップS610は、ステップS605で取得したレコードの数分繰り返す。ステップS607は、リリース管理テーブル101から取得したレコードの監視期限日905<システム日付を満たすか否かをチェックする。条件を満たさない場合(ステップS607,No)、すなわち、システム日付が監視期限日以内の場合、ステップS609以降の処理を続行する。条件を満たす場合(ステップS607,Yes)、すなわち、システム日付が監視期限日を過ぎている場合には、ステップS608にて、「監視期間外のためプログラム戻しはできません」のメッセージをプログラム戻し処理画面1301のメッセージ表示エリア1307に表示し、処理を終了する。
【0068】
なお、図19に示す例では、リリースグループIDはB0001であり、図13に示すリリース管理テーブル101の監視期限日は2008年7月28日であるが、システム日付は2008年8月5日であり、すでに監視期限日をすぎている。このため、メッセージ表示エリア1307には、「監視期間外のためプログラム戻しはできません」が表示されている。
【0069】
本実施形態によれば、リリースグループ回復処理要求の日が監視期限日を過ぎていないとき、リリースグループの回復処理をし、リリースグループ回復処理要求の日が前記監視期限日を過ぎているとき、リリースグループの回復処理をしない処理をしている。リリースグループ回復処理要求の日は、一般的にはシステム日付を用いるのがよい。なお、管理者が、強制的にプログラム戻しの処理をする必要がある場合には、システム日付に、過去の日付を入力することにより、プログラム戻しの処理も行うことができる。
【0070】
図10に戻り、ステップS609では、リリースグループID901とリリースグループ名902をキーにリリース管理テーブル901を検索し、ヒットしたレコードの状態906を「8」に更新する。この時点でのリリース管理テーブル101は、図16に示すテーブル805の状態になっている。
【0071】
図11に示すように、ステップS621では、リリース時実行処理定義テーブル102から、プログラム戻し処理画面1301のリリースグループID1302=リリースグループID1001、かつ、実行タイミング1002=「3」の条件を満たすレコードを、実行順1003で昇順にソートして検索し、全項目を取得する。
【0072】
ステップS622からステップS624は、ステップS621で取得したレコードの数分繰り返す。ステップS623は、取得したリリース時実行処理定義テーブル102のプログラム名称1004と名称が一致するリリース時実行処理用ライブラリ106のプログラムを、メモリ12に読み込んで実行する。
【0073】
ステップS625では、リリース管理テーブル101から、プログラム戻し処理画面1301のリリースグループID1302をキーにレコードを検索し、全項目を取得する。ステップS626からステップS629は、取得したレコードの数分繰り返す。
【0074】
ステップS627では、本番用サーバ10の資源退避用ライブラリ105のパス名(図25に示す、/backup/の例示参照)および本番稼動資源用ライブラリ103のパス名(図23に示す、/uap01/bin/の例示参照)を取得し、ステップS625で取得したリリース管理テーブル101のレコードのプログラム名称903と名称が一致するファイルを、資源退避用ライブラリ105から本番稼動資源用ライブラリ103へコピーする。ステップS628では、リリースグループID901とプログラム名称903をキーにリリース管理テーブル101を検索し、ヒットしたレコードの状態906の項目を「9」に更新する。この時点でのリリース管理テーブル101は、図16に示すテーブル806の状態になっている。
【0075】
図12に示すように、ステップS641では、リリース時実行処理定義テーブル102から、プログラム戻し処理画面1301のリリースグループID1302=リリースグループID1001、かつ、実行タイミング1002=「4」の条件を満たすレコードを、実行順1003で昇順にソートして検索し、全項目を取得する。ステップS642からステップS644は、ステップS641で取得したレコードの数分繰り返す。ステップS643は、リリース時実行処理定義テーブル102の取得したレコードのプログラム名称1004と名称が一致するリリース時実行処理用ライブラリ106のプログラムを、メモリ12に読み込んで実行する。そして、一連のプログラム戻しの処理を終了する。
【0076】
図20は、リリース管理テーブルの状態の内容を示す説明図である。図20には、リリース管理テーブル101の状態906の内容が、各処理(リリースグループ設定の処理、リリース時実行処理登録の処理、プログラムリリースの処理、プログラム戻しの処理)において設定値を示す図である。図20の列1401は状態906の設定値を示し、列1402はどの処理からどの処理までの間にその設定値が設定されるかを示している。
【0077】
設定値「0」は、リリースグループ設定のステップS222から同処理のステップS227まで、設定値「1」は、リリースグループ設定のステップS227からプログラムリリース処理のステップS404まで、設定値「2」は、プログラムリリース処理のステップS404から同処理のステップS443まで、設定値「3」は、プログラムリリース処理のステップS443からプログラム戻し処理のステップS609までとなる。ただし、プログラム戻しを行わない場合は、設定値「3」のままである。設定値「8」はプログラム戻し処理のステップS609から同処理のステップS628まで、設定値「9」は、プログラム戻し処理のステップS628以降となる。
【0078】
本実施形態によれば、従来の問題、すなわち、手動でプログラムの戻しを行った場合には、戻し手順の誤りなどの人為的なミスが発生して更に障害が深刻化する問題もある。また、人手で作業するには確認をとりながらの作業となるため時間もかかる問題がある。これらの問題を軽減することができる。また、リリースグループの登録処理、リリースグループの戻しなどの処理をシステム化するため、障害が発生した際の回復までの精度と時間の両面で効果がある。
【図面の簡単な説明】
【0079】
【図1】本発明の実施形態に係わるプログラムリリース処理およびプログラム戻し処理を示す説明図である。
【図2】本発明の実施形態に係わるリリースプログラム管理システムを示す構成図である。
【図3】リリースグループ設定の処理を示すフロー図である。
【図4】リリースグループ設定の処理を示すフロー図である。
【図5】リリース時実行処理登録の処理を示すフロー図である。
【図6】プログラムリリースの処理を示すフロー図である。
【図7】プログラムリリースの処理を示すフロー図である。
【図8】プログラムリリースの処理を示すフロー図である。
【図9】異常終了調査の処理を示すフロー図である。
【図10】プログラム戻しの処理を示すフロー図である。
【図11】プログラム戻しの処理を示すフロー図である。
【図12】プログラム戻しの処理を示すフロー図である。
【図13】リリース管理テーブルの一例を示す説明図である。
【図14】リリース時実行処理定義テーブルの一例を示す説明図である。
【図15】リリース管理テーブルのデータ例を示した説明図である。
【図16】リリース管理テーブルのデータ例を示した説明図である。
【図17】リリースグループ設定画面例を示す説明図である。
【図18】リリース時実行処理登録画面表示例を示す説明図である。
【図19】プログラム戻し処理画面例を示す説明図である。
【図20】リリース管理テーブルの状態の内容を示す説明図である。
【図21】SI管理用ライブラリの構成例を示す説明図である。
【図22】リリース時実行処理管理ライブラリの構成例を示す説明図である。
【図23】本番稼動資源用ライブラリの構成例を示す説明図である。
【図24】リリース前資源用ライブラリの構成例を示す説明図である。
【図25】資源退避用ライブラリの構成例を示す説明図である。
【図26】リリース時実行処理用ライブラリの構成例を示す説明図である。
【図27】比較例を示す説明図である。
【符号の説明】
【0080】
10 本番用サーバ(管理サーバ)
11 記憶装置(記憶部)
12,23,32 メモリ
13 CPU(処理部)
14,24,36 通信部
20 SI管理用サーバ
21 記憶装置
22,31 CPU
30 作業用クライアント(クライアント)
33 ディスプレイ
40 LAN
101 リリース管理テーブル(リリース管理情報)
102 リリース時実行処理定義テーブル
103 本番稼動資源用ライブラリ
104 リリース前資源用ライブラリ
105 資源退避用ライブラリ
106 リリース時実行処理用ライブラリ
111 リリースグループ設定部
112 リリース時実行処理登録部
113 プログラムリリース処理部
114 異常終了調査処理部
115 プログラム戻し処理部
121 SI管理用ライブラリ
122 リリース時実行処理管理用ライブラリ
1101 リリースグループ設定画面
1201 リリース時実行処理登録画面
1301 プログラム戻し処理画面

【特許請求の範囲】
【請求項1】
記憶部、処理部を有する管理サーバを備える情報処理システムにおいて、リリースするプログラムの管理をするリリースプログラム管理方法であって、
前記管理サーバは、
プログラムをリリースする際にひとつ以上のプログラムをリリースグループとして識別するリリースグループ識別情報、プログラム名称、リリース日、および監視期限日を関連付けたリリース管理情報が前記記憶部に記憶されており、
前記処理部は、
クライアントから前記リリースグループに障害があった際に、以前のリリースグループに回復する処理要求であるリリースグループ回復処理要求およびリリースグループ識別情報を受理すると、
前記リリースグループ識別情報をもとに前記リリース管理情報を検索し、
前記リリースグループ識別情報に関連付けられた監視期限日を取得し、
前記リリースグループ回復処理要求の日が前記監視期限日を過ぎていないとき、
リリースグループの回復処理をし、
前記リリースグループ回復処理要求の日が前記監視期限日を過ぎているとき、
リリースグループの回復処理をしない
ことを特徴とするリリースプログラム管理方法。
【請求項2】
前記処理部が、リリースグループ設定処理要求を受理すると、
前記クライアントから入力されたプログラム名称を、前記リリース管理情報から検索し、
同じプログラム名称があるとき、最も新しい監視期限日を取得し、
前記入力部から入力された今回設定するリリース日が前記最も新しい監視期限日を
過ぎているとき、該当するプログラムをリリースグループに設定登録する
ことを特徴とする請求項1に記載のリリースプログラム管理方法。
【請求項3】
前記リリースグループの回復処理は、
リリース後にプログラムをリリース前の状態に戻す必要が発生したとき、
前記処理部が、リリース時に退避しておいたプログラムのバックアップを
リリースグループ識別情報の単位で戻すこと
を特徴とする請求項1に記載のリリースプログラム管理方法。
【請求項4】
記憶部、処理部を有する管理サーバを備え、リリースするプログラムの管理をするリリースプログラム管理システムであって、
前記管理サーバは、
プログラムをリリースする際にひとつ以上のプログラムをリリースグループとして識別するリリースグループ識別情報、プログラム名称、リリース日、および監視期限日を関連付けたリリース管理情報が前記記憶部に記憶されており、
前記処理部は、
クライアントから前記リリースグループに障害があった際に、以前のリリースグループに回復する処理要求であるリリースグループ回復処理要求およびリリースグループ識別情報を受理すると、
前記リリースグループ識別情報をもとに前記リリース管理情報を検索し、
前記リリースグループ識別情報に関連付けられた監視期限日を取得し、
前記リリースグループ回復処理要求の日が前記監視期限日を過ぎていないとき、
リリースグループの回復処理をし、
前記リリースグループ回復処理要求の日が前記監視期限日を過ぎているとき、
リリースグループの回復処理をしない
ことを特徴とするリリースプログラム管理システム。
【請求項5】
前記処理部が、リリースグループ設定処理要求を受理すると、
前記クライアントから入力されたプログラム名称を、前記リリース管理情報から検索し、
同じプログラム名称があるとき、最も新しい監視期限日を取得し、
前記入力部から入力された今回設定するリリース日が前記最も新しい監視期限日を
過ぎているとき、該当するプログラムをリリースグループに設定登録する
ことを特徴とする請求項4に記載のリリースプログラム管理システム。
【請求項6】
前記リリースグループの回復処理は、
リリース後にプログラムをリリース前の状態に戻す必要が発生したとき、
前記処理部が、リリース時に退避しておいたプログラムのバックアップを
リリースグループ識別情報の単位で戻すこと
を特徴とする請求項4に記載のリリースプログラム管理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate


【公開番号】特開2010−134813(P2010−134813A)
【公開日】平成22年6月17日(2010.6.17)
【国際特許分類】
【出願番号】特願2008−311782(P2008−311782)
【出願日】平成20年12月8日(2008.12.8)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】