(57)【要約】【課題】複数の環境、複数のサーバー、複数のアプリケーションなど、様々なバリエーションが存在する状況下においては、インストーラのメンテナンスが複雑になる。【解決手段】デプロイ開始の入力手段と、実行対象のホスト名を取得する手段と、ホスト名から環境種別およびサーバー種別を特定する手段と、サーバー種別からデプロイ対象アプリケーションを特定する手段と、デプロイ対象アプリケーションのデプロイ・フラグからデプロイ実施アプリケーションを特定する手段と、デプロイ実施アプリケーションを宛先フォルダーに配置する手段と、特定された環境種別に応じたアプリケーション設定ファイルを宛先フォルダーに配置する手段を備えたデプロイメント方法およびプログラム。【選択図】図４
2014164545.tif 000002
【特許請求の範囲】
【請求項１】
デプロイ開始の入力手段（Ｓ１１０１）と、実行対象のホスト名を取得する手段（Ｓ１１０２）と、前記ホスト名から環境種別およびサーバー種別を特定する手段（Ｓ１１０５、９０１）と、前記サーバー種別からデプロイ対象アプリケーションを特定する手段（Ｓ１１０６、９２１）と、前記デプロイ対象アプリケーションのデプロイ・フラグからデプロイ実施アプリケーションを特定する手段（Ｓ１１０９、Ｓ１１１０、９３３）と、前記デプロイ実施アプリケーションを宛先フォルダーに配置する手段（Ｓ１１１２）と、前記特定された環境種別に応じたアプリケーション設定ファイルを宛先フォルダーに配置する手段（Ｓ１１１３）を備えたデプロイメント方法およびプログラム。
【請求項２】
デプロイ実施アプリケーションの配置情報を取得する手段（Ｓ１１１１、１００１）を有することを特徴とする請求項１に記載のデプロイメント方法およびプログラム。
【請求項３】
配置済みアプリケーション（８３４）情報とオリジナルアプリケーション（６１２）情報の比較処理（Ｓ１１１４）を実施することを特徴とする請求項１に記載のデプロイメント方法およびプログラム。
【請求項４】
請求項１のデプロイ対象アプリケーションのデプロイ・フラグは、ビルド実行時に、変更有アプリケーションに対してデプロイ・フラグを「１」にセットする手段（Ｓ１２０３）および変更無アプリケーションに対してデプロイ・フラグを「０」にセットする手段（Ｓ１２０４）により提供されることを特徴とする請求項１に記載のデプロイメント方法およびプログラム。
【請求項５】
請求項１のアプリケーション設定ファイルは、環境種別ごとの環境依存変数テーブル（７０１）を参照して、環境種別ごとのアプリケーション設定ファイルを自動生成する手段により提供されることを特徴とする請求項１に記載のデプロイメント方法およびプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバーにアプリケーションをデプロイする方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、クラウドコンピューティングあるいはクラウドというキーワードがIT業界を中心に爆発的に広がっている。従来のコンピューターハードウェアとソフトウェアを購入・利用するモデルから、インターネット上のサービスを購入・利用するモデルへのシフトが加速している。クラウドには、大きく３種類の分類があると言われている。
【０００３】
１つ目は、SaaS(Software as a Service)であり、サービス提供者がインターネット経由でソフトウェアを提供し、サービス利用者は主にブラウザーを使用して目的のソフトウェアを利用するモデルである。SaaSは、より以前には、ASP(Application Service Provider)と呼ばれていた形態とほぼ同一である。サービス提供者は、インターネット上にソフトウェアを提供するためのWebサイトを構築すればよく、ソフトウェアを配布する必要がない。サービス利用者の側では、専用のソフトウェアを自分のコンピューターにインストールする必要がなく、一般的にはブラウザーおよびそのプラグインのみで目的のソフトウェアを利用可能である。このSaaSの特徴により、いわゆるパーソナルコンピュータからの利用のみならず、携帯電話、小型ラップトップコンピュータやタブレットなどのモバイル端末からも利用可能である。
【０００４】
２つ目は、PaaS(Platform as a Service)であり、インターネット経由のアプリケーション実行用プラットフォームのことである。マイクロソフト社のWindows（登録商標） Azure Platformがその一例であり、アプリケーション実行環境であるWindows Azureや、データベース実行環境であるSQL Azure（登録商標）などを提供している。
【０００５】
３つ目は、IaaS(Infrastructure as a Service)であり、インターネット経由の仮想マシンやストレージの貸出サービスである。アマゾン社のAmazon EC2（登録商標）による仮想マシンの貸出、Amazon S3（登録商標）によるストレージの貸出などが、その一例である。
【０００６】
サービス提供者が新たにインターネット上でビジネスを立ち上げたい場合、PaaSやIaaSを利用することにより、自前でコンピューター環境を用意する必要がないため、初期の設備投資が少なくて済む。PaaSやIaaSは、コンピューターリソースの使用量に応じて課金するモデルが主流で、サービス提供者はビジネスの規模に応じてPaaSやIaaS上のコンピューターリソースを増やすことができる。
【０００７】
これらのクラウドコンピューティングの進展にともない、アプリケーションを開発して、インターネット上のサービスとして公開することが、容易かつ以前よりも廉価に実現が可能になってきている。また、前述のIaaSの仮想マシンの貸出サービスなどにより、アプリケーションを開発したり、テストしたりする環境も、必要なときに必要な期間だけ構築することができ、開発・テストの効率化にも役立てることができる。あるサービスを開発し、公開する、といった場合、開発を行うための開発環境、テストを行うためのテスト環境、一般に公開するための本番環境など、複数の環境を持つ必要がでてくる。また、開発用途でも、既存バージョンを保守するための環境、新規バージョンを開発するための環境、テスト用途でも、性能テスト用、機能テスト用など、様々な用途に合わせた環境を複数持つ必要がでてくることがある。
【０００８】
あるサービスを提供するために、開発したアプリケーションを、仮想マシンまたは物理マシンであるサーバーに配置・設定をする作業が必要である。（以降、アプリケーションをサーバーに配置・設定する作業をデプロイと呼ぶ。）サーバーの数や、アプリケーションの数が少ない場合、作業者がアプリケーションファイルのサーバーへの配置や、設定値の変更などを手作業で行ってもそれほど問題はない。しかし、アプリケーションの数が増えたり、配置先のサーバー数などが増えてくると、配置作業を効率的に行うために、一般的にはインストーラを作成する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開2004-302929号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
特許文献１では、複数のアプリケーションを効率よくインストールするために、インストール自動化方法が提案されている。この従来技術によれば、ある特定のサーバーにおけるインストール作業が効率化可能である。
【００１１】
また、一般にサイレントインストールなどとして知られる自動インストール方法が存在する。インストーラは、インストール実行時に、作業者にユーザーインターフェースを表示し、必要なデータを入力させることができる。前記のサイレントインストールは、ユーザーインターフェースからデータを入力させる代わりに、入力の代替となるデータを応答ファイルにあらかじめ記述しておくことにより、インストールを自動化する方法である。
【００１２】
しかしながら、前述したように、複数の環境、複数のサーバー、複数のアプリケーションなど、様々なバリエーションが存在する状況下においては、これらのインストール自動化方法を適用しようとすると以下の課題がある。同じアプリケーションでも、複数の環境に別々に配置する場合、その環境に応じたアプリケーション設定を施す必要がある。そのため、自動インストールを実施しようとすると、バリエーションの数だけ応答ファイルを作成・準備する必要があり、これらのメンテナンスが手間になる。また、各サーバーとそのサーバーに対応した応答ファイルを適切に指定して使用する必要があり、これを間違えてしまうと、意図しないアプリケーションがサーバーに配置されてしまうという失敗が発生しうる。
【課題を解決するための手段】
【００１３】
上記の課題を解決するため、本発明のシステムは以下のような構成を有する。
【００１４】
デプロイ開始の入力手段（Ｓ１１０１）と、実行対象のホスト名を取得する手段（Ｓ１１０２）と、前記ホスト名から環境種別およびサーバー種別を特定する手段（Ｓ１１０５、９０１）と、前記サーバー種別からデプロイ対象アプリケーションを特定する手段（Ｓ１１０６、９２１）と、前記デプロイ対象アプリケーションのデプロイ・フラグからデプロイ実施アプリケーションを特定する手段（Ｓ１１０９、Ｓ１１１０、９３３）と、前記デプロイ実施アプリケーションを宛先フォルダーに配置する手段（Ｓ１１１２）と、前記特定された環境種別に応じたアプリケーション設定ファイルを宛先フォルダーに配置する手段（Ｓ１１１３）を備えたデプロイメント方法およびプログラム。
【発明の効果】
【００１５】
請求項１に記載のデプロイメント方法およびプログラムによれば、デプロイ作業時の人的なミスを削減することが可能、また、環境種別ごとの環境依存変数が一元的に管理可能で、メンテナンスが容易となる。
【図面の簡単な説明】
【００１６】
【図１】サブシステム構成図
【図２】複数環境サブシステム構成図
【図３】アプリケーションファイル構成説明図
【図４】ネットワーク構成図
【図５】コンピューター論理構成説明図
【図６】ビルドサーバー内部構成図
【図７】テーブルその１
【図８】サーバー内部構成図
【図９】テーブルその２、テーブルその３
【図１０】テーブルその４
【図１１】フローチャートその１
【図１２】フローチャートその２
【発明を実施するための形態】
【００１７】
図１〜図３を用いて、本発明が解決しようとする特有の課題をより詳細に説明する。
【００１８】
図１は、あるサブシステムにおけるサーバー群へのアプリケーション配置を示している。１０１はサブシステム全体である。１１１〜１１５はサーバーである。１２１〜１２３、１３１〜１３３および１４１は、各アプリケーションである。例えば、１１１および１１２は、Webサーバーの役割を担当しており、アプリケーション01, 02, 03が配置されている。同様に、１１３および１１４は、WebServiceサーバーであり、アプリケーション11, 12, 13が配置されている。同様に、１１５はBatchサーバーであり、アプリケーション21が配置されている。
【００１９】
図２は、複数の環境が複数のサブシステムとして存在していることを示す図である。２０１〜２０４は、各サブシステムである。環境を識別するため、DV1, DV2, EV1, EV2などの環境種別を示す名称が与えられている。
【００２０】
図３は、アプリケーションを構成するファイル群の構成例を示している。３０１は、アプリケーションを格納するファイルシステム上のフォルダーである。３１１は、アプリケーションの実行ファイルである。３１２は、アプリケーションのライブラリファイルである。３１３は、アプリケーションの設定ファイルである。３２１および３２２は、設定ファイル３１３の設定内容を示している。３２１は、EV1用の設定であり、３２２はEV2用の設定である。例えば、アプリケーションが通信機能で使用する接続先サーバーのアドレス情報や、リンク先のURL情報、データベース接続情報など、環境ごとに変更が必要な設定値の例が示されている。
【００２１】
まず、図１で示したように、複数のサーバー種別が存在し、サーバー種別ごとに配置すべきアプリケーションが異なる。さらに、図２で示したように、複数の環境種別が存在する。そして、図３に示したように、各アプリケーションには、環境ごとに設定変更が必要な、設定ファイルが含まれる。まず、ここまででサーバー種別数×環境種別数のアプリケーション配置バリエーションが存在することが分かる。
【００２２】
さらに、インターネットに公開するサービスの特性として、機能追加やデメリット修正などの目的で、定期的にサブシステム単位でバージョンアップをするのが通例である。また、開発途中のバージョンをデバッグ・テストなどを行う目的で、開発環境やテスト環境に配備する必要もある。しかしながら、バージョンアップを行う際、入れ替えが必要となるアプリケーションは、変更が実施されたアプリケーションのみである。つまり、図１における多数のアプリケーションのうち、バージョンごとに入れ替え対象アプリケーションが異なる。前述した、サーバー種別数×環境種別数のアプリケーション配置バリエーションに加え、バージョンごとのバリエーションが加わることにより、よりメンテナンスの複雑さが増すことになる。
【００２３】
もし、インストーラを作成することにより、これらのバリエーションをサポートしようとすると、サーバー種別数×環境種別数の応答ファイルの準備が必要となる。また、バージョンごとに、インストール対象アプリケーションを指定し直して、インストーラの再ビルドを行う必要がある。すなわち、これらのバリエーションの多さに対し、インストーラの応答ファイルのメンテナンス、インストール対象アプリケーションの再指定、インストーラの再ビルドなど、多大なメンテナンスの手間がかかるという課題がある。
【００２４】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【００２５】
図４は、本発明を実施するためのネットワーク構成の一例を示している。４０１はインターネットあるいはイントラネットを示すネットワークである。４０２はルータやスイッチなど、ネットワークどうしを接続するネットワーク機器である。４０３はネットワーク間の通信許可の制御を行うファイアウォールである。４０４はＬＡＮ（Local Area Network）である。４０５および４０６はサーバーコンピューターである。４０７はハイパーバイザーであり、コンピューターの仮想化を行う。４０８は仮想マシンであり、ハーパーバイザー４０７上で動作する。４０９はクライアントコンピューターである。クライアントコンピューター４０９は、ネットワーク接続を経由して、サーバーコンピュータ４０５や仮想マシン４０８で実行されているＷｅｂサーバーやアプリケーションサーバーにアクセスできる。４１０は、アプリケーションをビルドするためのサーバーコンピューターである。４１１は、ビルドサーバー４１０に接続し、アプリケーションのソースコードをコミットしたり、ビルド結果を取得したりするために用いるクライアントコンピューターである。
【００２６】
図５は、サーバーコンピューター４０５、４１０、仮想マシン４０８、クライアントコンピューター４０９、４１１の情報処理機能の論理構成を示している。５０１はユーザーインターフェースであり、ディスプレイ、キーボード、マウスなどによる、情報の入出力を行う。これらのハードウェアを備えないコンピューターは、リモートデスクトップなどにより、他のコンピューターから接続・操作することも可能である。５０２はネットワークインターフェースであり、ＬＡＮなどのネットワークに接続して、他のコンピューターやネットワーク機器との通信を行う。５０４は組込済みプログラムおよびデータが記録されているＲＯＭである。５０５が一時メモリ領域であるＲＡＭである。５０６はＨＤＤに代表されるような二次記憶装置である。５０３はＣＰＵであり、ＲＯＭ５０４、ＲＡＭ５０５、二次記憶装置５０６などから読み込んだプログラムを実行する。各部は入出力インターフェース５０７を介して接続されている。
【００２７】
図６は、ビルドサーバー４１０の内部構成を示している。６０１は、開発したアプリケーションのソースファイル６０２を格納するリポジトリである。６１１は、オペレーティングシステム上のファイルシステムである。６１２は、ファイルシステム６１１上に出力されたアプリケーション・ファイル群である。６２１はビルドツール、６２２はプログラム（１）である。
【００２８】
クライアントコンピューター４０９上で開発されたアプリケーションのソースファイルは、リポジトリ６０１内に、ソースファイル６０２として格納される。ビルドツール６２１にて、アプリケーションのビルドを実行すると、ソースファイル６０２がコンパイルされて、アプリケーションの実行ファイルなど、最終成果物のアプリケーション・ファイル群６１２が出力される。
【００２９】
図７は、環境依存変数を格納するテーブル７０１を示している。７１１がキー列、７１２が値列である。
【００３０】
図３にて示したように、アプリケーション設定ファイル３１３は、複数の環境で正しく動作させるためには、その環境用の設定値を設定する必要がある。プログラム（１）６２２は、アプリケーション・ファイル群６１２内の設定ファイルを検索し、環境依存変数をテーブル７０１から取得し、設定ファイル３１３に埋め込む。例えば、設定ファイルのオリジナルが、App01.configであるとする。オリジナルの設定ファイル内には、環境依存変数を識別するために、targetServer=%_targetServer%としておく。プログラム（１）６２２実行時に、全ての環境に対して、%_targetServer%の文字列部をテーブル７０１から取得した環境依存変数に置き換える。例えば、テーブル７０１は、テスト１環境用の変数が格納されてあり、オリジナルのApp01.config内の置換対象文字列部を、値列７１２の値で置き換えて、App01.config.EV1というテスト１環境用の設定ファイルを出力する。このテーブル７０１を環境種別の分用意しておき、同様に、他の環境用の設定ファイルも出力する。例えば、テスト２環境用の設定ファイルは、App01.config.EV2といった具合である。
【００３１】
図８は、サーバー４０５、４０８の内部構成を示している。８３１は、サーバーのオペレーティングシステム上のファイルシステムである。８３２は、ファイルシステム８３１上のフォルダーである。８３２は、ビルドツール６２１、プログラム（１）６２２によって出力されたアプリケーション・ファイル群（１）６１２を一時的に配置しておくフォルダーである。８３３は、ファイルシステム８３１上のフォルダーである。８３３は、デプロイ対象アプリケーションの配置先であり、単数または複数のフォルダーから成る。８３４は、アプリケーション・ファイル群（２）である。アプリケーション・ファイル群（２）８３４は、サーバー４０５、４０８上で実行され、アプリケーションの機能を提供する。８３５は、プログラム（２）である。
【００３２】
図９は、プログラム（２）８３５が使用するテーブル９０１および９２１を示している。９１１はホスト名列である。９１２は環境種別列である。９１３はサーバー種別列である。テーブル９０１を参照することにより、特定のホスト名を持つサーバーが、どの環境に所属していて、どのサーバー種別であるかが判別できる。９３１はサーバー種別列である。９３２はアプリケーション列である。９３３はデプロイフラグ列である。テーブル９２１を参照することにより、あるサーバー種別のサーバーに対して、配置が必要なアプリケーションがアプリケーション列９３２から特定できる。また、それらのアプリケーションが今回のバージョンにおいて、デプロイ対象であるか否かが、デプロイ・フラグ列９３３から判定できる。
【００３３】
図１０は、プログラム（２）８３５が使用するテーブル１００１を示している。１０１１はアプリケーション列である。１０１２はオリジナルファイル格納フォルダー列である。１０１２は、フォルダー８３２以下のいずれかのフォルダーに相当する。１０１３は宛先フォルダー列である。１０１３は、フォルダー８３３以下のいずれかのフォルダーに相当する。１０１４はアプリケーション設定ファイル列である。１０１４は、オリジナルのアプリケーション設定ファイルのファイル名を示している。１０１５は環境別アプリケーション設定ファイル列である。１０１５は、%suffix%の部分を、環境種別EV1, EV2などと置き換えることにより、環境種別ごとの設定ファイルのファイル名を示している。例えば、App01.config.EV1, App01.config.EV2などである。
【００３４】
図１１が、プログラム（２）８３５によるアプリケーション・デプロイ実行のフローを示したフローチャートである。プログラム（２）８３５をサーバー４０５あるいは４０８上で実行すると、まずデプロイを開始するかの選択入力を受け付ける（Ｓ１１０１）。デプロイをキャンセルした場合、ユーザーに中断を通知して、プログラムを終了する（Ｓ１１０８）。デプロイ開始を指示した場合、プログラム（２）８３５は、オペレーティングシステムに問い合わせ、サーバー４０５または４０８のホスト名を取得する（Ｓ１１０２）。次に、テーブル９０１を検索し、取得済みのホスト名に一致するレコードを取得する（Ｓ１１０３）。
【００３５】
一致するレコードが取得できなかった場合、ユーザーに中断を通知して、プログラムを終了する（Ｓ１１０８）。一致するレコードが取得できた場合、レコードから該当ホスト名のサーバーが所属する環境種別およびサーバー種別を取得する（Ｓ１１０５）。取得したサーバー種別から、さらにテーブル９２１を検索し、該当サーバー種別に対して、デプロイ対象アプリケーションの一覧を取得する（Ｓ１１０６）。デプロイ対象アプリケーションが１つもない場合、ユーザーに中断を通知して、プログラムを終了する（Ｓ１１０８）。
【００３６】
次にデプロイ対象アプリケーション数を判定する（Ｓ１１０７）。デプロイ対象アプリケーションが１つ以上ある場合、各アプリケーションに対して、以下のループ処理を実行する。まず、１つ目のアプリケーションに対するデプロイ・フラグをデプロイ・フラグ列９３３から取得する（Ｓ１１０９）。取得したデプロイ・フラグを判定する（Ｓ１１１０）。デプロイ・フラグが０と判定された場合、何も処理を行わずに、次のループ処理を続行する。デプロイ・フラグが１と判定された場合、該当アプリケーションの配置情報をテーブル１００１から取得する（Ｓ１１１１）。オリジナル格納フォルダー列１０１２および宛先フォルダー列１０１３から、アプリケーションファイルのコピー元および宛先を特定し、宛先フォルダーにアプリケーションファイルを配置する（Ｓ１１１２）。
【００３７】
さらに、環境種別列９１２から特定されている環境種別用の設定ファイルをオリジナルファイルと同名にリネームし、宛先フォルダーに配置する（Ｓ１１１３）。例えば、ホスト名が「ev1web01」の場合、環境種別が「EV1」であるので、用意済みのApp01.config.EV1をApp01.configにリネームして、宛先フォルダーに配置する。これにより、環境種別を自動判定して、該当の環境種別に必要な環境依存変数を自動設定することが可能となる。
【００３８】
２つ目以降のアプリケーションに対しても、同様にループ処理を実行する。最後に、配置済みアプリケーション配置情報とオリジナルアプリケーション情報の比較処理を行う（Ｓ１１１４）。例えば、アプリケーションファイルのファイル名、タイムスタンプ情報、バージョン情報などを比較し、両者が一致するかなどを確認して、正しいファイルが宛先フォルダーに配置されたことを検証する。比較結果が正しい場合、ユーザーに成功を通知して、プログラムを終了する（Ｓ１１１６）。比較結果が正しくない場合、ユーザーにエラーを通知して、プログラムを終了する（Ｓ１１１７）。
【００３９】
図１２は、ビルド実行時のフローチャートである。アプリケーションが継続的にバージョンアップされることに鑑みて、ビルドサーバー４１０で新しいバージョンのビルドを実行する際に、ソースファイル６０２に変更があったアプリケーションのみ、デプロイ・フラグ９３３に「１」を設定する手段を用意する。まず、ビルドツール６２１でビルドを実行する（Ｓ１２０１）。この際、差分ビルドを適用すれば、変更があったアプリケーションのみがビルドされる。
【００４０】
以降、各アプリケーションに対して、以下のループ処理を実行する。まず、アプリケーションの変更有無を判定する（Ｓ１２０２）。変更有の場合、テーブル９２１のデプロイ・フラグ９３３に「１」をセットする（Ｓ１２０３）。変更無の場合、テーブル９２１のデプロイ・フラグ９３３に「０」をセットする（Ｓ１２０４）。アプリケーションの数だけ、ループ処理を繰り返す。このデプロイ・フラグの自動更新手段により、アプリケーションのバージョンアップ時のデプロイ実施時に、変更のあったアプリケーションのみを入れ替え可能となる。
【００４１】
以上、説明したデプロイ方法及びプログラムによれば、環境別に管理すべき情報が、テーブル７０１、９０１および９２１に集約されるので、メンテナンスが容易となる。また、デプロイ作業者は、プログラム（２）８３５に、デプロイ実施を指示するだけで、環境種別、サーバー種別を自動判定して、対象アプリケーションが自動配置されるので、人的な作業ミスをなくすことが可能となる。
【符号の説明】
【００４２】
１０１  サブシステム全体
１１１〜１１５  サーバー
１２１〜１２３、１３１〜１３３および１４１  アプリケーション
【図１】
2014164545.tif 000003
【図２】
2014164545.tif 000004
【図３】
2014164545.tif 000005
【図４】
2014164545.tif 000006
【図５】
2014164545.tif 000007
【図６】
2014164545.tif 000008
【図７】
2014164545.tif 000009
【図８】
2014164545.tif 000010
【図９】
2014164545.tif 000011
【図１０】
2014164545.tif 000012
【図１１】
2014164545.tif 000013
【図１２】
2014164545.tif 000014