(57)【特許請求の範囲】
【請求項１】
コンパイル及び配備サービス（３００）を用いたソフトウェアのビルド及びロード処理のための方法であって、
前記サービス（３００）において、新たなソフトウェアを受信することと、
前記サービス（３００）において、受信される前記新たなソフトウェアを、データベース（５２５，７２５）内のアクティブソフトウェアを含むデータと比較することと、
前記サービス（３００）において、前記比較に基づいて、前記新たなソフトウェアとアクティブソフトウェアとを１つ以上のロードモジュール（３３０，５５０ａ，５５０ｂ）へと統合することと、
前記１つ以上のロードモジュールを、１つ以上のターゲット処理ユニット（３４０，４００，４１０）へと配備することと、
を含む方法。
【請求項２】
前記新たなソフトウェアは、コンテナ（３２０，５２０）へとパッケージ化されたソースコード（３１０，５１０）であり、
前記比較するステップは、過去に定義された拘束条件及び前記アクティブソフトウェアに対して、ソースレベルで前記ソースコードをチェックすること、をさらに含み、
前記統合するステップは、前記サービスにおいて、前記ソースコードを前記アクティブソフトウェアと統合してコンパイルすること、をさらに含む、
請求項１の方法。
【請求項３】
前記新たなソフトウェアは、コンパイル済みのソースコードのプロパティを記述する新たなマニフェストを伴う、コンテナ（３２０，５２０）へとパッケージ化された前記コンパイル済みのソースコード（３１０，５１０）であり、
前記データベース内の前記データは、前記アクティブソフトウェアに関連付けられる１つ以上の既存のマニフェストのファイルを含み、
前記比較するステップは、前記新たなマニフェストを抽出することと、予め定義される制約及び前記１つ以上の既存のマニフェストに対して、前記新たなマニフェストをチェックすることと、をさらに含む、
請求項１の方法。
【請求項４】
前記新たなソフトウェアは、中間フォーマットソースコード（３１０，３２０，５１０，５２０）であり、
前記比較するステップは、前記中間フォーマットソースコードを、予め定義される制約及び前記アクティブソフトウェアに対してチェックすること、をさらに含み、
前記統合するステップは、前記中間フォーマットソースコードを完全にコンパイルすること、をさらに含む、
請求項１の方法。
【請求項５】
前記統合するステップは、前記中間フォーマットソースコードを文（statement）及び式（expression）のレベルで前記アクティブソフトウェアと統合すること、をさらに含む、請求項４の方法。
【請求項６】
前記サービス（３００）において、受信される前記新たなソフトウェアの１つ以上のコード特性を受信することと、前記データベースのデータは、前記アクティブソフトウェアの記憶された特性を含むことと、
前記サービス（３００）において、前記データの比較の一部として、受信される前記新たなソフトウェアのコード特性を、アクティブソフトウェアの前記記憶されたコード特性と比較することと、
をさらに含む、請求項１〜５のいずれかの方法。
【請求項７】
前記ターゲット処理ユニット（３４０）は、１つ以上のＳＧＳＮノード及びロードバランサ（４００）を含み、前記新たなソフトウェアは、ＳＧＳＮソフトウェア（５１０）及び新たなロードバランサルール（５２０）を含み、前記データは、既存のロードバランサルール（５２５）を含む、請求項１〜６のいずれかの方法。
【請求項８】
前記比較するステップは、１つ以上のロードバランサチェッカ及びコンパイラ（５４０ｂ）を用いて、前記既存のロードバランサルールに対して、前記新たなロードバランサルールをチェックすること、をさらに含み、
前記統合するステップは、前記新たなロードバランサルールのうちの、前記既存のロードバランサルールと共通的な部分を統合することと、前記既存のロードバランサルールと競合する前記新たなロードバランサルールをレポートすることと、をさらに含む、
請求項７の方法。
【請求項９】
前記比較するステップは、１つ以上のＳＧＳＮチェッカ及びコンパイラ（５４０ａ）において、前記ＳＧＳＮソフトウェアをチェックすること、をさらに含む、請求項７又は請求項８の方法。
【請求項１０】
前記ターゲット処理ユニットは、プロセッサアーキテクチャ、オペレーティングシステム、及び前記新たなソフトウェアの意図される用途、のうちの１つ以上により分類される、請求項１〜９のいずれか１項の方法。
【請求項１１】
コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステムであって、
サーバ（３００）と、
前記サーバへ連結されるプロセッサ（７００）と、
前記プロセッサへ連結されるメモリ（７２５）と、
前記サーバへ電子的に連結されるデータベースと、
を含み、
前記プロセッサは、
新たなソフトウェアを受信し、
受信される前記新たなソフトウェアを、データベース（５２５，７２５）内のアクティブソフトウェアを含むデータと比較し、
前記比較に基づいて、前記新たなソフトウェアとアクティブソフトウェアとを１つ以上のロードモジュール（３３０，５５０ａ，５５０ｂ）へと統合し、
前記１つ以上のロードモジュールを、１つ以上のターゲット処理ユニット（３４０，４００，４１０）へと配備する、
ように構成される、システム。
【請求項１２】
前記新たなソフトウェアは、コンテナ（３２０，５２０）へとパッケージ化されたソースコード（３１０，５１０）であり、
前記プロセッサは、
過去に定義された拘束条件及び前記アクティブソフトウェアに対して、ソースレベルで前記ソースコードをチェックし、
前記ソースコードを前記アクティブソフトウェアと統合してコンパイルする、
ようにさらに構成される、請求項１１のシステム。
【請求項１３】
前記新たなソフトウェアは、コンパイル済みのソースコードのプロパティを記述する新たなマニフェストを伴う、コンテナ（３２０，５２０）へとパッケージ化された前記コンパイル済みのソースコード（３１０，５１０）であり、
前記データベース内の前記データは、前記アクティブソフトウェアに関連付けられる１つ以上の既存のマニフェストのファイルを含み、
前記プロセッサは、前記新たなマニフェストを抽出し、予め定義される制約及び前記１つ以上の既存のマニフェストに対して、前記新たなマニフェストをチェックする、ようにさらに構成される、
請求項１１のシステム。
【請求項１４】
前記新たなソフトウェアは、中間フォーマットソースコード（３１０，３２０，５１０，５２０）であり、
前記プロセッサは、
前記中間フォーマットソースコードを、予め定義される制約及び前記アクティブソフトウェアに対してチェックし、
前記中間フォーマットソースコードを完全にコンパイルする、
ようにさらに構成される、請求項１１のシステム。
【請求項１５】
前記プロセッサは、前記中間フォーマットソースコードを文（statement）及び式（expression）のレベルで前記アクティブソフトウェアと統合する、ようにさらに構成される、請求項１４のシステム。
【請求項１６】
前記プロセッサは、受信される前記新たなソフトウェアの１つ以上のコード特性を受信する、ようにさらに構成され、
前記データベースのデータは、前記アクティブソフトウェアの記憶された特性を含み、
前記プロセッサは、前記データの比較の一部として、受信される前記新たなソフトウェアのコード特性を、アクティブソフトウェアの前記記憶されたコード特性と比較する、ようにさらに構成される、
請求項１１〜１５のいずれかのシステム。
【請求項１７】
前記ターゲット処理ユニット（３４０）は、１つ以上のＳＧＳＮノード及びロードバランサ（４００）を含み、前記新たなソフトウェアは、ＳＧＳＮソフトウェア（５１０）及び新たなロードバランサルール（５２０）を含み、前記データは、既存のロードバランサルール（５２５）を含む、請求項１１〜１６のいずれかのシステム。
【請求項１８】
１つ以上のロードバランサチェッカ及びコンパイラ（５４０ｂ）をさらに含み、
前記プロセッサは、
前記既存のロードバランサルールに対して、前記新たなロードバランサルールをチェックし、
前記新たなロードバランサルールのうちの、前記既存のロードバランサルールと共通的な部分を統合し、
前記既存のロードバランサルールと競合する前記新たなロードバランサルールをレポートする、
ようにさらに構成される、請求項１７のシステム。
【請求項１９】
１つ以上のＳＧＳＮチェッカ及びコンパイラ（５４０ａ）、をさらに含み、
前記プロセッサは、前記１つ以上のＳＧＳＮチェッカ及びコンパイラを用いて、前記新たなＳＧＳＮソフトウェアをチェックする、ようにさらに構成される、
請求項１７又は請求項１８のシステム。
【請求項２０】
前記ターゲット処理ユニットは、プロセッサアーキテクチャ、オペレーティングシステム、及び前記新たなソフトウェアの意図される用途、のうちの１つ以上により分類される、請求項１１〜１９のいずれか１項のシステム。
【請求項２１】
コンピュータ読取可能な媒体（７２５）において具現化されるコンピュータ読取可能なプログラムコードを記憶する当該媒体を含む、非一時的なコンピュータプログラムプロダクトであって、
デバイス（３００）に、新たなソフトウェアを受信させるためのプログラムコードと、
前記デバイスに、受信される前記新たなソフトウェアを、データベース（５２５，７２５）内のアクティブソフトウェアを含むデータと比較させるためのプログラムコードと、
前記デバイスに、前記比較に基づいて、前記新たなソフトウェアと前記アクティブソフトウェアとを１つ以上のロードモジュール（３３０，５５０ａ，５５０ｂ）へと統合させるためのプログラムコードと、
前記デバイスに、前記ロードモジュールを１つ以上のターゲット処理ユニット（３４０，４００，４１０）へと配備させるためのプログラムコードと、
を含む、コンピュータプログラムプロダクト。
【請求項２２】
前記新たなソフトウェアは、コンテナ（３２０，５２０）へとパッケージ化されたソースコード（３１０，５１０）であり、
前記コンピュータプログラムプロダクトは、
前記デバイスに、過去に定義された拘束条件及び前記アクティブソフトウェアに対してソースレベルで前記ソースコードをチェックさせるためのプログラムコードと、
前記デバイスに、前記ソースコードを前記アクティブソフトウェアと統合させコンパイルさせるためのプログラムコードと、
をさらに含む、請求項２１の非一時的なコンピュータプログラムプロダクト。
【請求項２３】
前記新たなソフトウェアは、コンパイル済みのソースコードのプロパティを記述する新たなマニフェストを伴う、コンテナ（３２０，５２０）へとパッケージ化された前記コンパイル済みのソースコード（３１０，５１０）であり、
前記データベース内の前記データは、前記アクティブソフトウェアに関連付けられる１つ以上の既存のマニフェストのファイルを含み、
前記コンピュータプログラムプロダクトは、前記デバイスに、前記新たなマニフェストを抽出させ、予め定義される制約及び前記１つ以上の既存のマニフェストに対して前記新たなマニフェストをチェックさせるためのプログラムコード、をさらに含む、
請求項２１の非一時的なコンピュータプログラムプロダクト。
【請求項２４】
前記新たなソフトウェアは、中間フォーマットソースコード（３１０，５１０）であり、
前記コンピュータプログラムプロダクトは、
前記デバイスに、前記中間フォーマットソースコードを予め定義される制約及び前記アクティブソフトウェアに対してチェックさせるためのプログラムコードと、
前記デバイスに、前記中間フォーマットソースコードを文（statement）及び式（expression）のレベルで前記アクティブソフトウェアと統合させるためのプログラムコードと、
をさらに含む、請求項２１の非一時的なコンピュータプログラムプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、ソフトウェアのビルド処理及びロード処理に関し、より具体的には、コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステム、方法及びコンピュータプログラムプロダクトに関する。
【背景技術】
【０００２】
典型的には、ソフトウェアアプリケーションがビルドされた後、ソースコード、構成ファイル、及び他の人工物（artefacts）が生成され、コンパイルされ、ロードモジュールへとパッキングされる。これらロードモジュールは、一旦ビルドされると、実行環境へと輸送され、そこでロードされて恐らくは処理ユニットへリンク付けされる。
【０００３】
図１は、典型的なビルド処理を示すフローチャートである。ソースファイル１１０が提供され、又はソースファイル１１０はジェネレータ１２０を用いて自動的に作成される。ジェネレータ１２０は、例えば汎用フレーム、クラス、プロトタイプ、テンプレート、アスペクト又は他の存在論的モデルを用いて、ソースファイル１１０を自動的に生成するために構成ファイル１００を使用し得る。ジェネレータ１２０は、テンプレートプロセッサ又は統合開発環境（“ＩＤＥ”）といった１つ以上のプログラミングツールをも含み得る。
【０００４】
ソースファイル１１０は、コンパイラ１３０によりオブジェクトファイル１４０へとコンパイルされ得る。コンパイラ１３０は、１つのプログラミング言語で書かれたソースコードを他のコンピュータ言語へと変換するプログラム又はプログラムのセットであり得る。例えば、コンパイラ１３０は、高級プログラミング言語からソースコードをアセンブリ言語又はマシンコードといったより低級な言語へと変換し得る。
【０００５】
典型的なビルド処理において、図１に示したように、コンパイラ１３０は、ソースファイル１１０をオブジェクトファイル１４０へと変換し得る。オブジェクトファイル１４０は、例えば、再配置可能なフォーマットのマシンコードを含み得る。オブジェクトファイル１４０は、直接的に実行可能ではないかもしれず、アーカイバ１５０へと入力され得る。アーカイバ１５０は、リンカ又はリンクエディタであってよく、コンパイラ１３０により生成された１つ以上のオブジェクトファイルを受け取って、それらを単一の実行可能なプログラムあるいはロードモジュール１６０へと組み合わせる。コンピュータアプリケーションは、複数のモジュール１６０を含んでよく、それらモジュールの全てが必ずしも単一のオブジェクトファイル１４０内に包含されるわけではない。例えば、オブジェクトファイル１４０は、アーカイバ１５０により解決されるシンボルを包含してよく、アーカイバ１５０は、オブジェクトファイル群を統一的な実行可能プログラムあるいはロードモジュール１６０へとリンク付けする。結果として、ロードモジュール１６０は、“ＥＬＦ（Executable and  Linkable  Format）”アーカイブ、ＪＡＲ（Java  ARchive）若しくはＴＡＲ（Tape  ARchive）ファイル、“ＤＥＢ”（DEB）若しくはＲＰＭパッケージ、又は他のコンテナを含み得る。
【０００６】
ロードモジュールがソフトウェアアプリケーションのために一旦ビルドされると、ソフトウェアアプリケーションのタイプによって、ロードされるべきビルドが行われたサイトからロードモジュールがいかにして処理ユニットへと送信されるかが決定され得る。現在のところ、ロードユニット（load-units）を処理ユニットへと送信する際、新たなロードユニットは処理ユニット上の既存のソフトウェアと干渉しないことが前提とされることが多い。加えて、新たなロードモジュールは、ミドルウェア及びオペレーティングシステムといった処理ユニット上で基礎となるソフトウェアフレームワークと整合していることが前提とされることが多い。いくつかの例では、新たなロードモジュールは、処理ユニット上のサンドボックス内でテストされ得る。サンドボックスは、実際の機器の運用に干渉するリスク無く、新たなロードモジュールを実際の処理ユニットの環境に対してテストすることを可能にする。
【０００７】
図２は、処理ユニットへとロードされる複数のロードモジュールを示すフローチャートである。典型的なロード処理において、最悪のケースは、ロードモジュール１６０が処理ユニット２００へとロードされる際に、何らのチェックも行われないことである。他のケース−apt  or  yumのようなパッケージマネージャが使用される場合など−では、新たなパッケージが処理ユニット２００へとロードされ又は既存のパッケージがアップデートされる際に、初歩的な依存関係チェックが実行される。１つ以上の依存関係に違反するパッケージはロードされないかもしれない。
【０００８】
図１及び図２に示したような上述したビルド処理及びロード処理は、ソフトウェアの変更が相対的に頻繁には行われない静的な環境において、良好に機能する。例えば、現在の処理は、デスクトップセッティングにおいて又は小規模サーバファームにおいては十分であり得る。しかしながら、現代の環境において、上述したビルド処理及びロード処理は、問題を呈している。例えば、大規模なデータセンタ及びクラウド配備においては、通常のコンテナ又はパッケージシステムは十分でない。加えて、データセンタ及びクラウド環境ではステートの変化が頻繁であることから、頻繁なロードモジュールの配備を要する。さらに、特にクラウド環境では、機能中のソフトウェアをパッケージ化し、動的に割り当てられる仮想マシン上でそれを配備することができなければならない。
【０００９】
複雑なアプリケーションは、複数の処理ユニット２００にわたって展開（stretch）されることも多い。アプリケーションが複数の処理ユニット２００にまたがることは一般的であり、そのため、インストール及びアップグレードは、複数の処理ユニット２００をまたいで協調的に行われなければならない。例えば、ソフトウェアは、特定のタスクを実行する複数の処理ユニット２００へとロードされる必要があるかもしれず、結果として、ソフトウェアの異なる断片が処理ユニットへのロードの際に協働しなければならない。処理ユニット２００及びサービスが異なる要件を有する複数のユーザの間で共有されることもあり得る。加えて、新たなソフトウェアは、既存のソフトウェアと干渉し、それにより処理ユニット上での実行の際にエラー及びダウンタイムを引き起こすかもしれない。
【００１０】
従って、現在のソフトウェアのビルド処理及びロード処理のそれら欠点を克服するというニーズが存在する。
【発明の概要】
【００１１】
具体的な実施形態は、コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステム、方法及びコンピュータプログラムプロダクトを対象とする。
【００１２】
ある実施形態において、コンパイル（compilation）及び配備（deployment）サービスを提供するために配置されるサーバ（あるいはサービス）へソフトウェアがロードされる。当該サービスは、例えばターゲット処理ユニットにより採用されるアクティブソフトウェアの全てを記憶することを許容するように構成されるデータベースを提供する。アクティブソフトウェアは、ソース形式又は中間的形式であってよい。例えば、中間的なフォーマットとは、ターゲット環境向けのネイティブオブジェクトコードであってよい。
【００１３】
１つの具体的な実施形態において、コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のための方法が提供される。上記方法は、上記サービスにおいて、新たなソフトウェアを受信することを含む。上記方法は、上記サービスにおいて、受信される新たなソフトウェアを、データベース内のアクティブソフトウェアを含むデータと比較することをさらに含む。上記方法は、上記サービスにおいて、比較に基づいて、新たなソフトウェアとアクティブソフトウェアとを１つ以上のロードモジュールへと統合することをさらに含む。上記方法は、上記１つ以上のロードモジュールを、１つ以上のターゲット処理ユニットへと配備することをさらに含む。
【００１４】
ある実施形態において、上記新たなソフトウェアは、コンテナへとパッケージ化されたソースコードであってよい。当該実施形態において、比較するステップは、過去に定義された拘束条件（restraints）及びアクティブソフトウェアに対して、ソースレベルでソースコードをチェックすること、をさらに含む。加えて、統合するステップは、上記サービスにおいて、ソースコードをアクティブソフトウェアと統合してコンパイルすること、をさらに含む。
【００１５】
ある実施形態において、新たなソフトウェアは、コンパイル済みのソースコードのプロパティを記述する新たなマニフェストを伴う、コンテナへとパッケージ化されたコンパイル済みのソースコードであってよい。当該実施形態において、データベース内のデータは、アクティブソフトウェアに関連付けられる１つ以上の既存のマニフェストのファイルを含む。比較するステップは、新たなマニフェストを抽出することと、予め定義される制約（constraints）及び１つ以上の既存のマニフェストに対して、新たなマニフェストをチェックすることと、をさらに含む。
【００１６】
いくつかの実施形態において、新たなソフトウェアは、中間フォーマットソースコードであってよい。当該実施形態において、上記方法の比較するステップは、中間フォーマットソースコードを、予め定義される制約及びアクティブソフトウェアに対してチェックすること、をさらに含む。加えて、統合するステップは、中間フォーマットソースコードを完全にコンパイルすること、をさらに含む。いくつかの実施形態において、統合するステップは、中間フォーマットソースコードを文（statement）及び式（expression）のレベルでアクティブソフトウェアと統合すること、をさらに含んでよい。
【００１７】
いくつかの実施形態において、上記方法は、上記サービスにおいて、受信される新たなソフトウェアの１つ以上のコード特性を受信すること、をさらに含み、データベースのデータは、アクティブソフトウェアの記憶された特性を含む。上記方法は、上記サービスにおいて、データの比較の一部として、受信される新たなソフトウェアのコード特性を、アクティブソフトウェアの記憶されたコード特性と比較すること、をさらに含む。
【００１８】
他の実施形態において、ターゲット処理ユニットは、１つ以上のＳＧＳＮノード及びロードバランサを含み、新たなソフトウェアは、ＳＧＳＮソフトウェア及び新たなロードバランサルールを含み、データは、既存のロードバランサルールを含む。
【００１９】
いくつかの実施形態において、上記方法の比較するステップは、１つ以上のロードバランサチェッカ及びコンパイラを用いて、既存のロードバランサルールに対して、新たなロードバランサルールをチェックすること、をさらに含む。上記方法の統合するステップは、新たなロードバランサルールのうちの、既存のロードバランサルールと共通的な部分を統合することと、既存のロードバランサルールと競合する新たなロードバランサルールをレポートすることと、をさらに含む。
【００２０】
いくつかの実施形態において、上記方法の比較するステップは、１つ以上のＳＧＳＮチェッカ及びコンパイラにおいて、ＳＧＳＮソフトウェアをチェックすること、をさらに含む。
【００２１】
いくつかの実施形態において、ターゲット処理ユニットは、１つ以上のプロセッサアーキテクチャ、オペレーティングシステム、及び／又は新たなソフトウェアの意図される用途、のうちの１つ以上により分類される。
【００２２】
具体的な実施形態によれば、コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステムが提供される。上記システムは、サーバと、サーバへ連結されるプロセッサと、プロセッサへ連結されるメモリと、サーバへ電子的に連結されるデータベースと、を備えるコンパイル及び配備サービスを含む。上記プロセッサは、新たなソフトウェアを受信するように構成される。上記プロセッサは、受信される新たなソフトウェアを、データベース内のアクティブソフトウェアを含むデータと比較するようにさらに構成される。上記プロセッサは、上記比較に基づいて、新たなソフトウェアとアクティブソフトウェアとを１つ以上のロードモジュールへと統合する、ようにさらに構成される。加えて、上記プロセッサは、１つ以上のロードモジュールをターゲット処理ユニットへと配備するようにさらに構成される。
【００２３】
ある実施形態において、新たなソフトウェアは、コンテナへとパッケージ化されたソースコードであり、上記プロセッサは、過去に定義された拘束条件及びアクティブソフトウェアに対して、ソースレベルでソースコードをチェックする、ようにさらに構成されてよい。上記プロセッサは、ソースコードをアクティブソフトウェアと統合してコンパイルする、ようにもさらに構成され得る。
【００２４】
他の実施形態において、新たなソフトウェアは、コンパイル済みのソースコードのプロパティを記述する新たなマニフェストを伴う、コンテナへとパッケージ化されたコンパイル済みのソースコードである。当該実施形態において、データベース内のデータは、アクティブソフトウェアに関連付けられる１つ以上の既存のマニフェストのファイルを含み得る。加えて、上記プロセッサは、新たなマニフェストを抽出し、予め定義される制約及び１つ以上の既存のマニフェストに対して、新たなマニフェストをチェックする、ようにさらに構成され得る。
【００２５】
いくつかの実施形態において、新たなソフトウェアは、中間フォーマットソースコードであり、上記プロセッサは、中間フォーマットソースコードを、予め定義される制約及びアクティブソフトウェアに対してチェックする、ようにさらに構成される。上記プロセッサは、中間フォーマットソースコードを完全にコンパイルする、ようにさらに構成されてよい。いくつかの実施形態において、上記プロセッサは、中間フォーマットソースコードを文（statement）及び式（expression）のレベルでアクティブソフトウェアと統合する、ようにさらに構成され得る。
【００２６】
いくつかの実施形態において、上記システムは、受信される新たなソフトウェアの１つ以上のコード特性を受信するようにさらに構成されるプロセッサ、をさらに含み、データベースのデータは、アクティブソフトウェアの記憶された特性を含む。上記プロセッサは、データの比較の一部として、受信される新たなソフトウェアのコード特性を、アクティブソフトウェアの記憶されたコード特性と比較する、ようにさらに構成され得る。
【００２７】
他の実施形態において、ターゲット処理ユニットは、１つ以上のＳＧＳＮノード及びロードバランサを含み、新たなソフトウェアは、ＳＧＳＮソフトウェア及び新たなロードバランサルールを含み、データは、既存のロードバランサルールを含む。いくつかの実施形態において、上記システムは、既存のロードバランサルールに対して、新たなロードバランサルールをチェックする、ようにさらに構成されるプロセッサ、を含み得る。上記プロセッサは、新たなロードバランサルールのうちの、既存のロードバランサルールと共通的な部分を統合する、ようにさらに構成され得る。上記プロセッサは、既存のロードバランサルールと競合する新たなロードバランサルールをレポートする、ようにもさらに構成され得る。いくつかの実施形態において、上記システムは、１つ以上のＳＧＳＮチェッカ及びコンパイラ、をさらに含んでもよく、上記プロセッサは、１つ以上のＳＧＳＮチェッカ及びコンパイラを用いて、新たなＳＧＳＮソフトウェアをチェックする、ようにさらに構成される。
【００２８】
他の実施形態によれば、コンピュータ読取可能な媒体において具現化されるコンピュータ読取可能なプログラムコードを記憶する当該媒体を含む、非一時的なコンピュータプログラムプロダクトが提供される。上記コンピュータプログラムプロダクトは、デバイスに、新たなソフトウェアを受信させるためのプログラムコードを含む。上記コンピュータプログラムプロダクトは、デバイスに、受信される新たなソフトウェアを、データベース内のアクティブソフトウェアを含むデータと比較させるためのプログラムコード、をさらに含む。上記コンピュータプログラムプロダクトは、デバイスに、上記比較に基づいて、新たなソフトウェアとアクティブソフトウェアとを１つ以上のロードモジュールへと統合させるためのプログラムコード、を含む。加えて、上記コンピュータプログラムプロダクトは、デバイスに、ロードモジュールを１つ以上のターゲット処理ユニットへと配備させるためのプログラムコード、を含む。
【００２９】
ある実施形態において、新たなソフトウェアは、コンテナへとパッケージ化されたソースコードである。上記コンピュータプログラムプロダクトは、デバイスに、過去に定義された拘束条件及びアクティブソフトウェアに対してソースレベルでソースコードをチェックさせるためのプログラムコード、をさらに含む。上記コンピュータプログラムプロダクトは、上記デバイスに、ソースコードをアクティブソフトウェアと統合させコンパイルさせるためのプログラムコード、をさらに含む。
【００３０】
他の実施形態において、新たなソフトウェアは、コンパイル済みのソースコードのプロパティを記述する新たなマニフェストを伴う、コンテナへとパッケージ化された当該コンパイル済みのソースコードである。加えて、データベース内のデータは、アクティブソフトウェアに関連付けられる１つ以上の既存のマニフェストのファイルを含む。上記コンピュータプログラムプロダクトは、上記デバイスに、新たなマニフェストを抽出させ、予め定義される制約及び１つ以上の既存のマニフェストに対して新たなマニフェストをチェックさせるためのプログラムコード、をさらに含む。
【００３１】
いくつかの実施形態において、新たなソフトウェアは、中間フォーマットソースコードである。上記コンピュータプログラムプロダクトは、上記デバイスに、中間フォーマットソースコードを予め定義される制約及びアクティブソフトウェアに対してチェックさせるためのプログラムコード、をさらに含んでよい。上記コンピュータプログラムプロダクトは、上記デバイスに、中間フォーマットソースコードを文（statement）及び式（expression）のレベルでアクティブソフトウェアと統合させるためのプログラムコード、をさらに含んでよい。
【図面の簡単な説明】
【００３２】
ここに取り入れられ明細書の一部を成す添付図面は、本開示の多様な実施形態を描いており、本説明と共に、本開示の原理を説明し、関連分野における当業者がここで開示される実施形態を活用することを可能とするためにさらに供される。図面において、同等の参照番号は同一の又は機能的に同様のエレメントを指し示す。
【００３３】
【図１】典型的なビルド処理を示すフローチャートである。
【図２】処理ユニットへロードモジュールがロードされる様子を示すフローチャートである。
【図３】例示的な実施形態に係る配備サービスを用いる配備を示すフローチャートである。
【図４】例示的な実施形態に係るアプリケーションプロセッサにサービスしているロードバランサを示すフローチャートである。
【図５】例示的な実施形態に係るＳＧＳＮ関連の新たなソフトウェアのチェック及びビルドの最終ステージを示すフローチャートである。
【図６】例示的な実施形態に係る配備サービスを用いる配備の方法を示すフローチャートである。
【図７】例示的な実施形態に係るサービスを概略的に示す機能ブロック図である。
【発明を実施するための形態】
【００３４】
具体的な実施形態は、コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステム、方法及びコンピュータプログラムプロダクトを対象とする。
【００３５】
新たなソフトウェアは、ロードモジュールの作成及び配備を管理するサービスへとロードされ得る。当該サービスは、新たなソフトウェアのロードモジュールを処理ユニットへと配備する仲介者として動作し得る。いくつかの実施形態において、上記サービスは、データベースを含むサーバである。当該データベースは、最新の時点でターゲット処理ユニット上で実行されているアクティブソフトウェアの全て、当該サービスにより過去に受信されターゲット処理ユニットへと配備されたソフトウェア、及び／又はターゲット処理ユニットに関する制約といった他の情報を包含し得る。アクティブソフトウェアは、例えばソース形式又は中間フォーマットといった、複数の異なるフォーマットで記憶されてよい。いくつかの実施形態において、中間フォーマットは、ターゲット処理ユニット環境向けのネイティブオブジェクトコードであってよい。
【００３６】
いくつかの実施形態において、上記サービスは、ソース形式又は何らかの事前にコンパイル済みの中間コードのいずれかで新たなソフトウェアを受信し得る。例示的な実施形態において、中間コードは、ターゲット処理ユニットに対する適合性（compliance）についてサービスがコードを調査し及びチェックすることを可能にする。適合性が一旦チェックされると、上記サービスは、新たなソフトウェアを、過去にサービスへとアップロードされデータベース内に格納されたソフトウェアと統合することができる。いくつかの実施形態において、統合されたソフトウェアから新たなロードユニット群を生成し、これらをターゲット処理ユニットへと配備することができる。
【００３７】
次に図３を参照すると、例示的な実施形態に係る配備サービスを用いた配備を描いたフローチャートが示されている。例示的な実施形態において、サービス３００は、処理ユニット３４０上へ配備されるべき新たなソフトウェアを受信する。いくつかの実施形態において、ソースファイル及び／又は中間コード３１０であり得る新たなソフトウェアは、プリコンパイラによって、１つ以上のコンテナ３２０へとパッケージ化され得る。サービス３００は、１つ以上のコンテナ３２０を受信し得る。例示的な実施形態において、いかなるアップロードされるコンテナ３２０も、配備サービス３００がアクティブソフトウェア及びターゲット処理ユニットの情報との適合性についてコンテナ３２０の内部のコードを調査し及びチェックするために適切な形式をとるコード３１０を含み、その情報はデータベース内に記憶され得る。
【００３８】
例示的な実施形態において、サービス３００は、受信される新たなソフトウェアがアクティブな又は既存のソフトウェアと共に作動することを保証する。１つの利点は、新たなソフトウェアがアクティブソフトウェアと作動することを処理ユニット３４０へ配備される前に保証できることである。他の利点は、ソースコードの開示を強いられることなく、処理ユニット３４０上の既存のソフトウェアとの適合性について異なるサプライヤからのソフトウェアをチェックできることである。
【００３９】
新たな中間コードを作成し、当該中間コードをアクティブソフトウェアと共にチェックする場合のいくつかの可能性が存在する。１つの実施形態において、例えば、ソースコード３１０は、サービス３００により受信される前にコンテナ３２０へとパッケージ化されてもよい。サービス３００は、データベース内の予め定義される制約及び／又はアクティブコードに対して、上記ソースコードをチェックし又は比較し得る。制約の全てが充足される場合、新たなコードはコンパイルされ、他のアクティブソフトウェアと統合され、ロードモジュール３３０になり得る。コンパイルされる形式は、例えば、ネイティブオブジェクトコード、又はＪａｖａ仮想マシン（”ＪＶＭ”）といった中間的な仮想マシンコードを含み得る。
【００４０】
いくつかの実施形態において、ソースコード３１０は、コンテナ３２０へとコンパイルされパッケージ化されてよく、コンテナ内のコードを説明するマニフェストがコンテナ３２０と共に伝送され得る。概して、ソース及び中間コードを含むコードに関する特性がサーバ３００により受信され得る。サーバ３００は、コンテナ３２０の内部のコードと、当該コンテナの内部のコードのプロパティ（即ち、コード特性）を記述するマニフェストとを受信してもよい。いくつかの実施形態において、サービス３００は、コンテナ３２０内のコードを受信すると、そのコードを説明するマニフェストを抽出し、当該マニフェストを、データベース内に記憶されている、予め定義される制約（即ち、コード特性）及びアクティブな又は過去にアップロード済みのコードの他のマニフェストに対してチェックする。制約の全てが充足される場合、サービス３００は、コンパイルされた新たなソフトウェア、又はコンテナ３２０内のコードを、データベース内に記憶されている他のアクティブソフトウェアと統合して、１つ以上のロードモジュール３３０を形成する。
【００４１】
ある実施形態において、ソースコード３１０は、人間には読み取り不能であるもののプログラムによって調査可能な中間フォーマットへとコンパイルされてもよい。そのセミコンパイル済みコード３１０がコンテナ３２０内にパッケージ化され、サービス３００によって受信されてもよい。サービス３００は、データベース内に記憶される、予め定義される制約（即ち、コード特性）及びアクティブコードに対して、セミコンパイル済みコードを適合性についてチェックし得る。制約の全てが充足される場合、コードは、その最終形式へとコンパイルされ、他のアクティブソフトウェアと統合されて、ロードモジュール３３０になり得る。コンパイルされる形式は、例えば、ネイティブオブジェクトコード、又はＪａｖａ仮想マシン（”ＪＶＭ”）といった中間的な仮想マシンコードを含み得る。
【００４２】
上述した及び他の実施形態の１つの利点は、新たなソフトウェア３１０、３２０がソース形式でアップロードされることを要さず、従って人間によっては容易に調査可能ではないことである。しかしながら、新たなソフトウェアは、サービス３００上で実装される整合性チェッカにとってその複雑さの全てにおいて利用可能である。例えば、新たなソフトウェアは、何らかのあり得る不整合性又は制約について、文（statement）及び式（expression）のレベルにまでサービスの整合性チェッカによってチェックされてよい。他の利点は、文及び式のレベルにまで、セミコンパイル済みコードを他のアクティブコードと込み入った形で統合することが可能なことであり得る。従って、サービス３００がアプリケーションの一部を受信し、一旦整合性及び他の制約についてチェックしたならば、それをアプリケーション全体と完全に統合することが可能であり得る。さらに可能なこととして、サービス３００は、異なる複数のサプライヤからのソフトウェアの断片を１つのアプリケーションへと統合し得る。
【００４３】
いくつかの実施形態において、データベースは、例えばプロセッサアーキテクチャ及びオペレーティングシステムなどを含むターゲット処理ユニット３４０の分類を含む。データベースは、処理ユニット３４０が当該処理ユニット向けであることを意図される新たなソフトウェアのみを受信し得るように、処理ユニット３４０又はアクティブソフトウェアの意図される用途に関する分類情報を含んでもよい。それら分類及び分類情報は、新たなソフトウェア又はアクティブソフトウェアに関連付けられるコード特性の一部として含まれることができる。
【００４４】
さらに、いくつかの実施形態において、サービス３００は、ロードモジュール３３０を処理ユニット３４０へと配備し得る。一旦ビルド処理が開始すると、サービス３００は、新たなソフトウェアの変更により影響を受けるターゲット処理ユニット３４０のためのロードモジュール３３０を生成し又は再ビルドし得る。サービス３００は、ロードモジュール３３０の再ビルド又はビルドの後に、ロードモジュールをターゲット処理ユニット３４０へとロードし及びアクティブ化する。
【００４５】
次に図４を参照すると、いくつかの実施形態に係るアプリケーションプロセッサにサービスしているロードバランサを描いたフローチャートが示されている。いくつかの実施形態において、処理ユニットのいくつかは、アプリケーション４１０を実行しているいくつかの他の処理ユニットのためのロードバランサとして動作する。アプリケーションは、例えばウェブサーバ、ＳＩＰサーバ、モビリティ管理エンティティ（“ＭＭＥ”）ノード、ホーム加入者サーバ（“ＨＳＳ”）ノードなどを含む、ネットワークからパケットを受け付ける何らかのアプリケーションを含み得る。
【００４６】
アプリケーションプロセッサ４１０の構成は、動的であって、時間にわたって変化してよい。いくつかの実施形態において、構成が変更される場合、新たな及び／又はアップデートされたアプリケーションを収容する目的で、ロードバランサ４００のソフトウェアがアップデートされる。いくつかの実施形態において、図４のセットアップによれば、システムは、最新の時点でウェブサーバ及びＳＩＰサーバを処理ユニット４１０上で実行している。例えば、ＳＧＳＮノードとして稼動するために、処理ユニット４１０のいくつかを再構成することが望まれ得る。結果的に、ＳＧＳＮソフトウェアが処理ユニット４１０のいくつかの上にインストールされることが必要であろう。加えて、ロードバランサ４００が無線ネットワークからの接続をそれらをハンドリングする特定のアプリケーションプロセッサへと分散させ得るように、ロードバランサ４００上のソフトウェアをアップグレードする必要があり得る。
【００４７】
図５は、例示的な実施形態に係る新たなＳＧＳＮ関連ソフトウェアのチェック及びビルドの最終ステージを示すフローチャートである。上の例で説明したように、ウェブサーバ及びＳＩＰサーバのみを伴うシステムにおいて、ＳＧＳＮノードを実行するようにある処理ユニットを再構成することが望ましくあり得る。いくつかの実施形態によれば、サービス３００は、新たなＳＧＳＮソフトウェアバンドル５１０又は新たなソフトウェアと、当該新たなＳＧＳＮソフトウェアバンドル５１０に関連付けられるロードバランサルール５２０とを受信し得る。
【００４８】
いくつかの実施形態において、サービス３００は、ＳＧＳＮチェッカ及びコンパイラ５４０ａを通じて、新たなＳＧＳＮソフトウェアバンドル５１０を実行し得る。いくつかの実施形態において、ＳＧＳＮチェッカ及びコンパイラ５４０ａは、新たなＳＧＳＮソフトウェアを、例えばサーバ３００によりアクセス可能なデータベース内に記憶されているアクティブＳＧＳＮソフトウェア又は処理ユニット制約と比較し得る。ＳＧＳＮソフトウェアバンドル５１０がＳＧＳＮチェッカ５４０ａにより実行される上記比較を成功裏に完了すると、新たなＳＧＳＮソフトウェアバンドル５１０が１つ以上の処理ユニットにより理解可能なコードへとコンパイルされ、ＳＧＳＮロードモジュール５５０ａへとロードされ得る。
【００４９】
いくつかの実施形態において、ロードバランサルール５２０は、人間によっては読み取り不能だがサーバ３００上のルールコンパイラの次のステージによりパース可能な形式へと、プリコンパイルされる。例示的な実施形態では、新たなロードバランサルール５２０が既存のロードバランサルール５２５に対してチェックされる。既存のロードバランサルール５２５は、例えば、サーバ３００によりアクセス可能なデータベース内に記憶されていてよい。いくつかの実施形態では、ロードバランサチェッカ及びコンパイラ５４０ｂが存在し、ロードバランサチェッカ及びコンパイラ５４０ｂは、新たなロードバランサルール５２０を比較し及びコンパイルする。ロードバランサチェッカ及びコンパイラ５４０によって行われる上記比較は、新たなロードバランサルール５２０及び既存のロードバランサルール５２５のどの部分が共通的であるかを判定することを含み得る。上記比較は、新たなロードバランサルール５２０及び既存のロードバランサルール５２５の競合する部分を判定し及びレポートすることをも含み得る。これらロードバランサルールは、新たなソフトウェア又はアクティブソフトウェアに関連付けられるコード特性の一部として含まれることができる。
【００５０】
いくつかの実施形態において、ロードバランサチェッカ及びコンパイラ５４０は、新たなロードバランサルール５２０の全てを既存のロードバランサルール５２５と統合してもよく、又は、ルールのうちの共通ルールといったサブセットのみを統合してもよい。加えて、統合されたルールは、ロードバランサにより理解可能なコードへとコンパイルされてよく、そしてロードモジュール５５０ｂへとパッケージ化される。いくつかの実施形態では、エラーが発生した場合―例えば、いくつかの新たなロードバランサルール５２０が既存のロードバランサルール５２５と競合することになる場合―古いソフトウェアバージョンはターゲット処理ユニットから除去されないであろう。さらに、トランザクションを開始したユーザへとエラーレポートが返送されてもよい。
【００５１】
次に図６を参照すると、例示的な実施形態に係る配備サービスを用いた配備の方法を描いたフローチャートが示されている。いくつかの実施形態において、ステップＳ６００によれば、サービスは、新たな又は修正されたソフトウェアを受信する。上で説明したように、受信されるソフトウェアは、ソースコード形式、中間的な形式、コードを説明するマニフェストを伴うコンパイル済み形式などを含む多くの異なるフォーマットをとり得る。
【００５２】
いくつかの実施形態において、ステップＳ６１０によれば、サービスは、受信された新たなソフトウェアをデータベース内のデータと比較する。当該データは、例えば、その時点でターゲット処理ユニット上に配備されているアクティブソフトウェア、サービスにて過去に受信済みのソフトウェア、ソフトウェア及び／若しくはターゲット処理ユニットに関する制約、ソフトウェア及び／若しくはターゲット処理ユニットに関するコード特性などを含み得る。上記比較は、例えば、他の制約及びコード特性の評価に加えて、受信される新たなソフトウェアとアクティブソフトウェアとの間の不整合性（inconsistencies）についてのチェック、例えばオペレーティングシステム要件といった互換性（compatibility）についてのチェックなどを含み得る。
【００５３】
ステップＳ６２０によれば、いくつかの実施形態において、サービスは、新たなソフトウェアとアクティブソフトウェアとを、ステップＳ６１０の比較に基づいて、１つ以上のロードモジュールへと統合する。上で説明したように、新たなソフトウェアは、ソースコード形式又は中間的な形式であってよく、加えてアクティブソフトウェアとのロードモジュールへの統合の目的でコンパイルされる必要があり得る。さらに、上記比較に基づいて、新たなソフトウェアは、その全体として、又は新たなソフトウェア及びアクティブソフトウェアの間で共通するコンポーネントのみといったサブセットとして、アクティブソフトウェアと統合され、及びロードモジュールへとビルドされ得る。
【００５４】
いくつかの実施形態において、ステップＳ６３０によれば、１つ以上のロードモジュールが１つ以上のターゲット処理ユニットへと配備され得る。その配備は、例えば当該処理ユニットに関するデータベースに含まれるデータに基づき得る。
【００５５】
次に図７を参照すると、例示的な実施形態に係るサービスを概略的に描いた機能ブロック図が示されている。サービス３００は、プロセッサ又は他の処理手段、メモリ又は他の記憶手段、及びネットワークインタフェース又は他のネットワーキング手段を含み得る。例示的な実施形態において、デバイスは、データ処理システム７００（例えば、マイクロプロセッサ、ＡＳＩＣ（application  specific  integrated  circuits）、ＦＰＧＡ（Field-programmable  gate  arrays）、ロジック回路、及び他の回路、のうちの１つ以上）と、データストレージシステム７２５（例えば、ハードディスク、フラッシュメモリ又は他のストレージユニットといった不揮発性メモリ）と、ネットワークインタフェース７２０とを含む。
【００５６】
データストレージシステム７２５は、１つ以上の不揮発性ストレージデバイス及び／又は１つ以上の揮発性ストレージデバイス（例えば、ランダムアクセスメモリ（ＲＡＭ））を含み得る。サービス３００がデータ処理システム７００及びマイクロプロセッサを含む例においては、コンピュータ読取可能なプログラムコードがコンピュータ読取可能な媒体内に記憶されてよく、そうした媒体は、限定ではないものの、磁気媒体（例えば、ハードディスク）、光媒体（例えば、ＤＶＤ）、メモリデバイス（例えば、ランダムアクセスメモリ）などである。いくつかの実施形態において、コンピュータ読取可能なプログラムコードが、プロセッサにより実行された際にデバイスに上述したステップ群を実行させるように構成される。他の実施形態において、デバイスは、コードを必要とすることなく、上述したステップ群を実行するように構成される。
【００５７】
さらに、ネットワークインタフェース７２０は、ネットワーク７３０へと接続する手段を提供し得る。ネットワークインタフェース７２０は、有線及び／又は無線接続を用いて通信ネットワーク７３０との通信を可能とするように構成される。例示的な実施形態において、処理ユニットもまたネットワーク７３０へと接続される。ネットワーク７３０は、例えば、ＧＰＲＳコアネットワーク、インターネットなどであってよい。
【００５８】
上記サービスがサーバである実施形態において、サーバ３００は、データを送受信するためのネットワークインタフェース７２０と、サーバデバイス３００の動作を制御するためのプロセッサを伴うデータ処理システム７００と、コンピュータ読取可能な命令（即ち、ソフトウェア）及びデータを記憶するためのデータストレージシステム７２５とを含み得る。ネットワークインタフェース７２０及びデータストレージシステム７２５は、それらの動作を制御し及びそれらの間のデータのフローを制御するデータ処理システム７００へ連結され、データ処理システム７００と通信する。
【００５９】
ここで説明した方法は、上述したサービス３００において実装されることができる。そうした実施形態において、上記方法のアクションは、データストレージシステム７２５のコンピュータ読取可能な媒体内に記憶されデータ処理システム７００により実行可能なコンピュータ読取可能なプログラムコードの手段によって実現される。そうしたコンピュータ読取可能なプログラムコードは、当業者により認識されるように、例えば製造の期間中にインストールされ、又はより遅い時にアップロードされるなど、何らかの適した手法で実現され及び提供されることができる。その上、データストレージシステム７２５、データ処理システム７００及びネットワークインタフェース７２０は、ソフトウェア及び／又はファームウェアを含み、それらは、説明された方法を実装可能なように構成されることに加えて、ネットワーク内で動作する場合のサービスの一般的な動作を制御するように構成される。しかしながら、不必要な詳細を回避する目的のために、その一般的な動作に関して本開示ではこれ以上の説明を行わないこととする。
【００６０】
上で説明した実施形態は、いくつもの利点をもたらす。例えば、ソフトウェアパッケージ間の複雑な依存関係の解決を自動化するためにサービスを用いることで、ソフトウェアが複雑なデータセンタ及び／又はクラウド環境において配備される場合に、エラーの回数が低減される。加えて、サービスの使用は、新たなソフトウェアを特定の処理ユニットへと自動的にマッピングするルールの共通的なセットによって、新たなソフトウェアの配備を自動化することにより、ソフトウェア管理及び配備を簡略化し得る。
【００６１】
サービスの使用は、ソフトウェアインテグレーションにおける新たな可能性を導入し得る。例えば、新たなソフトウェアを、意図されるシステム向けにソフトウェアが適用可能であること及び意図される動作環境がソフトウェアと互換的であることを保証する制約のセットに対してチェックすることができる。加えて、サービスの使用は、ソフトウェアの込み入った統合を可能とし、それにより既存のソフトウェアとその新たなバージョンとの統合体（synthesis）が生み出され得る。
【００６２】
本発明の多様な実施形態を上で説明したが、それらは限定ではなく例示の手法でのみ提示されていることが理解されるべきである。よって、本発明の広がり及び範囲は、上述した例示的な実施形態のいずれによっても限定されるべきでない。その上、上述したエレメントの、それらの全てのあり得るバリエーションにおけるいずれの組み合わせも、ここで別段の記載が無く、又は文脈によって明らかに矛盾することが無い限り、本発明に包含される。
【００６３】
加えて、上で説明し図中に描いた処理は、一連のステップとして示されているが、これは説明のためになされたに過ぎない。従って、いくつかのステップが追加されてもよく、いくつかのステップが省略されてもよく、ステップの順序が再配置されてもよく、いくつかのステップが並列的に実行されてもよいことが予期される。
【図１】
0005965080.tif 000002
【図２】
0005965080.tif 000003
【図３】
0005965080.tif 000004
【図４】
0005965080.tif 000005
【図５】
0005965080.tif 000006
【図６】
0005965080.tif 000007
【図７】
0005965080.tif 000008