(57)【要約】【課題】ネットワーク・エッジ・コンピューティング向けのアプリケーション分割のための方法、システム、およびコンピュータ・プログラム製品を提供すること。【解決手段】アプリケーション分割ポイントを識別するステップは、ＥＪＢを呼び出すアプリケーションのクラスを識別するステップを含むことができる。アプリケーション分割ポイントを識別するステップは、エンタープライズ・データベースを更新するアプリケーションのクラスを識別するステップを含むことができる。アプリケーション分割ポイントを識別するステップは、ＪＣＡ機能を呼び出すアプリケーションのクラスを識別するステップを含むことができる。アプリケーション分割ポイントの分割タイプを識別するステップは、アプリケーション分割ポイントのサイロ分割タイプを識別するステップを含むことができる。アプリケーション分割ポイントの分割タイプを識別するステップは、アプリケーション分割ポイントのＥＪＢ分割タイプを識別するステップを含むことができる。【選択図】  図３
2008507014.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーション分割ポイントを識別するステップと、
前記アプリケーション分割ポイントの分割タイプを識別するステップと、
前記分割タイプに応じてアプリケーションをサブコンポーネントに分割するステップと、
サブコンポーネントをエッジ・ネットワークに移動するステップと、
を含む、ネットワーク・エッジ・コンピューティング向けのアプリケーション分割のための方法。
【請求項２】
アプリケーション分割ポイントを識別するステップが、ＥＪＢを呼び出す前記アプリケーションのクラスを識別するステップをさらに有する、請求項１に記載の方法。
【請求項３】
アプリケーション分割ポイントを識別するステップが、エンタープライズ・データベースを更新する前記アプリケーションのクラスを識別するステップをさらに有する、請求項１に記載の方法。
【請求項４】
アプリケーション分割ポイントを識別するステップが、ＪＣＡ機能を呼び出す前記アプリケーションのクラスを識別するステップをさらに有する、請求項１に記載の方法。
【請求項５】
前記アプリケーション分割ポイントの分割タイプを識別するステップが、前記アプリケーション分割ポイントのサイロ分割タイプを識別するステップをさらに有する、請求項１に記載の方法。
【請求項６】
前記アプリケーション分割ポイントの分割タイプを識別するステップが、前記アプリケーション分割ポイントのＥＪＢ分割タイプを識別するステップをさらに有する、請求項１に記載の方法。
【請求項７】
前記アプリケーション分割ポイントの分割タイプを識別するステップが、前記アプリケーション分割ポイントのファサード分割タイプを識別するステップをさらに有する、請求項１に記載の方法。
【請求項８】
前記アプリケーション分割ポイントがＥＪＢを呼び出す呼び出し側階層内のクラスを有し、
前記分割タイプがＥＪＢ分割タイプを有し、
前記分割タイプに応じて前記アプリケーションをサブコンポーネントに分割するステップが、前記呼び出し側階層内の前記クラスをクライアントＲＭＩモジュールおよびサーバＲＭＩモジュールに分割するステップをさらに有し、
サブコンポーネントをエッジ・ネットワークに移動するステップが、前記クライアントＲＭＩモジュールを前記エッジ・ネットワークに移動するステップをさらに有する、
請求項１に記載の方法。
【請求項９】
前記アプリケーション分割ポイントがＥＪＢを呼び出す呼び出し側階層内のクラスを有し、
前記分割タイプがＥＪＢ分割タイプを有し、
前記分割タイプに応じて前記アプリケーションをサブコンポーネントに分割するステップが、前記呼び出し側階層内の前記クラスをクライアント・ウェブ・サービス・モジュールおよびサーバ・ウェブ・サービス・モジュールに分割するステップをさらに有し、
サブコンポーネントをエッジ・ネットワークに移動するステップが、前記クライアント・ウェブ・サービス・モジュールを前記エッジ・ネットワークに移動するステップをさらに有する、
請求項１に記載の方法。
【請求項１０】
前記アプリケーション分割ポイントがエンタープライズ・データベースを更新する呼び出し側階層内のクラスを有し、
前記分割タイプがサイロ分割タイプを有し、
前記分割タイプに応じて前記アプリケーションをサブコンポーネントに分割するステップが、前記呼び出し側階層内のすべてのクラスを１つのサブコンポーネントとしてサイロ・モジュールに集約するステップをさらに有し、
サブコンポーネントをエッジ・ネットワークに移動するステップが、前記サイロ・モジュールを前記エッジ・ネットワークに移動するステップをさらに有する、
請求項１に記載の方法。
【請求項１１】
前記アプリケーション分割ポイントが、ＥＪＢを呼び出す、およびＨＴＴＰ機能を呼び出す、呼び出し側階層内のクラスを有し、
前記分割タイプがサイロ分割タイプを有し、
前記分割タイプに応じて前記アプリケーションをサブコンポーネントに分割するステップが、前記呼び出し側階層内のすべてのクラスを１つのサブコンポーネントとしてサイロ・モジュールに集約するステップをさらに有し、
サブコンポーネントをエッジ・ネットワークに移動するステップが、前記サイロ・モジュールを前記エッジ・ネットワークに移動するステップをさらに有する、
請求項１に記載の方法。
【請求項１２】
前記アプリケーション分割ポイントが、ＪＣＡ機能を呼び出す、およびＨＴＴＰ機能を呼び出す、呼び出し側階層内のクラスを有し、
前記分割タイプがサイロ分割タイプを有し、
前記分割タイプに応じて前記アプリケーションをサブコンポーネントに分割するステップが、前記呼び出し側階層内のすべてのクラスを１つのサブコンポーネントとしてサイロ・モジュールに集約するステップをさらに有し、
サブコンポーネントをエッジ・ネットワークに移動するステップが、前記サイロ・モジュールを前記エッジ・ネットワークに移動するステップをさらに有する、
請求項１に記載の方法。
【請求項１３】
前記アプリケーション分割ポイントが、潜在的分割ポイントとして複数回リストされた呼び出し側階層内のクラスを有し、
前記分割タイプがファサード分割タイプを有し、
前記分割タイプに応じて前記アプリケーションをサブコンポーネントに分割するステップが、前記呼び出し側階層内の前記クラスをクライアント・ウェブ・サービス・モジュールおよびサーバ・ウェブ・サービス・モジュールに分割するステップをさらに有し、
サブコンポーネントをエッジ・ネットワークに移動するステップが、前記クライアント・ウェブ・サービス・モジュールを前記エッジ・ネットワークに移動するステップをさらに有する、
請求項１に記載の方法。
【請求項１４】
アプリケーション分割ポイントを識別するための手段と、
前記アプリケーション分割ポイントの分割タイプを識別するための手段と、
前記分割タイプに応じて前記アプリケーションをサブコンポーネントに分割するための手段と、
サブコンポーネントをエッジ・ネットワークに移動するための手段と、
を有する、ネットワーク・エッジ・コンピューティング向けのアプリケーション分割のためのシステム。
【請求項１５】
アプリケーション分割ポイントを識別するための手段が、ＥＪＢを呼び出す前記アプリケーションのクラスを識別するための手段をさらに有する、請求項１４に記載のシステム。
【請求項１６】
アプリケーション分割ポイントを識別するための手段が、エンタープライズ・データベースを更新する前記アプリケーションのクラスを識別するための手段をさらに有する、請求項１４に記載のシステム。
【請求項１７】
アプリケーション分割ポイントを識別するための手段が、ＪＣＡ機能を呼び出す前記アプリケーションのクラスを識別するための手段をさらに有する、請求項１４に記載のシステム。
【請求項１８】
前記アプリケーション分割ポイントの分割タイプを識別するための手段が、前記アプリケーション分割ポイントのサイロ分割タイプを識別するための手段をさらに有する、請求項１４に記載のシステム。
【請求項１９】
前記アプリケーション分割ポイントの分割タイプを識別するための手段が、前記アプリケーション分割ポイントのＥＪＢ分割タイプを識別するための手段をさらに有する、請求項１４に記載のシステム。
【請求項２０】
前記アプリケーション分割ポイントの分割タイプを識別するための手段が、前記アプリケーション分割ポイントのファサード分割タイプを識別するための手段をさらに有する、請求項１４に記載のシステム。
【請求項２１】
前記アプリケーション分割ポイントがＥＪＢを呼び出す呼び出し側階層内のクラスを有し、
前記分割タイプがＥＪＢ分割タイプを有し、
前記分割タイプに応じて前記アプリケーションをサブコンポーネントに分割するための手段が、前記呼び出し側階層内の前記クラスをクライアントＲＭＩモジュールおよびサーバＲＭＩモジュールに分割するための手段をさらに有し、
サブコンポーネントをエッジ・ネットワークに移動するための手段が、前記クライアントＲＭＩモジュールを前記エッジ・ネットワークに移動するための手段をさらに有する、請求項１４に記載のシステム。
【請求項２２】
コンピュータ上で実行された場合、請求項１から１３に記載の発明を実行するためのソフトウェア・コード部分を有する、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野はデータ処理であり、とりわけ、ネットワーク・エッジ・コンピューティング向けのアプリケーション分割のための方法、システム、および製品である。
【背景技術】
【０００２】
インターネットおよびワールド・ワイド・ウェブは、主としてデータ通信用のクライアント・サーバ・モデルで動作する。転送されるコンテンツの複雑性、クライアントの多様性は、増加の一途をたどっている。複雑で変化に富むコンテンツを、多様化する一方のクライアント・デバイスに効率良く配信することはますます困難になってきている。需要が増加した結果、新しいタイプのデータをそれぞれ処理するための新しいデバイス、新しいサーバ、新しいクライアントも増え続けている。
【０００３】
概念上のクライアント・サーバ・モデルでは、クライアントはサーバに情報を要求し、サーバはクライアントが要求したフォーマットで情報を返送する。このコンテンツ配信システムは、「エンド」での処理にのみ集中すればよいことから、かつては理想的であると考えられた。しかしながら、現実の要求はさらに高く、それに応える新しいサービスが出現した。クライアントに近いキャッシュおよびエッジ配信ポイントでのキャッシュは、オペレーションを高速化し、ネットワーク負荷を軽くする。ゲートウェイ（無線デバイス用など）は、多様なクライアント・グループの接続を助ける。コンテンツ配信ネットワーク（ＣＤＮ）は、膨大なインターネット・コンテンツをクライアント向けにより適切に編成する。しかしながら、これらのサービスはすべて互いに無関係に成長してきたため、拡張および新サービスはベンダ固有の管理困難なものになっている。多様なクライアント・デバイスの進化に伴い、コンテンツ・プロバイダは、あらゆるデバイス、携帯情報端末（ＰＤＡ）、パーソナル・コンピュータ（ＰＣ）、携帯電話、ラップトップ・コンピュータ、ｅブック・リーダなどに向けて、あらゆる必要なフォーマットでデータを提供せざるを得ない。サーバは、使用可能なフォーマットとクライアントが受け入れ可能なフォーマットとの差に対処せざるを得ない。
【０００４】
ネットワーク・エッジ・アーキテクチャは、「ネットワーク内」サービスで増大してきな複雑性に対処するための手段を提供する。「ネットワーク・エッジ」という用語は、一般に、インターネットにおけるエンティティの物理的境界またはネットワーク境界を表すために使用される。たとえば、ネットワーク・エッジは、インターネット・サービス・プロバイダ（「ＩＳＰ」）またはエンタープライズ・ネットワークのイントラネットのアクセス・ポイントのセットとすることができる。「ネットワーク・エッジ」は、国境、適切な言語またはフォーマットにデータを変換することが有用なポイントなどの、コンテンツ配信の顕著なポイントを意味する場合もある。ネットワーク・エッジとは、コンテンツ配信の経路においてコンテンツ処理が発生する可能性のあるポイントである。
【０００５】
ネットワーク・エッジ・アーキテクチャは、クライアントとサーバとの間でデータを転送するためにコンテンツ配信プロセスの一部を実行するための、技術の集合体である。そのアーキテクチャは、コンテンツ配信機能を実行するためのソフトウェアおよびハードウェア開発の統一方式である。ネットワーク・エッジ・アーキテクチャは、データ・トランスコードなどの操作を可能にする。コンテンツ・プロバイダは、クライアント・デバイスのタイプにかかわらず、単一の標準フォーマットでデータを提供することが可能であり、ネットワーク・エッジ・アーキテクチャは、デバイスに適した提示向けのフォーマットを提供しやすくする。たとえば、コンテンツ・プロバイダは、コンテンツを要求する可能性のあるクライアント・デバイスのタイプにかかわらず、単一のフォーマットでコンテンツを格納することが可能であり、ネットワーク・エッジ技術は、このコンテンツを受信側デバイス用に再フォーマットすることができる。エッジ・サーバまたはエッジ・ネットワーク上で実行されるルール・ベースのサービスは、様々なデバイス向けの標準化プロトコルに基づいて適切なデータ変換を行う。
【０００６】
動画配信の例を考えてみる。ネットワーク・エッジ技術を使用する場合、消費者は自分達のデバイスおよび自分達の個人的な好みに合ったフォーマットで動画を見る。データ変換の負担はコンテンツ・プロバイダおよびサーバにはかからないため、コンテンツ・プロバイダは動画が視聴されるデバイスについて気を配る必要はない。代わって、データ変換はネットワーク・エッジ側で集約される。
【０００７】
従来のクライアント／サーバ・アーキテクチャでは、顧客情報およびクライアント・デバイス・インターフェースは、クライアント・デバイスまたはコンテンツ・サーバ上で管理しなければならなかった。すなわち、顧客にはデータの再入力が必要とされ、サーバはクライアント・デバイスが携帯電話、ＰＤＡ、ラップトップ、パーソナル・コンピュータ、などのいずれであるかといった、クライアントの多様性の問題に対処する必要があった。
【０００８】
プロバイダからクライアントへのコンテンツの転送および再公式化は、いくつかの段階で発生する。クライアントの要求は、追加の必要データがクライアントから入力された場合に、サーバ内に保持された既知の情報に従って修正、すなわち個別設定される。たとえばクライアントは、ワールド・ワイド・ウェブまたは電子メール・サービスへのアクセスに、携帯電話を使用している場合がある。その場合サーバは、その携帯電話のインターフェースに適したコンテンツのみを返送し、顧客についての詳細を得るために音声メニューまたはキーボード・メニューを介して進行する必要がある。ネットワーク・エッジ・アーキテクチャでは、エッジ・サーバは、適切な携帯電話インターフェースを指定するようにクライアントの要求を修正する。その後、エッジ・サーバがコンテンツ・サーバと通信して顧客データを記入することにより、顧客の対話を簡略化する。次にエッジ・サーバは、コンテンツ・サーバへの要求を修正してデータを取得し、その後このデータが、クライアントのデバイスに合うようにエッジ・サーバによって再公式化される。その後、適切なコンテンツが、クライアント・デバイスに好適な様式でクライアント・デバイスにダウンロードされる。
【０００９】
ネットワーク・エッジ・サーバは、クライアントとコンテンツ・サーバとの間に常駐し、顧客とコンテンツ・プロバイダの両方に対してエージェントの役割を果たす。クライアントがコンテンツに関する要求を送信した場合、ネットワーク・エッジ・サーバは顧客の情報に従い、通常は事前に定義されたルールのセットに基づいてこの要求を修正する。次にエッジ・サーバは、おそらくはあらかじめ示されたコンテンツ・サーバに対する何らかの交換と共に、修正された要求をコンテンツ・サーバに送信する。コンテンツ・サーバは、要求の修正またはコンテンツの再公式化といった負担から解放される。コンテンツの変換が必要であれば、標準プロトコルを使用するネットワーク・エッジ・サーバ側で発生することになる。この方法では、ネットワーク・エッジ・アーキテクチャによって、様々なデバイスが必要とする様々なフォーマットに対処するためにコンテンツ・プロバイダが必要とする情報が簡略化される。
【００１０】
ネットワーク・エッジ・アーキテクチャは、従来のクライアント／サーバ・モデルからより効率的なクライアント／エッジ／サーバ・モデルへの転換の高まりを見せている。コンテンツ・レベルのサービスがネットワーク・エッジ側で実行される場合、コンテンツ・プロバイダは個別設定されたスケーラブルなサービスを提供することができる。ネットワーク・エッジ・アーキテクチャでは、現在クライアントとサーバの両方が果たさざるを得ない役割を、エッジが果たす。従来のクライアント／サーバ・アーキテクチャではコンテンツ・サーバまたはアプリケーション・サーバに全面的にインストールされたアプリケーション・ソフトウェアが、ここではエッジ・ネットワークに導入することができる。さらに、従来のクライアント／サーバ・アーキテクチャではコンテンツ・サーバまたはアプリケーション・サーバに全面的にインストールされたアプリケーション・ソフトウェアが、ここではコンテンツ・サーバとエッジとの間で分割可能であり、多くの場合は分割しなければならない。アプリケーションがエッジへの導入に対してどのような準備をするべきであるか、および必要な場合はアプリケーションをどのように分割するかを識別するための、自動化ツールを有することが有用であろう。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明の目的は、ネットワーク・エッジ・コンピューティング向けのアプリケーション分割のための方法、システム、およびコンピュータ・プログラム製品を提供することである。
【課題を解決するための手段】
【００１２】
諸実施形態は、アプリケーション分割ポイントを識別するステップと、アプリケーション分割ポイントの分割タイプを識別するステップと、分割タイプに応じてアプリケーションをサブコンポーネントに分割するステップと、サブコンポーネントをエッジ・ネットワークに移動するステップとを含む。多くの実施形態は、管理するデータを含むアプリケーションが大きすぎてエッジ・ネットワークに収まらないかどうかを判別するステップを含む。
【００１３】
典型的な実施形態では、アプリケーションを分割するステップは、ユーザ・プリファレンスに依存してアプリケーションを分割するステップを含む。多くの実施形態では、アプリケーション分割ポイントを識別するステップは、ＥＪＢを呼び出すアプリケーションのクラスを識別するステップを含む。多くの実施形態では、アプリケーション分割ポイントを識別するステップは、エンタープライズ・データベースを更新するアプリケーションのクラスを識別するステップを含む。多くの実施形態では、アプリケーション分割ポイントを識別するステップは、ＪＣＡ機能を呼び出すアプリケーションのクラスを識別するステップを含む。
【００１４】
多くの実施形態では、アプリケーション分割ポイントの分割タイプを識別するステップは、アプリケーション分割ポイントのサイロ分割タイプを識別するステップを含む。典型的な実施形態では、アプリケーション分割ポイントの分割タイプを識別するステップは、アプリケーション分割ポイントのＥＪＢ分割タイプを識別するステップを含む。多くの実施形態では、アプリケーション分割ポイントの分割タイプを識別するステップは、アプリケーション分割ポイントのファサード分割タイプを識別するステップを含む。
【００１５】
いくつかの実施形態では、アプリケーション分割ポイントはＥＪＢを呼び出す呼び出し側階層内のクラスを含み、分割タイプはＥＪＢ分割タイプを含む。いくつかのこうした実施形態では、分割タイプに応じてアプリケーションをサブコンポーネントに分割するステップは、呼び出し側階層内のクラスをクライアントＲＭＩモジュールおよびサーバＲＭＩモジュールに分割するステップを含み、サブコンポーネントをエッジ・ネットワークに移動するステップは、クライアントＲＭＩモジュールをエッジ・ネットワークに移動するステップを含む。
【００１６】
いくつかの実施形態では、アプリケーション分割ポイントはＥＪＢを呼び出す呼び出し側階層内のクラスを含み、分割タイプはＥＪＢ分割タイプを含む。いくつかのこうした実施形態では、分割タイプに応じてアプリケーションをサブコンポーネントに分割するステップは、呼び出し側階層内のクラスをクライアント・ウェブ・サービス・モジュールおよびサーバ・ウェブ・サービス・モジュールに分割するステップを含み、サブコンポーネントをエッジ・ネットワークに移動するステップは、クライアント・ウェブ・サービス・モジュールをエッジ・ネットワークに移動するステップを含む。
【００１７】
いくつかの実施形態では、アプリケーション分割ポイントはエンタープライズ・データベースを更新する呼び出し側階層内のクラスを含み、分割タイプはサイロ分割タイプを含む。いくつかのこうした実施形態では、分割タイプに応じてアプリケーションをサブコンポーネントに分割するステップは、呼び出し側階層内のすべてのクラスを１つのサブコンポーネントとしてサイロ・モジュールに集約するステップを含み、サブコンポーネントをエッジ・ネットワークに移動するステップは、サイロ・モジュールをエッジ・ネットワークに移動するステップを含む。
【００１８】
いくつかの実施形態では、アプリケーション分割ポイントは、ＥＪＢを呼び出す、およびＨＴＴＰ機能を呼び出す、呼び出し側階層内のクラスを含み、分割タイプはサイロ分割タイプを含む。いくつかのこうした実施形態では、分割タイプに応じてアプリケーションをサブコンポーネントに分割するステップは、呼び出し側階層内のすべてのクラスを１つのサブコンポーネントとしてサイロ・モジュールに集約するステップを含み、サブコンポーネントをエッジ・ネットワークに移動するステップは、サイロ・モジュールをエッジ・ネットワークに移動するステップを含む。
【００１９】
いくつかの実施形態では、アプリケーション分割ポイントは、ＪＣＡ機能を呼び出す、およびＨＴＴＰ機能を呼び出す、呼び出し側階層内のクラスを含み、分割タイプはサイロ分割タイプを含む。いくつかのこうした実施形態では、分割タイプに応じてアプリケーションをサブコンポーネントに分割するステップは、呼び出し側階層内のすべてのクラスを１つのサブコンポーネントとしてサイロ・モジュールに集約するステップを含み、サブコンポーネントをエッジ・ネットワークに移動するステップは、サイロ・モジュールをエッジ・ネットワークに移動するステップを含む。
【００２０】
いくつかの実施形態では、アプリケーション分割ポイントは、潜在的分割ポイントとして複数回リストされた呼び出し側階層内のクラスを含み、分割タイプはファサード分割タイプを含む。いくつかのこうした実施形態では、分割タイプに応じてアプリケーションをサブコンポーネントに分割するステップは、呼び出し側階層内のクラスをクライアント・ウェブ・サービス・モジュールおよびサーバ・ウェブ・サービス・モジュールに分割するステップを含み、サブコンポーネントをエッジ・ネットワークに移動するステップは、クライアント・ウェブ・サービス・モジュールをエッジ・ネットワークに移動するステップを含む。
【００２１】
第１の態様から見ると、本発明は、ネットワーク・エッジ・コンピューティング向けのアプリケーション分割のための方法を提供し、この方法は、アプリケーション分割ポイントを識別するステップと、アプリケーション分割ポイントの分割タイプを識別するステップと、分割タイプに応じてアプリケーションをサブコンポーネントに分割するステップと、サブコンポーネントをエッジ・ネットワークに移動するステップとを有する。
【００２２】
好ましくは、本発明は、アプリケーション分割ポイントを識別するステップが、ＥＪＢを呼び出すアプリケーションのクラスを識別するステップをさらに有する、方法を提供する。
【００２３】
好ましくは、本発明は、アプリケーション分割ポイントを識別するステップが、エンタープライズ・データベースを更新するアプリケーションのクラスを識別するステップをさらに有する、方法を提供する。
【００２４】
好ましくは、本発明は、アプリケーション分割ポイントを識別するステップが、ＪＣＡ機能を呼び出すアプリケーションのクラスを識別するステップをさらに有する、方法を提供する。
【００２５】
好ましくは、本発明は、アプリケーション分割ポイントの分割タイプを識別するステップが、アプリケーション分割ポイントのサイロ分割タイプを識別するステップをさらに有する、方法を提供する。
【００２６】
好ましくは、本発明は、アプリケーション分割ポイントの分割タイプを識別するステップが、アプリケーション分割ポイントのＥＪＢ分割タイプを識別するステップをさらに有する、方法を提供する。
【００２７】
好ましくは、本発明は、アプリケーション分割ポイントの分割タイプを識別するステップが、アプリケーション分割ポイントのファサード分割タイプを識別するステップをさらに有する、方法を提供する。
【００２８】
好ましくは、本発明は、アプリケーション分割ポイントがＥＪＢを呼び出す呼び出し側階層内のクラスを有し、分割タイプがＥＪＢ分割タイプを有し、分割タイプに応じてアプリケーションをサブコンポーネントに分割するステップが、呼び出し側階層内のクラスをクライアントＲＭＩモジュールおよびサーバＲＭＩモジュールに分割するステップをさらに有し、サブコンポーネントをエッジ・ネットワークに移動するステップが、クライアントＲＭＩモジュールをエッジ・ネットワークに移動するステップをさらに有する、方法を提供する。
【００２９】
好ましくは、本発明は、アプリケーション分割ポイントがＥＪＢを呼び出す呼び出し側階層内のクラスを有し、分割タイプがＥＪＢ分割タイプを有し、分割タイプに応じてアプリケーションをサブコンポーネントに分割するステップが、呼び出し側階層内のクラスをクライアント・ウェブ・サービス・モジュールおよびサーバ・ウェブ・サービス・モジュールに分割するステップをさらに有し、サブコンポーネントをエッジ・ネットワークに移動するステップが、クライアント・ウェブ・サービス・モジュールをエッジ・ネットワークに移動するステップをさらに有する、方法を提供する。
【００３０】
好ましくは、本発明は、アプリケーション分割ポイントがエンタープライズ・データベースを更新する呼び出し側階層内のクラスを有し、分割タイプがサイロ分割タイプを有し、分割タイプに応じてアプリケーションをサブコンポーネントに分割するステップが、呼び出し側階層内のすべてのクラスを１つのサブコンポーネントとしてサイロ・モジュールに集約するステップをさらに有し、サブコンポーネントをエッジ・ネットワークに移動するステップが、サイロ・モジュールをエッジ・ネットワークに移動するステップをさらに有する、方法を提供する。
【００３１】
好ましくは、本発明は、アプリケーション分割ポイントが、ＥＪＢを呼び出す、およびＨＴＴＰ機能を呼び出す、呼び出し側階層内のクラスを有し、分割タイプがサイロ分割タイプを有し、分割タイプに応じてアプリケーションをサブコンポーネントに分割するステップが、呼び出し側階層内のすべてのクラスを１つのサブコンポーネントとしてサイロ・モジュールに集約するステップをさらに有し、サブコンポーネントをエッジ・ネットワークに移動するステップが、サイロ・モジュールをエッジ・ネットワークに移動するステップをさらに有する、方法を提供する。
【００３２】
好ましくは、本発明は、アプリケーション分割ポイントが、ＪＣＡ機能を呼び出す、およびＨＴＴＰ機能を呼び出す、呼び出し側階層内のクラスを有し、分割タイプがサイロ分割タイプを有し、分割タイプに応じてアプリケーションをサブコンポーネントに分割するステップが、呼び出し側階層内のすべてのクラスを１つのサブコンポーネントとしてサイロ・モジュールに集約するステップをさらに有し、サブコンポーネントをエッジ・ネットワークに移動するステップが、サイロ・モジュールをエッジ・ネットワークに移動するステップをさらに有する、方法を提供する。
【００３３】
好ましくは、本発明は、アプリケーション分割ポイントが、潜在的分割ポイントとして複数回リストされた呼び出し側階層内のクラスを有し、分割タイプがファサード分割タイプを有し、分割タイプに応じてアプリケーションをサブコンポーネントに分割するステップが、呼び出し側階層内のクラスをクライアント・ウェブ・サービス・モジュールおよびサーバ・ウェブ・サービス・モジュールに分割するステップをさらに有し、サブコンポーネントをエッジ・ネットワークに移動するステップが、クライアント・ウェブ・サービス・モジュールをエッジ・ネットワークに移動するステップをさらに有する、方法を提供する。
【００３４】
第２の態様から見ると、本発明は、ネットワーク・エッジ・コンピューティング向けのアプリケーション分割のためのシステムを提供し、このシステムは、アプリケーション分割ポイントを識別するための手段と、アプリケーション分割ポイントの分割タイプを識別するための手段と、分割タイプに応じてアプリケーションをサブコンポーネントに分割するための手段と、サブコンポーネントをエッジ・ネットワークに移動するための手段とを有する。
【００３５】
好ましくは、本発明は、アプリケーション分割ポイントを識別するための手段が、ＥＪＢを呼び出すアプリケーションのクラスを識別するための手段をさらに有する、システムを提供する。
【００３６】
好ましくは、本発明は、アプリケーション分割ポイントを識別するための手段が、エンタープライズ・データベースを更新するアプリケーションのクラスを識別するための手段をさらに有する、システムを提供する。
【００３７】
好ましくは、本発明は、アプリケーション分割ポイントを識別するための手段が、ＪＣＡ機能を呼び出すアプリケーションのクラスを識別するための手段をさらに有する、システムを提供する。
【００３８】
好ましくは、本発明は、アプリケーション分割ポイントの分割タイプを識別するための手段が、アプリケーション分割ポイントのサイロ分割タイプを識別するための手段をさらに有する、システムを提供する。
【００３９】
好ましくは、本発明は、アプリケーション分割ポイントの分割タイプを識別するための手段が、アプリケーション分割ポイントのＥＪＢ分割タイプを識別するための手段をさらに有する、システムを提供する。
【００４０】
好ましくは、本発明は、アプリケーション分割ポイントの分割タイプを識別するための手段が、アプリケーション分割ポイントのファサード分割タイプを識別するための手段をさらに有する、システムを提供する。
【００４１】
好ましくは、本発明は、アプリケーション分割ポイントがＥＪＢを呼び出す呼び出し側階層内のクラスを有し、分割タイプがＥＪＢ分割タイプを有し、分割タイプに応じてアプリケーションをサブコンポーネントに分割するための手段が、呼び出し側階層内のクラスをクライアントＲＭＩモジュールおよびサーバＲＭＩモジュールに分割するための手段をさらに有し、サブコンポーネントをエッジ・ネットワークに移動するための手段が、クライアントＲＭＩモジュールをエッジ・ネットワークに移動するための手段をさらに有する、システムを提供する。
【００４２】
第３の態様から見ると、本発明は、デジタル・コンピュータの内部メモリにロード可能であり、コンピュータ上で実行された場合、前述のように本発明を実行するためのソフトウェア・コード部分を有する、コンピュータ・プログラム製品を提供する。
【００４３】
次に本発明の諸実施形態について、添付の図面を参照しながら単なる例として詳細に説明する。
【発明を実施するための最良の形態】
【００４４】
本明細書では、本発明について、かなりの部分をネットワーク・エッジ・コンピューティング向けのアプリケーション分割のための方法に関して説明する。しかしながら、当業者であれば、開示された方法に従って動作させるための好適なプログラミング手段を含むコンピュータ・システムであればいずれも、本発明の範囲内に入ることを理解されよう。好適なプログラミング手段は、たとえば、コンピュータ・メモリに結合された処理ユニットおよび算術論理回路からなるシステムを含むコンピュータ・システムに、本発明の方法の諸ステップを実行するように命じるための任意の手段を含み、このシステムはコンピュータ・メモリに格納する機能を有し、このコンピュータ・メモリは、データと、処理ユニットによる実行用に本発明の方法の諸ステップがプログラムされたプログラム命令とを、格納するように構成された電子回路を含む。
【００４５】
本発明は、ディスケットまたは他の記録媒体などの、任意の好適なデータ処理システムで使用するためのコンピュータ・プログラム製品において具体化することも可能である。コンピュータ・プログラム製品の諸実施形態は、磁気媒体、光媒体、または他の好適な媒体を含む、マシン読み取り可能情報用の任意の記録媒体を使用して実施することができる。当業者であれば、好適なプログラミング手段を有するいずれのコンピュータ・システムも、プログラム製品において具体化された本発明の方法の諸ステップを実行することが可能となることを、容易に理解されるであろう。本明細書で説明される例示的諸実施形態のほとんどがコンピュータ・ハードウェアにインストールされて実行されるソフトウェアに向けられているが、当業者であれば、ファームウェアまたはハードウェアとして実施される代替の諸実施形態が本発明の範囲内に十分収まることを、容易に理解されるであろう。
【００４６】
ネットワーク・エッジ・コンピューティング向けのアプリケーション分割
図１から始まる添付の図面を参照しながら、ネットワーク・エッジ・コンピューティング向けのアプリケーション分割のための方法、システム、および製品について説明する。図１は、本発明の諸実施形態に従ったネットワーク・エッジ・コンピューティング向けのアプリケーション分割のための例示的システムを示すシステム図である。図１のシステムは、エッジ・ネットワーク（１０６）として構成されたいくつかのエッジ・サーバに、ワイド・エリア・ネットワーク（１０１）を介して接続された、いくつかの例示的クライアント・デバイス（１２６）を含む。エッジ・サーバは、エンタープライズ・サーバ（１２４）として表されたいくつかのアプリケーションおよびコンテンツ・サーバに、ローカル・エリア・ネットワーク（１０３）を介して接続される。
【００４７】
図１の例におけるクライアント（１２６）は、有線接続を介してワイド・エリア・ネットワーク（１０１）に接続されたパーソナル・コンピュータ（１０８）と、無線接続（１１４）を介してワイド・エリア・ネットワーク（１０１）に接続された無線のネットワーク対応携帯情報端末（「ＰＤＡ」）（１１２）と、無線接続（１１６）を介してワイド・エリア・ネットワーク（１０１）に接続された携帯電話（１１０）とを含む。
【００４８】
図１のシステムは、エッジ・ネットワーク（１０６）にインストールするためのエッジ・モジュール（１３４）およびエンタープライズ・ネットワーク（１２４）にインストールするためのエンタープライズ・モジュール（１３２）という、２つのモジュールに分割するために、開発システム（１２９）で開発中のアプリケーション・プログラム（１３０）を含む。開発システム（１２９）は、Ｊａｖａ(登録商標)  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ（「ＳＤＫ」）などのソフトウェア開発環境を有し、さらに一般に、アプリケーション分割ポイントを識別し、アプリケーション分割ポイントの分割タイプを識別し、分割タイプに応じてアプリケーションをサブコンポーネントに分割し、そしていくつかのサブコンポーネントをエッジ・ネットワークへ移動する、分析モジュールおよびスプリッタ（１２８）を有する、コンピュータである。
【００４９】
さらに詳しく説明すると、図２は、一般に、アプリケーション分割ポイントを識別し、アプリケーション分割ポイントの分割タイプを識別し、分割タイプに応じてアプリケーションをサブコンポーネントに分割し、そしていくつかのサブコンポーネントをエッジ・ネットワークへ移動する、例示的ソフトウェア開発システムを示すブロック図である。図２の例示的システムは、一般に、エンタープライズ・データベースを更新するためにＪａｖａ(登録商標)  ＤａｔａＢａｓｅ  Ｃｏｎｎｅｃｔｉｖｉｔｙ（「ＪＤＢＣ」）機能を呼び出すクラスとして、アプリケーション分割ＴＭポイントを識別するように動作する、ＪＤＢＣ分析モジュール（２０２）を含む。こうしたＪＤＢＣ機能への呼び出しは、たとえば、「ｅｘｅｃｕｔｅＵｐｄａｔｅ」または「ｅｘｅｃｕｔｅＩｎｓｅｒｔ」と名付けられたＪａｖａ(登録商標)メンバ・メソッドへの呼び出しとして表すことができる。
【００５０】
図２の例示的システムは、一般に、Ｅｎｔｅｒｐｒｉｓｅ  Ｊａｖａ(登録商標)  Ｂｅａｎｓ（「ＥＪＢ」）を呼び出すクラスとしてアプリケーション分割ポイントを識別するように動作する、ＥＪＢ分析モジュール（２０４）も含む。ＥＪＢを呼び出すクラスは、たとえば、ＥＪＢ  Ｐｒｏｐｅｒｔｉｅｓ（）コンストラクタ、ＩｎｉｔｉａｌＣｏｎｔｅｘｔＯコンストラクタなどへの呼び出しを使用してセッションＥＪＢを構成するクラスとして、識別することができる。
【００５１】
図２の例示的システムは、一般に、Ｊａｖａ(登録商標)  Ｃｏｎｎｅｃｔｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（「ＪＣＡ」）機能を呼び出すクラスとしてアプリケーション分割ポイントを識別するように動作する、ＪＣＡ  ＴＭ分析モジュール（２０６）も含む。ＪＣＡ機能を呼び出すクラスは、たとえば、ＪＣＡ  ＣｏｎｎｅｃｔｉｏｎＦａｃｔｏｒｙ（）、ｃｒｅａｔｅＩｎｔｅｒａｃｔｉｏｎＯメソッド、Ｉｎｔｅｒａｃｔｉｏｎ．ｅｘｅｃｕｔｅ（）メソッドなどへの呼び出しを使用するクラスとして、識別することができる。
【００５２】
図２の例で、分析モジュール（２０２、２０４、および２０６）は、分割ポイントを潜在的分割ポイントのリストとして識別する。そのように識別されたそれぞれの分割ポイントについて、分割タイプ分析モジュール（２０８）は分割タイプを識別する。分割タイプ分析モジュールは、一般に、ＥＪＢ機能を呼び出すクラスである分割ポイントの、ＥＪＢ分割タイプを識別するように動作する。分割タイプ分析モジュールは、たとえばＪＤＢＣ呼び出しを介してエンタープライズ・データベースを更新するクラスである分割ポイントの、サイロ分割タイプを識別するように動作する。分割タイプ分析モジュールは、ＨＴＴＰ呼び出しを実行するクラスである分割ポイントの、サイロ分割タイプを識別するように動作する。分割タイプ分析モジュールは、分析モジュール（２０２、２０４、および２０６）によって潜在的分割ポイントとして複数回識別されたクラスである分割ポイントの、ファサード分割タイプを識別するように動作する。
【００５３】
図２の例示的システムは、一般に、各分割ポイントの分割タイプに応じて識別された分割ポイントでアプリケーションを分割することによって、アプリケーション（１３０）のサブコンポーネントを作成する作業を実行するソフトウェア・モジュールである、スプリッタ（２１０）を含む。ＥＪＢ分割タイプの場合、スプリッタ（２１０）はアプリケーション（１３０）をクライアントＲＭＩ（「Ｊａｖａ(登録商標)  Ｒｅｍｏｔｅ  Ｍｅｔｈｏｄ  Ｉｎｖｏｃａｔｉｏｎ」）モジュールおよびサーバＲＭＩモジュールに分割し、クライアントＲＭＩモジュールをＥＪＢエッジ・モジュール（２１６）としてエッジ・ネットワークにＴＭ移動し、サーバＲＭＩモジュールをＥＪＢエンタープライズ・モジュール（２１８）としてエンタープライズ・ネットワークに移動することができる。別の方法として、ＥＪＢ分割タイプの場合、スプリッタ（２１０）はアプリケーション（１３０）をクライアント・ウェブ・サービス・モジュールおよびサーバ・ウェブ・サービス・モジュールに分割し、クライアント・ウェブ・サービス・モジュールをＥＪＢエッジ・モジュール（２１６）としてエッジ・ネットワークに移動し、サーバ・ウェブ・サービス・モジュールをＥＪＢエンタープライズ・モジュール（２１８）としてエンタープライズ・ネットワークに移動することができる。同様に、ファサード分割タイプの場合、スプリッタ（２１０）はアプリケーション（１３０）をクライアント・ウェブ・サービス・モジュールおよびサーバ・ウェブ・サービス・モジュールに分割し、クライアント・ウェブ・サービス・モジュールをファサード・エッジ・モジュール（２１２）としてエッジ・ネットワークに移動し、サーバ・ウェブ・サービス・モジュールをファサード・エンタープライズ・モジュール（２１４）としてエンタープライズ・ネットワークに移動することができる。サイロ分割タイプの場合、スプリッタ（２１０）は、呼び出し側階層内のすべてのクラスを１つのサブコンポーネントとしてサイロ・モジュール（２２０）に集約することができる。スプリッタ（２１０）は、サイロ・モジュール（２２０）をエッジ・ネットワークまたはエンタープライズ・ネットワークに移動することができる。
【００５４】
さらに詳しく説明すると、図３は、アプリケーション分割ポイント（３１０）を識別するステップ（３０２）を含む、ネットワーク・エッジ・コンピューティング向けのアプリケーション分割のための例示的方法を示す流れ図である。図４は、アプリケーション分割ポイントを識別するための例示的方法を示す流れ図である。図４の例で、アプリケーション分割ポイントを識別するステップは、ＥＪＢを呼び出すアプリケーションのクラスを識別するステップ（４０２）によって実行される。前述のように、ＥＪＢを呼び出すクラスは、ＥＪＢ  Ｐｒｏｐｅｒｔｉｅｓ（）コンストラクタ、ＩｎｉｔｉａｌＣｏｎｔｅｘｔ（）コンストラクタ、などへの呼び出しなどの、そのＥＪＢメンバ・メソッドを使用することによって識別することができる。図４の方法で、アプリケーション分割ポイントを識別するステップは、たとえば、「ｅｘｅｃｕｔｅＵｐｄａｔｅ」または「ｅｘｅｃｕｔｅＩｎｓｅｒｔ」などのＪＤＢＣメソッドへの呼び出しを介してエンタープライズ・データベースを更新する、アプリケーションのクラスを識別するステップ（４０４）によっても実行することができる。図４の方法で、アプリケーション分割ポイントを識別するステップは、ＪＣＡ機能を呼び出すアプリケーションのクラスを識別するステップ（４０５）によって実行される。ＪＣＡ機能を呼び出すクラスは、たとえば、ＪＣＡＣｏｎｎｅｃｔｉｏｎＦａｃｔｏｒｙ（）、ｃｒｅａｔｅＩｎｔｅｒａｃｔｉｏｎ（）メソッド、Ｉｎｔｅｒａｃｔｉｏｎ．ｅｘｅｃｕｔｅ（）メソッドなどへの呼び出しを使用するクラスとして識別することができる。
【００５５】
図３を再度参照すると、図３の方法は、アプリケーション分割ポイントの分割タイプ（３１２）を識別するステップ（３０４）も含む。図５は、アプリケーション分割ポイントの分割タイプを識別するための例示的方法を示す流れ図である。図５の例で、アプリケーション分割ポイントの分割タイプを識別するステップは、アプリケーション分割ポイントのサイロ分割タイプ（５０４）を識別するステップを含む。図５の例で、アプリケーション分割ポイントのサイロ分割タイプ（５０４）を識別するステップは、潜在的分割ポイント（４０６）およびアプリケーション（１３０）のリストから、ＨＴＴＰ機能を呼び出すアプリケーション内のクラスを識別するステップ（５０２）と、識別されたクラスの呼び出し側階層を記録するステップ（５０６）とによって、実行することができる。ＨＴＴＰ機能の例は、ＨＴＴＰＲｅｑｕｅｓｔクラス、ＨＴＴＰＲｅｓｐｏｎｓｅクラス、およびＨＴＴＰＳｅｓｓｉｏｎクラス内のＪａｖａ(登録商標)メンバ・メソッドを含む。
【００５６】
図５の例で、サイロ分割タイプを識別するステップは、潜在的分割ポイント（４０６）およびアプリケーション（１３０）のリストから、エンタープライズ・データベースを更新するクラスを識別するステップ（５１４）によって実行することもできる。エンタープライズ・データベースを更新するクラスは、たとえば、「ｅｘｅｃｕｔｅＵｐｄａｔｅ」および「ｅｘｅｃｕｔｅＩｎｓｅｒｔ」などのＪＤＢＣメンバ・メソッドへの呼び出しによって識別することができる。図５の方法で、アプリケーション分割ポイントの分割タイプを識別するステップは、アプリケーション分割ポイントのＥＪＢ分割タイプ（５１０）を識別するステップ（５０８）を含む。図５の方法で、ＥＪＢ分割タイプを識別するステップは、潜在的分割ポイント（４０６）のリストから、およびアプリケーション（１３０）ソース・コードから、たとえば、ＥＪＢ  Ｐｒｏｐｅｒｔｉｅｓ（）コンストラクタ、ＩｎｉｔｉａｌＣｏｎｔｅｘｔ（）コンストラクタなどへの呼び出しによって示された、ＥＪＢを呼び出すクラスを識別するステップ（５０８）によって実行することができる。
【００５７】
図５の方法で、アプリケーション分割ポイントの分割タイプを識別するステップは、アプリケーション分割ポイントのファサード分割タイプ（５１４）を識別するステップを含む。図５の方法で、アプリケーション分割ポイントのファサード分割タイプ（５１４）を識別するステップは、潜在的分割ポイントのリストから、潜在的分割ポイントとして複数回リストされたクラスを識別するステップ（５１２）によって実行することができる。
【００５８】
図５の方法は、潜在的分割ポイントのリスト上で割り当てられていないすべての残りのクラスを、サイロ分割タイプ（５０４）に割り当てるステップ（５１８）も含む。すなわち、潜在的分割ポイントとしてリストされたクラスのスキャンにおいて、図２の参照で示されたような分割タイプ分析（２０８）は、ＥＪＢ分割タイプまたはファサード分割タイプとしてまだ識別されていないそれぞれの分割ポイントに、分割タイプ「サイロ」を割り当てる。
【００５９】
本発明に従ったいくつかの実施形態は、サイロ分割、ファサード分割、およびＥＪＢ分割という、３種類の分割すべてを実施する。こうした実施形態では、ＨＴＴＰ機能を呼び出すかまたはエンタープライズ・データベースを更新し、さらにＥＪＢも呼び出すかまたは潜在的分割ポイントとして複数回リストされた、分割ポイントを、サイロ分割タイプおよびＥＪＢ分割タイプまたはファサード分割タイプとして分類することができる。すなわち、１つの分割ポイントに複数の分割タイプを割り当てることができる。有利なことに、こうした実施形態は分割タイプ間の競合を避けるために、ＥＪＢ分割タイプ（５１０）またはファサード分割タイプ（５１４）としても識別される任意の分割ポイントを、サイロ分割タイプ（５０４）から削除するステップ（５１６）によって実施される、１つの分割ポイントについて１つの分割タイプのみを許可することができる。
【００６０】
図３を再度参照すると、図３の方法は、分割タイプに応じてアプリケーションをサブコンポーネント（３１４）に分割するステップ（３０６）、およびサブコンポーネントをエッジ・ネットワーク（１０６）に移動するステップ（３０８）も含む。ＥＪＢ分割タイプの場合、図３の方法は、アプリケーション（１３０）をクライアントＲＭＩ  ＴＭ（「Ｊａｖａ(登録商標)  Ｒｅｍｏｔｅ  Ｍｅｔｈｏｄ  Ｉｎｖｏｃａｔｉｏｎ」）モジュールおよびサーバＲＭＩモジュールに分割するステップと、クライアントＲＭＩモジュールをエッジ・ネットワークに移動するステップと、サーバＲＭＩモジュールをエンタープライズ・ネットワークに移動するステップとを含む。代わりの方法として、ＥＪＢ分割タイプの場合、図３の方法は、アプリケーション（１３０）をクライアント・ウェブ・サービス・モジュールおよびサーバ・ウェブ・サービス・モジュールに分割するステップと、クライアント・ウェブ・サービス・モジュールをエッジ・ネットワークに移動するステップと、サーバ・ウェブ・サービス・モジュールをエンタープライズ・ネットワークに移動するステップとを含む。同様に、ファサード分割タイプの場合、図３の方法は、アプリケーション（１３０）をクライアント・ウェブ・サービス・モジュールおよびサーバ・ウェブ・サービス・モジュールに分割するステップと、クライアント・ウェブ・サービス・モジュールをエッジ・ネットワークに移動するステップと、サーバ・ウェブ・サービス・モジュールをエンタープライズ・ネットワークに移動するステップとを含む。サイロ分割タイプの場合、図３の方法は、呼び出し側階層内のすべてのクラスを１つのサブコンポーネントとしてサイロ・モジュールに集約するステップと、サイロ・モジュールをエッジ・ネットワークまたはエンタープライズ・ネットワークに移動するステップとを含む。
【００６１】
図３の方法で、アプリケーションを分割するステップ（３０６）は、ユーザ・プリファレンス（３０３）に依存してアプリケーションを分割するステップを含む。こうしたユーザ・プリファレンスの例には、以下の事項が含まれる。
・分割なし――アプリケーション全体およびそのデータベースがエッジ・ネットワーク内に収まる場合
・サイロ分割タイプのみを識別し、これのみによって分割
・ファサード分割タイプのみを識別し、これのみによって分割
・ＥＪＢ分割タイプのみを識別し、これのみによって分割
・すべての分割タイプを識別するが、サイロのみによって分割
・すべての分割タイプを識別するが、ファサードのみによって分割
・すべての分割タイプを識別するが、ＥＪＢのみによって分割
・すべての分割タイプを識別し、サイロ／ファサード／ＥＪＢの優先順位によって分割
【００６２】
第１の例示的なユーザ・プリファレンスには、「分割なし――アプリケーション全体およびそのデータベースがエッジ・ネットワーク内に収まる場合」と記載される。こうした例では、アプリケーション全体およびそのデータベースがエッジ・ネットワーク内に収まる場合、アプリケーションは分割されず、アプリケーション全体がエッジ・ネットワークに移動される。したがって、図３の方法は、管理するデータを含むアプリケーションが大きすぎてエッジ・ネットワークに収まらないかどうかを判別するステップも含む。管理するデータを含むアプリケーションが大きすぎてエッジ・ネットワークに収まらないかどうかを判別するステップは、エッジ・ネットワークの使用可能データ記憶容量と、アプリケーションおよび当該アプリケーションによって管理されるデータベース内のデータに関するデータ記憶要件とを、比較するステップによって実行される。
【００６３】
上記にリストされたユーザ・プリファレンス（「すべての分割タイプを識別し、サイロ／ファサード／ＥＪＢの優先順位によって分割」）は、複数の分割タイプが存在する場合、アプリケーションは存在する分割タイプの優先順位に依存して分割され、この場合、サイロ分割タイプがファサード分割タイプより優先され、ファサード分割タイプがＥＪＢ分割サイロより優先されることを意味する。すなわち、すべての分割タイプが存在する場合は、サイロのみによって分割される。ファサードおよびＥＪＢの分割タイプが存在する場合は、ファサードのみによって分割される。ＥＪＢ分割タイプのみが存在する場合は、ＥＪＢによって分割される。
【００６４】
分割タイプに応じてアプリケーションをサブコンポーネント（３１４）に分割するステップ（３０６）は、有利なことには、サブコンポーネントに含まれることになる各クラスが直列化可能かどうかのチェック（図示せず）も含む。ほとんどのＪａｖａ(登録商標)クラスは、たとえばメンバ・メソッドが、その呼び出しパラメータにおいてたとえば文字または整数などのネイティブ・データ・タイプを採用していない限り、直列化可能である。したがって、サブコンポーネント内の各クラスが直列化可能であるかどうかのチェックは、ネイティブ・データ・タイプへの参照についてアプリケーション・ソース・コードをスキャンするステップと、こうしたネイティブ・データ・タイプの発見を報告するステップと、それらをＪａｖａ(登録商標)クラスおよびＪａｖａ(登録商標)オブジェクトへの参照に変換するステップとによって、実行することができる。
【００６５】
加えて、分割タイプに応じてアプリケーションをサブコンポーネント（３１４）に分割するステップ（３０６）は、有利なことには、グルー挿入（glue insertion）を含むこともできる。すなわち、エッジ・ネットワークに移動されるサブコンポーネントは、複数の要求／応答交換を通じてステートフルに維持されるデータを含むことができる。こうしたステートフル・データは、たとえばＪａｖａ(登録商標)  ＨＴＴＰＳｅｓｓｉｏｎオブジェクト内に維持することができる。アプリケーションの機能がエッジ・ネットワークとエンタープライズ・ネットワークとの間で分割される場合、ステートフル・データは一般に、エッジ・サーバおよびエンタープライズ・サーバの両方で維持することができる。ステートフル・データをエッジ・モジュールから対応するエンタープライズ・モジュールへ送る際に使用されるソフトウェアが、「グルー」と呼ばれる。本発明の典型的な実施形態では、分割タイプに応じてアプリケーションをサブコンポーネント（３１４）に分割するステップ（３０６）は、有利なことには、たとえばＨＴＴＰＳｅｓｓｉｏｎオブジェクトまたはＨＴＴＰＳｅｓｓｉｏｎオブジェクトへの参照を含むクラスなどの、こうしたステートフル・データを維持するクラスの有無をチェックするステップと、ステートフル・データが必要に応じてエッジ・モジュールおよびその関係するエンタープライズ・モジュールの両方で使用できることを保証するために、１つまたは複数のグルー・クラスおよびグルー・クラスへの呼び出しを挿入するステップと、を含む。
【００６６】
さらに詳しく説明すると、図６は、ＥＪＢ分割タイプに関するネットワーク・エッジ・コンピューティング向けにアプリケーションを分割するための例示的方法を示す流れ図である。すなわち、図６の例で、アプリケーション分割ポイント（３１０）は、ＥＪＢを呼び出す呼び出し側階層内のクラスとして識別され、分割タイプ（３１２）はＥＪＢ分割タイプとして識別される。図６の方法で、分割タイプに応じてアプリケーションをサブコンポーネント（３１４）に分割するステップ（３０６）は、呼び出し側階層内のクラスをクライアントＲＭＩモジュール（６０２）およびサーバＲＭＩモジュール（６０４）に分割するステップによって実行される。図６の方法で、サブコンポーネントをエッジ・ネットワークに移動するステップ（３０８）は、クライアントＲＭＩモジュール（６０２）をエッジ・ネットワーク（１０６）に移動するステップによって実行される。
【００６７】
さらに詳しく説明すると、図７は、ＥＪＢ分割タイプに関するネットワーク・エッジ・コンピューティング向けにアプリケーションを分割するための他の例示的方法を示す流れ図である。すなわち、アプリケーション分割ポイント（３１０）は、ＥＪＢを呼び出す呼び出し側階層内のクラスとして識別され、分割タイプ（３１２）はＥＪＢ分割タイプとして識別される。図７の方法で、分割タイプ（３１２）に従ってアプリケーション（１３０）をサブコンポーネント（３１４）に分割するステップ（３０６）は、呼び出し側階層内のクラスをクライアント・ウェブ・サービス・モジュール（７０２）およびサーバ・ウェブ・サービス・モジュール（７０４）に分割するステップによって実行される。図７の方法で、サブコンポーネントをエッジ・ネットワーク（１０６）に移動するステップ（３０８）は、クライアント・ウェブ・サービス・モジュール（７０２）をエッジ・ネットワーク（１０６）に移動するステップによって実行される。
【００６８】
さらに詳しく説明すると、図８は、サイロ分割タイプに関するネットワーク・エッジ・コンピューティング向けにアプリケーションを分割するための例示的方法を示す流れ図である。図８の例で、アプリケーション分割ポイント（３１０）は、エンタープライズ・データベースを更新する呼び出し側階層内のクラスとして識別され、分割タイプ（３１２）はサイロ分割タイプとして識別される。図８の方法で、分割タイプ（３１２）に従ってアプリケーション（１３０）をサブコンポーネント（３１４）に分割するステップ（３０６）は、呼び出し側階層内のすべてのクラスを１つのサブコンポーネントとしてサイロ・モジュール（８０２）に集約するステップによって実行される。図８の方法で、サブコンポーネントをエッジ・ネットワーク（１０６）に移動するステップ（３０８）は、サイロ・モジュール（８０２）をエッジ・ネットワーク（１０６）に移動するステップによって実行される。
【００６９】
さらに詳しく説明すると、図９は、サイロ分割タイプに関するネットワーク・エッジ・コンピューティング向けにアプリケーションを分割するための他の例示的方法を示す流れ図である。図９の例で、アプリケーション分割ポイント（３１０）は、ＥＪＢを呼び出す、およびＨＴＴＰ機能を呼び出す、呼び出し側階層内のクラスとして識別され、分割タイプ（３１２）はサイロ分割タイプとして識別される。図９の方法で、分割タイプに応じてアプリケーション（１３０）をサブコンポーネント（３１４）に分割するステップ（３０６）は、呼び出し側階層内のすべてのクラスを１つのサブコンポーネントとしてサイロ・モジュール（８０２）に集約するステップによって実行される。図９の方法で、サブコンポーネントをエッジ・ネットワーク（１０６）に移動するステップ（３０８）は、サイロ・モジュール（８０２）をエッジ・ネットワーク（１０６）に移動するステップによって実行される。
【００７０】
さらに詳しく説明すると、図１０は、サイロ分割タイプに関するネットワーク・エッジ・コンピューティング向けにアプリケーションを分割するための他の例示的方法を示す流れ図である。図１０の例で、アプリケーション分割ポイント（３１０）は、ＪＣＡ機能を呼び出す、およびＨＴＴＰ機能を呼び出す、呼び出し側階層内のクラスとして識別され、分割タイプ（３１２）はサイロ分割タイプとして識別される。図１０の例で、分割タイプ（３１２）に従ってアプリケーション（１３０）をサブコンポーネント（３１４）に分割するステップ（３０６）は、呼び出し側階層内のすべてのクラスを１つのサブコンポーネントとしてサイロ・モジュール（８０２）に集約するステップによって実行される。図１０の例で、サブコンポーネントをエッジ・ネットワーク（１０６）に移動するステップ（３０８）は、サイロ・モジュール（８０２）をエッジ・ネットワーク（１０６）に移動するステップによって実行される。
【００７１】
さらに詳しく説明すると、図１１は、ファサード分割タイプに関するネットワーク・エッジ・コンピューティング向けにアプリケーションを分割するための例示的方法を示す流れ図である。図１１の例で、アプリケーション分割ポイント（３１０）は、潜在的分割ポイントとして複数回リストされた呼び出し側階層内のクラスとして識別され、分割タイプ（３１２）はファサード分割タイプとして識別される。図１１の方法で、分割タイプ（３１２）に従ってアプリケーション（１３０）をサブコンポーネント（３１４）に分割するステップ（３０６）は、呼び出し側階層内のクラスをクライアント・ウェブ・サービス・モジュール（７０２）およびサーバ・ウェブ・サービス・モジュール（７０４）に分割するステップによって実行される。図１１の方法で、サブコンポーネントをエッジ・ネットワーク（１０６）に移動するステップ（３０８）は、クライアント・ウェブ・サービス・モジュール（７０２）をエッジ・ネットワーク（１０６）に移動するステップによって実行される。
【００７２】
前述の説明から、本発明の様々な実施形態において、本発明の真の趣旨を逸脱することなく修正および変更が実行可能であることを理解されよう。本明細書における説明は単なる例示の目的であり、限定的な意味でなされるものではない。本発明は、添付の特許請求の範囲の文言によってのみ限定される。
【図面の簡単な説明】
【００７３】
【図１】本発明の諸実施形態に従ったネットワーク・エッジ・コンピューティング向けのアプリケーション分割のための例示的システムを示すシステム図である。
【図２】例示的ソフトウェア開発システムを示すブロック図である。
【図３】ネットワーク・エッジ・コンピューティング向けのアプリケーション分割のための例示的方法を示す流れ図である。
【図４】アプリケーション分割ポイントを識別するための例示的方法を示す流れ図である。
【図５】アプリケーション分割ポイントの分割タイプを識別するための例示的方法を示す流れ図である。
【図６】ＥＪＢ分割タイプに関するネットワーク・エッジ・コンピューティング向けにアプリケーションを分割するための例示的方法を示す流れ図である。
【図７】ＥＪＢ分割タイプに関するネットワーク・エッジ・コンピューティング向けにアプリケーションを分割するための他の例示的方法を示す流れ図である。
【図８】サイロ分割タイプに関するネットワーク・エッジ・コンピューティング向けにアプリケーションを分割するための例示的方法を示す流れ図である。
【図９】サイロ分割タイプに関するネットワーク・エッジ・コンピューティング向けにアプリケーションを分割するための他の例示的方法を示す流れ図である。
【図１０】サイロ分割タイプに関するネットワーク・エッジ・コンピューティング向けにアプリケーションを分割するための他の例示的方法を示す流れ図である。
【図１１】ファサード分割タイプに関するネットワーク・エッジ・コンピューティング向けにアプリケーションを分割するための例示的方法を示す流れ図である。
【図１】
2008507014.tif 000003
【図２】
2008507014.tif 000004
【図３】
2008507014.tif 000005
【図４】
2008507014.tif 000006
【図５】
2008507014.tif 000007
【図６】
2008507014.tif 000008
【図７】
2008507014.tif 000009
【図８】
2008507014.tif 000010
【図９】
2008507014.tif 000011
【図１０】
2008507014.tif 000012
【図１１】
2008507014.tif 000013
【国際調査報告】
2008507014.tif 000014
2008507014.tif 000015
2008507014.tif 000016