JP2006107500A - ソフトウェアの実行中にソフトウェアを更新すること - Google Patents

ソフトウェアの実行中にソフトウェアを更新すること Download PDF

Info

Publication number
JP2006107500A
JP2006107500A JP2005287700A JP2005287700A JP2006107500A JP 2006107500 A JP2006107500 A JP 2006107500A JP 2005287700 A JP2005287700 A JP 2005287700A JP 2005287700 A JP2005287700 A JP 2005287700A JP 2006107500 A JP2006107500 A JP 2006107500A
Authority
JP
Japan
Prior art keywords
service
software
client
instance
mode
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005287700A
Other languages
English (en)
Inventor
Suyash Sinha
シンハ スヤシュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006107500A publication Critical patent/JP2006107500A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

【課題】ソフトウェアの実行中に、動的にソフトウェアを更新するシステム、方法、およびコンピュータ読み取り可能記憶媒体を提供する。
【解決手段】1本のソフトウェアまたはデータ構造を更新するためにクライアントの要求の処理が停止される時間が延びるのを回避するため、本発明の様々な実施形態が、元の1本のソフトウェアまたはデータ構造を更新する代わりに、その1本のソフトウェアのインスタンスまたはそのデータ構造のインスタンスを更新する。これにより、元の1本のソフトウェアまたはデータ構造は、中断することなくクライアントの要求を処理できる。元の1本のソフトウェアまたはデータ構造は以降の動作を終了し、一方、更新されたインスタンスは、コンテキストを失わずにクライアントの要求を処理し始める。
【選択図】図2

Description

本発明は、一般に、ソフトウェアリリースに関し、より詳細には、ソフトウェアの実行中に、ソフトウェアに新しい機能を追加し、またはソフトウェア内のエラーを修正するために、動的にソフトウェアを更新することに関する。
大きな企業では、企業が所有するコンピュータシステムのネットワークによってコンピューティング資源が相互接続されており、この資源が企業の様々なコンピューティングの要求を満たしている。このネットワークは、様々は地理的場所にまたがることができる。企業の内部ユーザ(従業員)ならびに外部クライアント(顧客)にとって、企業のコンピューティング資源は、可用性が高く、さらに安全性も高い必要がある。実際には、時々これら2つの要求は、互いに背反することがある。たとえば、コンピューティング資源を安全にするには、セキュリティパッチをインストールするためにそのコンピューティング資源をしばしば停止させる必要がある。一方、コンピューティング資源を継続的に容易に利用可能にしておくには、コンピューティング資源をめったに停止すべきではない。図1に、これらおよびその他の問題がより詳細に示してある。
企業ネットワーク100はクライアント102を含んでおり、クライアント102は、ユーザがネットワーク104を介して相互接続された共用コンピューティング資源にアクセスするのに用いられるコンピュータである。企業ネットワーク100のこれらのコンピューティング資源は、サーバA 106など1つまたは複数のサーバによって提供され、オンラインサービスがその上で稼動している。サーバA 106上で実行されるオンラインサービスをより安全にするために、企業はしばしば、方針として、管理者110が、報告または発見された脆弱性に対するセキュリティフィクス(security fix)を用いてオンラインサービスにパッチを当てるよう決めている。このようなパッチは、テストマシンの役目を果たすサーバB 108上で稼動しているオンラインサービス(更新対象サービス)のコピーに、パッチをインストールし適用することによって実施される。管理者110は、その導入(deployment)の際に更新済みサービスが問題を起こす可能性を低く抑えるために、その企業のコンピューティング方針に従って、更新済みサービスを検査し確認する。更新済みサービスがテストされるサーバB 108は、オンラインサービスがクライアント102にサービスを提供しているサーバA 106とは物理的に異なるマシンである。更新済みサービスがサーバB 108上でのテストに合格した後、管理者110は、サーバA 106を一定の時間、停止することによってパッチを導入(deploy)する。その間、オンラインサービスは、クライアント102には利用不能になる。次いで、そのパッチがオンラインサービスに適用され、その後、クライアント102にサービスを再び提供するためにサーバA 106が起動される。
パッチをインストールするためにサーバA 106を停止する際の問題は、サーバA 106を停止した時点でサービスコンテキスト(service context)が失われ、無効なままとなることである。サービスコンテキストとは、クライアント102が、サーバA 106上で稼動しているオンラインサービスに対して要求または何らかの情報を提供した状態のことである。クライアント102は、オンラインサービスがその要求を処理すること、または提供された情報に関して何らかの計算を行うことを期待している。オンラインサービスが停止されたとき、そのようなサービスコンテキストは破棄される。オンラインサービスにパッチを当ててサーバA 106が再び起動されたとき、サーバA 106は、クライアント102が前に何を提供していたかを思い出すことができる可能性は低い。というのは、多くのサービスは、サービスコンテキストを永続的に記憶せず、あるいはサーバA 106の再起動によって生じる遅延が長すぎてクライアント102には許容できないからである。たとえば、クライアント102は、サーバA 106が停止する直前に、検索照会をオンラインサービスに送信していたかもしれない。オンラインサービスがパッチを当てられて再びアクティブになったとき、オンラインサービスによって先の照会に対する応答が提供されず、その結果クライアント102は困惑することになる。別の解決策は、高価ではあるが、サーバ106をミラーするための追加の処理能力を付加することによってサーバに冗長性を組み込んだクラスタベースのサーバプラットフォーム上で、オンラインサービスを稼動することである。しかし、これにより、機器を調達するコストだけでなく、機器を運用するコストも増大する。
安全性の高いソフトウェアの、ユーザに対する可用性を高くしながら、安全性の高いソフトウェアに対する高まりつつある要求を満足させるという問題を解決することなくしては、企業ネットワーク100によって望ましいコンピューティング経験がもたらされるということをユーザは信用しなくなり、そのために、市場において企業ネットワーク100の縮小を求める要求が生じる恐れがある。
したがって、既存システムに関する上記その他の問題を回避し、または軽減しながら、ソフトウェアを動的に更新するためのシステム、方法、およびコンピュータ読み取り可能記憶媒体が求められている。
本発明によれば、ソフトウェアを動的に更新するためのシステム、方法、およびコンピュータ読み取り可能記憶媒体が提供される。本発明のシステムの形態は、クライアントの要求を処理するサーバとして働くコンピュータシステムを含んでいる。このコンピュータシステムは、コンピュータシステム上で実行される、クライアントの要求を処理する1本のソフトウェアを含んでおり、この1本のソフトウェアは、クライアントによって提供されるコンテキストを受け取ることができる。このコンピュータシステムはさらに、この1本のソフトウェアの新規リリースで更新された、この1本のソフトウェアのインスタンスを含んでいる。テストを実行できるようにするために、この1本のソフトウェアのインスタンスは、コンピュータシステム上でこの1本のソフトウェアと同時に実行され、その後、この1本のソフトウェアのインスタンスは実行され、この1本のソフトウェアはクライアントによって提供されたコンテキストを失わずに終了する。
本発明の他の諸態様によれば、本発明のもう1つのシステムの形態は、あるサービスモードから別のサービスモードへの移行を制御するための(コンピュータシステム内で実行される)複数本のソフトウェアを含んでいる。この複数本のソフトウェアは、クライアントの要求を処理するためのサービスを含む。このサービスは、サービスがハンドオフロック(handoff lock)を取得し、サービスの状態をエクスポートできるようにする複数のモードのうちの1つのモードを含む。この複数本のソフトウェアには、特定のモードに関連する割当コールバックルーチンを呼び出すことにより、サービスがその特定のモードに入るようにするための、サービス制御マネージャが含まれる。特定の1つのモードには、サービスがハンドオフロックを取得し、サービスの状態をエクスポートできるようにするカスタマイズ可能モードが含まれる。
本発明の他の諸態様によれば、本発明のコンピュータ読み取り可能記憶媒体の形態には、サービスの状態をエクスポートするためにコンピュータシステムによって使用されるデータ構造がその上に記憶された、コンピュータ読み取り可能記憶媒体を含んでいる。このデータ構造は、クライアントにサービスを提供する際にサービスによって生成される内部コンテキストに関する情報を示す、サービス内部コンテキストタグを含む。このデータ構造はさらに、サービスの実行を求める要求中にクライアントによって提供される外部コンテキストに関する情報を示す、クライアント外部コンテキストタグを含む。
本発明の他の諸態様によれば、コンピュータシステム上に実装される方法は、コンピュータシステム上で稼動する第1のゲストオペレーティングシステム上で稼動している、クライアントの要求を処理する第1のサービスに対する更新を受け取ることを含む。この方法はさらに、第1のサービスの状態を含むファイルを生成するために、第1のサービスによって状態ハンドオフ(state handoff)を実行することを含む。このファイルは、コンピュータシステム上で稼動する第2のゲストオペレーティングシステム上で稼動している第1のサービスのインスタンスへエクスポートされる。この方法はさらに、クライアントの要求を処理するために、受け取られた更新によって更新された第1のサービスのインスタンスを実行することを含み、クライアントによって第1のサービスに対して提供されたコンテキストを失わずに第1のサービスを終了することを含む。
本発明の上記の諸態様およびそれに付随する利点の多くは、以下の詳細な説明を添付の図面と併せて参照することによってより良く理解されるので、より容易にその価値が認められよう。
1本のソフトウェアまたはデータ構造を更新するためにクライアントの要求の処理が停止される時間が長くなるのを回避するため、本発明の様々な実施形態は、元の1本のソフトウェアまたはデータ構造を更新する代わりに、その1本のソフトウェアのインスタンスまたはデータ構造のインスタンスを更新する。これにより、元の1本のソフトウェアまたはデータ構造は、中断せずにクライアントの要求を処理することができるようになる。この1本のソフトウェアの更新されたインスタンス、またはデータ構造の更新されたインスタンスが検査および確認に満足のゆくように合格すると、本発明の様々な実施形態により、元の1本のソフトウェアまたはデータ構造を一時的に停止して、その状態を更新されたインスタンスにエクスポートできるようになる。元の1本のソフトウェアまたはデータ構造は、さらなる動作によって終了し、更新されたインスタンスは、コンテキストを失わずにクライアントの要求に対する処理を始める。用語「1本のソフトウェア」は、アプリケーションモードで稼動するサービス、特権モードで稼動するサービス、またはアプリケーションモードもしくは特権モードで稼動するサービスの一部(たとえばコードフラグメント(code fragment))を含んでいる。
サービスをその実行中に動的に更新できるシステム200を図2に示す。システム200は、ネットワーク204を介してサーバ206と通信するクライアント202を含む。クライアント202とサーバ206は共に、クライアント/サーバアーキテクチャと呼ばれる一種のコンピュータネットワークアーキテクチャを形成する。クライアント202とサーバ206から構成されるクライアント/サーバアーキテクチャは、議論の的であるインテリジェンス(disputed intelligence)を利用する構成であり、サーバ206と個々のクライアント202はいずれもインテリジェンスのあるプログラム可能なデバイスとして扱われ、したがってそれぞれのコンピューティング能力がすべて利用される。これは、2つの別々のコンポーネントである「フロントエンド」クライアント202と「バックエンド」サーバ206の間で、検索処理などのコンピューティングタスクの処理を分割することによって行われる。クライアント202は、(旧アーキテクチャに見られる「ダム」端末と対比して)それ自体が完全なスタンドアロンのパーソナルコンピュータであるが、コンピューティングタスクを開始するためのすべての能力および機能をそのユーザに提供する。サーバ206は、別のパーソナルコンピュータ、ミニコン、またはメインフレームとすることができ、データ記憶、データ管理、クライアント間の情報共有、高度なネットワーク管理、セキュリティ機能、クライアント202などのクライアントによって要求される様々なコンピューティングタスクの処理など、タイムシェアリング環境でミニコンおよびメインフレームによって提供される従来の能力を提供することによって、クライアント202の機能を高める。
ネットワーク204は、通信設備によって接続されている、一群のコンピュータおよび関連装置である。ネットワーク204は、同軸もしくはその他のケーブルなどの永続的接続、または電話もしくはその他の通信リンクによって行われる一時的接続を含むことができる。ネットワーク204は、数台のコンピュータ、プリンタ、およびその他の装置からなるLAN(ローカルエリアネットワーク)と同じくらい小さくてもよく、あるいは広大な地理的範囲にまたがって分散されている多くの小型および大型のコンピュータ(WANすなわちワイドエリアネットワーク)から構成されてもよい。WANの例示的な1つの実装はインターネットであり、これは、互いに通信を行うためにTCP/IPプロトコル群を使用するネットワークおよびゲートウェイの世界的な集合体である。インターネットの中核は、データおよびメッセージを経路指定する数千もの商業用、政府用、教育用、およびその他のコンピュータシステムを含む主要なノード間またはホスト間の、高速データ通信線のバックボーンである。1つまたは複数のインターネットノードは、インターネットを危険に陥らせずに、あるいはインターネット上の通信を停止させずにオフラインになることができる。というのも、単一のコンピュータまたはネットワークがインターネット全体を制御しているわけではないからである。
本発明の様々な実施形態を使用すると、サーバ206を停止せずに、オンラインサービスを仮想的に更新して更新済みサービスを生成することができ、したがって、オンラインサービスがクライアント202に対して中断せずに引き続きサービスを提供することが可能になる。管理者208は、オンラインサービスがクライアント202によって要求されるコンピューティングタスクを引き続き実行する間に、更新済みサービスをテストすることができる。更新済みサービスが(導入された場合に)システム200に問題を発生させる可能性が低いと管理者208が納得したとき、管理者208は、更新済みサービスにクライアント202の要求の処理を開始させることができ、一方、オンラインサービスはアンインストールされるが、クライアント202は変更があったとは気づかない。本発明の様々な実施形態により、オンラインサービスによって記憶された状態が、クライアント202が依拠しているコンテキストを失わずに、更新済みサービスにシームレスに転送される。
本発明の様々な実施形態の仮想更新機能を使用して、管理者208は、オペレーティングシステムのインスタンスとして稼動するオンラインサービスの新規インスタンスを作成し、これ自体は、そのオンラインサービスおよびそのオンラインサービスが稼動しているオペレーティングシステムと並列に稼動する。管理者208は、オンラインサービス(更新対象サービス)のインスタンスに更新をインストールし、適用する。次に、管理者208はテストを行い、テストが合格であれば、管理者208は、更新済みサービスをシステム200に導入できると判定する。次いで管理者208は、オンラインサービスに、オンラインサービスのインスタンスへのコンテキストハンドオフを実行させる。コンテキストハンドオフが完了すると、このコンテキストハンドオフの直前のオンラインサービスが中断した時点で、更新サービスの実行が開始される。
図3Aには、オンラインサービスと更新済みサービスをどちらも実行できるサーバ206をより詳細に示してある。サーバ206は、複数個のハードウェア302を含み、これはサーバ206の物理的構成要素であり、中央処理装置(図示せず)およびメモリ、ならびにプリンタ、モデム、入力デバイスなどの周辺機器を含んでいる。中央処理装置、メモリ、ディスク領域、周辺機器など上述のハードウェア資源の割当ておよび使用を制御するホストオペレーティングシステム304が、ハードウェア302の上で稼動している。ホストオペレーティングシステム304は、ゲストオペレーティングシステムおよび他のアプリケーションが依拠する、核となる1本のソフトウェアである。ホストオペレーティングシステム304で稼動しているのは仮想サーバ306であり、このサーバは、仮想マシン310A、310Bを管理する仮想化サービスと、ハードウェアエミュレーション用のソフトウェアインフラストラクチャを提供する。
仮想マシン310A、310Bは、各仮想マシン310A、310B用の仮想ハードウェアとして働く、仮想のデバイスの組を含む。第1および第2のゲストオペレーティングシステムは、各仮想マシン310A、310B中で稼動するが、最終的にはハードウェア302によって実行される適切なハードウェア命令に翻訳される様々な命令および通信が、仮想サーバ306によってシミュレートされることは、十分に認識されない。仮想サーバ306は、本質的に、好ましくは、ホストオペレーティングシステム304の特権モードで稼動する、マルチスレッドサービスであり、仮想マシン310A、310Bのそれぞれが独自の実行スレッドで実行される。ホストオペレーティングシステム304は、中央処理装置の資源および時間のスケジューリングならびにデバイスドライバを提供すると共に、ハードウェア302へのアクセスを提供するが、仮想サーバ306は、ゲストオペレーティングシステムを実行できる様々なマシン(仮想マシン310A、310B)の錯覚を生み出すソフトウェアインフラストラクチャを保持する。
オンラインサービス312Aは、第1のゲストオペレーティングシステム上で実行され、次に第1のゲストオペレーティングシステムが仮想マシン310A上で実行される。更新されたオンラインサービスのインスタンスは、更新済みサービス312Bであり、これは第2のゲストオペレーティングシステム上で稼動し、次に第2のゲストオペレーティングシステムが仮想マシン310B上で実行される。管理者208は、仮想化技術を使用して、クライアント202と通信を行うために、オンラインサービス312Aが依拠する同じハードウェア302上で、更新済みサービス312Bをテストすることができる。本発明の様々な実施形態では、内部コンテキストおよび外部コンテキストを含む、オンラインサービス312Aの状態を、第1のゲストオペレーティングシステムによって取得できるようにし、このような状態を、仮想マシン310Aと310Bの間の適切なプロセス間通信機構(たとえばパイプやキュー)によって第2のゲストオペレーティングシステムに転送できるようにする。その後、オンラインサービス312Aが実行を終了し、更新済みサービス312Bの実行が開始されたときにコンテキストが失われないように、更新済みサービス312Bの状態が、オンラインサービスの状態に設定される。
図3Bは、インストールモード、開始モード、休止モード、停止モード、アンインストールモードなど、サービス318が入り得る様々なモードを管理するサービス制御マネージャ316の使用法を示す。各モードに関連するのは、サービス制御マネージャ316によって呼び出すことができる割当て可能コールバックルーチンである。サービス制御マネージャ316が、コールバックルーチンの1つを使用してサービスを呼び出した後、サービス318が各モードに入る。サービス制御マネージャ316は、適切な操作制御機構のうちでも、とりわけコンソール314または自動化スクリプト(図示せず)によって制御することができる。ONPAUSE()ルーチン318A、ONHANDOFF()ルーチン318B、ONSTOP()ルーチン318Cなど、サービス318と関連する一部のコールバックルーチンを示してある。たとえば、サービス制御マネージャ316がONPAUSE()ルーチン318Aを呼び出すと、サービス318は(クライアント202からさらに要求を受信するのを中止し)休止モードに入り、このモードで、ONPAUSE()ルーチン318Aによって指定される様々な命令が実行される。
一実施形態では、サービス制御マネージャ316がカスタムコマンドを呼び出すことができ、そのカスタムコマンド内で任意のどんなコールバックルーチンもそのカスタムコマンドに関連付けできる場合、ONHANDOFF()ルーチン318Bをカスタムコマンドと関連付け、その結果、サービス318の様々なモードをハンドオフモードを含むように拡張することができる。サービス318がハンドオフモードに入ったとき、ONHANDOFF()ルーチン318Bに関連する命令を実行して、更新済みサービス312Bにインポートするために、第1のサービス312Aの状態をエクスポートすることができる。もう1つの実施形態では、カスタムコマンドを使用する代わりに、新しいハンドオフ状態をサービス318などのサービスの一部とすることができる場合、ONHANDOFF()ルーチン318Bをそのモードに関連付けることができる。この特定の例では、好ましくは、ONHANDOFF()ルーチン318Bの命令の1つにより、サービスが休止され、したがって、クライアント202からの追加の要求が受信されなくなり、一方、サービスの提供をオンラインサービス312Aから更新済みサービス312Bに切り換える準備が行われる。
図3Cは、上記で論じたハンドオフモードの間に更新済みサービス312Bにエクスポートされる、オンラインサービス312Aの状態を含むファイルを示す。このファイルは、どんな適切な言語で書いたものでもよい。1つの適切な言語として、XML(拡張可能なマーク付け言語)など、カスタマイズ可能なタグベース言語がある。図3Cに示すファイルの生成をもたらす以下の例を検討する。オンラインサービス312Aは、ポート5452上で、クライアント202からの要求をリスニングする。クライアント202は、文字列(「hello world」)をオンラインサービス312Aに送る。オンラインサービス312Aは、この文字列、現在のタイムスタンプ(ここでは12:53)、クライアントIPアドレス(ここでは16.12.10.10)、およびクライアントポート5452を、クライアント外部コンテキストとして記憶する。オンラインサービス312A内では、内部的に、ワーカスレッド(worker thread)が35秒おきに起動して、クライアントコンテキストのリストを調査する。クライアントコンテキストが所定の時間よりも長く記憶されている場合、ワーカスレッドは、あらかじめクライアント202によってオンラインサービス312Aに提供された文字列「hello world」をもつパケットをクライアント202に送信する。
オンラインサービス312Aの内部コンテキストとクライアントの外部コンテキストはどちらも、図3Cに示すファイル中にエクスポートすることができる。このファイルは、開始タグ<SERVICE_INTERNAL_CONTEXT>320A、およびその対となる終了タグ</SERVICE_INTERNAL_CONTEXT>320Bを含む。タグ320Aと320Bの間には、タグ<WORKER_THREAD_SLEEP_TIME>322A、およびその対となる終了タグ</WORKER_THREAD_SLEEP_TIME>322Bが含まれる。行324に、ワーカスレッドのスリープタイムを示すための数値「35」が表されている。このファイルはまた、開始タグ<CLIENT_EXTERNAL_CONTEXT>326A、およびその対となる終了タグ</CLIENT_EXTERNAL_CONTEXT>326Bも含む。タグ326Aと326Bの間に、別の開始タグ<CONTEXT>328A、およびその対となる終了タグ</CONTEXT>328Bが入れ子になる。行330で、タグ328Aと328Bの間に、タグ<IP>およびその対となる終了タグ</IP>が含まれる。IPアドレス16.12.10.10は、タグ<IP>とその終了タグ</IP>の間に入れられる。行332は、タグ<PORT>とその対となる終了タグ</PORT>の間にあるポート番号5452を表す。行334で、時間「12:53」が、タグ<TIMESTAMP>とその対となる終了タグ</TTMESTAMP>の間に入っている。行336は、タグ<STRING>とその対となる終了タグ</STRING>の間に入っている、クライアント202によって提供される文字列「hello world」を含む。上記で論じたファイルに関する詳細については、そのファイルがサービスの内部および外部の両コンテキストを取り込む概念を示すために提示されたものであり、サービスの状態の捕捉が図3Cに示した特定の種類の情報に限定、または制限されるものではないという点で理解されるべきものである。
図4A〜4Hは、サービスが稼動している間にサービスを動的に更新する方法400を示す。わかりやすくするために、方法400の以下の説明では、クライアント202、サーバ206(図2);ハードウェア302、ホストオペレーティングシステム304、仮想サーバ306、仮想マシン310A、310B、オンラインサービス312A、および更新済みサービス312B(図3A);図3Cに示すカスタマイズ可能なタグベースファイルなど、システム200に関して示した様々な構成要素を参照する。方法400は、開始ブロックから、移行端点(「端点A」)と終了端点(「端点B」)の間で定義される1組の方法ステップ402に進む。この1組の方法ステップ402では、オンラインサービス312Aなど、ゲストオペレーティングシステム上で稼動する第1のサービスへの更新が受け取られる。
以下の数ステップでは、本発明の様々な実施形態が実行可能になるように、仮想化技術の開始について論じる。方法400では、端点A(図4B)から、ホストオペレーティングシステム304を開始する。ブロック408を参照のこと。ブロック410において、この方法では、ホストオペレーティングシステム304内で稼動している仮想サーバ306を開始する。方法400では、ブロック412に進み、ここで仮想マシン310Aなど第1の仮想マシンと、この第1の仮想マシンに特有な仮想のデバイスの第1の組を開始する。方法400では、第1の仮想マシンで稼動する第1のゲストオペレーティングシステムを開始する。ブロック414を参照のこと。この方法では、ブロック416において、クライアント202などのクライアントにサービスを提供するために第1のゲストオペレーティングシステム上で稼動する、オンラインサービス312Aなど第1のサービスを開始する。ブロック418において、クライアントは、(要求や要求に関連する情報などの)外部コンテキストを第1のサービスに送信する。方法400は次いで、別の移行端点(「端点A1」)に進む。
方法400は、端点A1(図4C)からブロック420に進み、ここでオンラインサービス312Aなど第1のサービスが、各クライアントに対する外部コンテキストを別々に記憶する。図3Cのタグ328A、328Bの内容を参照のこと。次に、第1のサービスが、クライアントのサービスに関する内部コンテキストを生成し記憶する。ブロック422を参照のこと。また、タグ320A、320Bの内容も参照のこと。ブロック424において、第1のサービスへの更新が利用可能なことを示す通知が受け取られる。方法400では、次いでブロック426に進み、ここで仮想マシン310Bなど第2の仮想マシンと、第2の仮想マシンに特有な仮想化デバイスの第2の組を開始する。この方法では、第2の仮想マシンで稼動する、第2のゲストオペレーティングシステムを開始する。ブロック428を参照のこと。この方法では、ブロック430において、更新をインストールし、更新された第1のサービスのコピー(更新済みサービス312Bなど第2のサービス)を実行する。(好ましくは、第2のサービスは、第1のサービスと同時に実行される。)方法400は、次いで別の移行端点(「端点A2」)に進む。
方法400では、端点A2(図4D)からブロック432に進み、ここでたとえば管理者208によって、第2のゲストオペレーティングシステム上で稼動する第2のサービスがテストされる。判断ブロック434において、第2のサービスが導入される用意ができているかどうかを判定するテストが行われる。方法400では、判断ブロック434でのテストの回答がNOの場合、ブロック432に戻り、ここで上述の処理ステップが繰り返される。方法400では、判断ブロック434でのテストの回答がYESの場合、続いて終了端点Bに進む。
方法400では、端点B(図4A)から、移行端点(「端点C」)と終了端点(「端点D」)の間に定義される1組の方法ステップ404に進む。この1組の方法ステップ404は、第1のサービスが、(第2のサービスまたは更新済みサービス312Bである)第1のサービスのインスタンスへの状態ハンドオフを実行する。方法400では、端点C(図4D)からブロック436に進み、ここで第1のサービスがハンドオフモードに入る。この方法では、第1のサービスが、さらなるクライアント要求または外部コンテキストを受け取ることを休止する。ブロック438を参照のこと(例示的な一方法は、サービス制御マネージャ316に、ONPAUSE()ルーチン318Aを呼び出させることである)。次いで方法400では、続いて別の移行端点(「端点C1」)に進む。
この方法は、端点C1(図4E)から始まり、ハンドオフ中に第1のサービスのモードが変化しないようにするために、そのサービスに対する、グローバルロックであるハンドオフロックが取得される。ブロック440を参照のこと。この方法では、ブロック442において、第2のサービスに引き渡すべき、各クライアントの外部コンテキストを見つける。この方法では、好ましくは、第2のサービスにエクスポートする必要のあるどんなクライアント外部コンテキストも見つけるべきである。方法400はブロック444に進み、ここで第2のサービスに引き渡すべき第1のサービスの内部コンテキストを見つける。この方法は、場合によっては、いくつかのワーカスレッド、内部キュー、サービス管理データ構造などの内部詳細(internal details)を含むことができる。この方法は、外部コンテキストおよび内部コンテキスト(合わせて、状態と呼ぶ)を、カスタマイズ可能なタグベースのファイルにエクスポートする。ブロック446を参照のこと。(説明目的でのみ、図3Cにおいてファイルが例として示されている。)次に、この方法は、ブロック448において、第1のサービス上における既存のネットワーク接続を第2のサービスにマッピングするように、第1のサービスのネットワークスタックを変更する。(既存のネットワーク接続を再マッピングするために、仮想サーバ306および仮想マシン310A、310Bを含む仮想化機構が、アプリケーションプログラミングインターフェースを公開することが好ましい。)次に、方法400は、別の移行端点(「端点C2」)に進む。
方法400は、端点C2(図4F)からブロック450に進み、ここで第2のサービスがクライアントからの要求を受信可能になるように、第1のサービスのリスニングポートが第2のサービスのリスニングポートにリダイレクトされる。第1のサービスが、パイプやキューなどのプロセス間通信により、第2のゲストオペレーティングシステム上で稼動しているサービス管理マネージャ316などのサービス管理マネージャに、第2のサービスの状態を消去するよう要求する。ブロック452を参照のこと(これは、第2のサービスのONSTOP()ルーチン318Cを呼び出すことによって実現できることが好ましい)。次に、ブロック454において、第1のサービスが、第2のゲストオペレーティングシステム上で稼動するサービス管理マネージャに、第2のサービスをコンテキスト受取りモードに切り替えるよう要求する。次に、方法400はブロック456に進み、ここで第1のサービスが第2のサービスに、第1のサービスの状態を含むカスタマイズ可能なタグベースのファイルを引き渡す。その後、方法400は別の移行端点(「端点C3」)に進む。
この方法は端点C3(図4G)から始まり、第2のサービスが、カスタマイズ可能なタグベースのファイルを受け取り、そのサービス自体を、カスタマイズ可能なタグベースのファイルによって指定された状態に初期化する。ブロック460を参照のこと(ネットワークインターフェースに結び付いたネットワークプロトコルを効果的に初期化するために、第2のサービスが様々なデータ構造を下位のネットワーク層で初期化することが好ましい)。判断ブロック462において、第2のサービスが初期化を終了したかどうかを判定するテストが実行される。判断ブロック462でのテストの回答がNOの場合、方法400は、ブロック460に戻り、ここで上述の処理ステップが繰り返される。そうではない場合、判断ブロック462でのテストの回答がYESであり、第2のサービスは、この第1のサービスに、初期化が成功したことを通知する。ブロック464を参照のこと。次にブロック466において、第1のサービスは、第2のサービスに動作を開始するようにメッセージを送る。その後、方法400は別の移行端点(「端点C4」)に進む。
方法400は、端点C4(図4H)から判断ブロック468に進み、ここで第2のサービスが肯定応答を返したかどうかを判定するテストが実行される。判断ブロック468でのテストの回答がNOの場合、方法400は、その回答がYESになるまでループする。判断ブロック468でのテストの回答がYESの場合、第1のサービスは、第1のサービスの更新が成功したことを示す。ブロック470を参照のこと。ブロック472において、第1のサービスが、ハンドオフロックをリリースする。次いで方法400では、アンインストールされる準備として、第1のサービスが、それ以降の実行を止める。ブロック474を参照のこと。(この方法は、サービス管理マネージャ316が、ONSTOP()ルーチン318Cと、第1のサービスをアンインストールするための別のルーチンを呼び出すことが好ましい。)次いで、第1のサービスがアンインストールされる。ブロック476を参照のこと。その後、方法400は終了端点Dに進む。
方法400は、端点D(図4A)から、1つの移行端点(「端点E」)ともう1つの移行端点(「端点F」)の間で定義される1組の方法ステップ406に進む。この1組の方法ステップ406により、更新によって修正された、第1のサービスのインスタンス(第2のサービスまたは更新済みサービス312B)が実行され、第1のサービスのクライアントにサービスを提供することができる。その後、方法400は実行を終了する。
本発明の好ましい実施形態を図示し説明してきたが、これに関して本発明の趣旨および範囲から逸脱せずに様々な変更を行えることが理解されよう。
1本のソフトウェアが稼動している間にそれにパッチを当てることに関する様々な問題を示す、従来の企業ネットワークシステムを示すブロック図である。 1本のソフトウェアが、その実行中に更新される、例示的システムを示すブロック図である。 本発明の一実施形態による、サービスの実行中にサービスのコピーを更新することをサポートするように、複数のオペレーティングシステムを実行できるようにする、システムの複数の部分を示すブロック図である。 本発明の一実施形態による、サービスを制御するための、システムの複数の部分を示すブロック図である。 本発明の一実施形態による、状態の情報を含むカスタマイズ可能なタグベースファイルの例を、テキストで表した図である。 サービスが稼動している間にサービスを動的に更新する方法を示すプロセス図である。 サービスが稼動している間にサービスを動的に更新する方法を示すプロセス図である。 サービスが稼動している間にサービスを動的に更新する方法を示すプロセス図である。 サービスが稼動している間にサービスを動的に更新する方法を示すプロセス図である。 サービスが稼動している間にサービスを動的に更新する方法を示すプロセス図である。 サービスが稼動している間にサービスを動的に更新する方法を示すプロセス図である。 サービスが稼動している間にサービスを動的に更新する方法を示すプロセス図である。 サービスが稼動している間にサービスを動的に更新する方法を示すプロセス図である。

Claims (20)

  1. クライアントの要求を処理するためのサーバとして働くコンピュータシステムであって、
    クライアントの要求を処理するために前記コンピュータシステム上で実行され、前記クライアントによって提供されるコンテキストを受け取ることが可能である1本のソフトウェアと、
    前記1本のソフトウェアの新しいリリースで更新された、前記1本のソフトウェアのインスタンスと
    を含み、前記1本のソフトウェアの前記インスタンスは、テストを実行できるように、前記コンピュータシステム上で前記1本のソフトウェアと同時に実行され、その後、前記1本のソフトウェアの前記インスタンスは実行され、前記1本のソフトウェアは、前記クライアントによって提供された前記コンテキストを失わずに終了することを特徴とするコンピュータシステム。
  2. 前記1本のソフトウェアは、第1のゲストオペレーティングシステム上で稼動しており、前記1本のソフトウェアの前記インスタンスは、第2のゲストオペレーティングシステム上で稼動していることを特徴とする請求項1に記載のコンピュータシステム。
  3. 前記第1のゲストオペレーティングシステムは、第1の仮想マシン上で稼動しており、前記第2のゲストオペレーティングシステムは、第2の仮想マシン上で稼動していることを特徴とする請求項2に記載のコンピュータシステム。
  4. 前記第1のゲストオペレーティングシステム、および前記第2のゲストオペレーティングシステムは、ハードウェアのエミュレーションを提供する仮想サーバによって管理されることを特徴とする請求項3に記載のコンピュータシステム。
  5. 前記仮想サーバは、ハードウェアと直接通信するホストオペレーティングシステムのサービスとして実行されることを特徴とする請求項4に記載のコンピュータシステム。
  6. コンピュータシステムにおいて実行され、あるサービスモードから別のサービスモードへの移行を制御するための複数本のソフトウェアであって、
    クライアントの要求を処理するためのサービスであって、ハンドオフロックを取得し、サービスの状態をエクスポートすることができるようにする、複数のモードのうちの1つのモードを含むサービスと、
    特定のモードに関連する割り当てられたコールバックルーチンを呼び出すことによって、前記サービスを前記特定のモードに入るようにするためのサービス制御マネージャと
    を含み、ある特定のモードは、前記サービスが前記ハンドオフロックを取得し、前記サービスの状態をエクスポートできるようにする、カスタマイズ可能なモードを含むことを特徴とするソフトウェア。
  7. 前記サービスの状態を受け取る、前記サービスのインスタンスをさらに含み、前記サービスに新しい機能を追加し、または前記サービス中のエラーを訂正するように、前記サービスの新しいリリースによって前記サービスの前記インスタンスが更新されることを特徴とする請求項6に記載の複数本のソフトウェア。
  8. 前記モードは、前記サービスがクライアントからさらなる要求を受信するのを止める休止モードを含むことを特徴とする請求項7に記載の複数本のソフトウェア。
  9. 前記モードは、前記サービス管理マネージャによって前記サービスが開始および停止される開始モードおよび停止モードを含むことを特徴とする請求項8に記載の複数本のソフトウェア。
  10. 前記モードは、前記サービス管理マネージャによって前記サービスがインストールおよびアンインストールされるインストールモードおよびアンインストールモードを含むことを特徴とする請求項9に記載の複数本のソフトウェア。
  11. サービスの状態をエクスポートするためにコンピューティングシステムによって使用されるデータ構造が記憶されているコンピュータ読み取り可能記憶媒体であって、前記データ構造は、
    クライアントにサービスを提供する際に前記サービスによって生成される内部コンテキストに関する情報を示すサービス内部コンテキストタグと、
    サービスの実行を要求する際に前記クライアントによって提供される外部コンテキストに関する情報を示すクライアント外部コンテキストタグと
    を含むことを特徴とするコンピュータ読み取り可能記憶媒体。
  12. 前記データ構造は、カスタマイズ可能なタグベースの言語から形成されることを特徴とする請求項11に記載のコンピュータ読み取り可能記憶媒体。
  13. コンピュータシステム上で実装される方法であって、
    前記コンピュータシステム上で稼動する第1のゲストオペレーティングシステム上で稼動している第1のサービスへの更新を受け取ることであって、前記第1のサービスはクライアントの要求を実行すること、
    前記第1のサービスの状態を含むファイルを生成するために、前記第1のサービスによって状態ハンドオフを実行することであって、前記コンピュータシステム上で稼動する第2のゲストオペレーティングシステム上で稼動している前記第1のサービスのインスタンスへ前記ファイルはエクスポートされること、および、
    クライアントの要求を処理するために、前記受け取られた更新によって更新された、前記第1のサービスの前記インスタンスによって実行し、前記クライアントによって前記第1のサービスに提供された前記コンテキストを失わずに前記第1のサービスを終了すること
    を含むことを特徴とする方法。
  14. 前記状態ハンドオフを実行する前記動作の前に、前記更新で前記第1のサービスの前記インスタンスをテストすることをさらに含むことを特徴とする請求項13に記載の方法。
  15. テストする前記動作の後で、前記状態ハンドオフを実行する前記動作の前に、前記第1のサービスがハンドオフモードに入るようにすることをさらに含むことを特徴とする請求項14に記載の方法。
  16. 前記第1のサービスが、クライアントからさらなる要求を受け取らないようにするために、前記第1のサービスを休止することをさらに含むことを特徴とする請求項15に記載の方法。
  17. 前記第1のサービスの状態を変更しないようにするために、ハンドオフロックを取得することをさらに含み、前記ハンドオフロックを取得する前記動作は、前記第1のサービスの状態を含む前記ファイルを生成する前記動作の前に行われることを特徴とする請求項16に記載の方法。
  18. 前記ファイルを生成する前記動作は、前記第1のサービスの内部コンテキストおよび外部コンテキストを含むタグを有する、カスタマイズ可能なタグベースのファイルを生成する動作を含むことを特徴とする請求項17に記載の方法。
  19. クライアントの要求を前記第1のサービスの前記インスタンスにリダイレクトできるように、ネットワーク接続を再マッピングし、前記第1のサービスから前記第1のサービスの前記インスタンスへのポートをリスニングすることをさらに含むことを特徴とする請求項18に記載の方法。
  20. 前記第1のサービスの前記インスタンスが、前記第1のサービスの状態のハンドオフが成功したことを示すとき、前記第1のサービスによって前記ハンドオフロックが解放されることを特徴とする請求項19に記載の方法。

JP2005287700A 2004-09-30 2005-09-30 ソフトウェアの実行中にソフトウェアを更新すること Pending JP2006107500A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/955,641 US8146073B2 (en) 2004-09-30 2004-09-30 Updating software while it is running

Publications (1)

Publication Number Publication Date
JP2006107500A true JP2006107500A (ja) 2006-04-20

Family

ID=35527431

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005287700A Pending JP2006107500A (ja) 2004-09-30 2005-09-30 ソフトウェアの実行中にソフトウェアを更新すること

Country Status (5)

Country Link
US (1) US8146073B2 (ja)
EP (1) EP1643361A3 (ja)
JP (1) JP2006107500A (ja)
KR (1) KR20060051932A (ja)
CN (1) CN1770121A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009110505A (ja) * 2007-09-17 2009-05-21 Symantec Corp コンピュータプログラムにパッチを当てるシステム及び方法
JP2009217395A (ja) * 2008-03-07 2009-09-24 Nec Corp 仮想サーバソフトウェア更新システム、仮想サーバソフトウェア更新方法、サーバ、及びサーバ用プログラム
JP2009277217A (ja) * 2008-03-31 2009-11-26 Symantec Corp 仮想ソフトウェアサブレイヤの動的挿入および除去
JP2017534107A (ja) * 2014-09-30 2017-11-16 アマゾン テクノロジーズ インコーポレイテッド 動的コードデプロイメント及びバージョニング

Families Citing this family (149)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006146679A (ja) * 2004-11-22 2006-06-08 Hitachi Ltd 情報処理装置の制御方法、情報処理装置、及びプログラム
WO2006110991A1 (en) * 2005-04-18 2006-10-26 Research In Motion Limited Method and system for controlling software version updates
EP1872214A4 (en) * 2005-04-18 2008-04-23 Research In Motion Ltd IMPLEMENTING CUSTOMIZABLE SERVICES AS WIRELESS APPLICATIONS
US20070106993A1 (en) * 2005-10-21 2007-05-10 Kenneth Largman Computer security method having operating system virtualization allowing multiple operating system instances to securely share single machine resources
US7840398B2 (en) * 2006-03-28 2010-11-23 Intel Corporation Techniques for unified management communication for virtualization systems
US20080126792A1 (en) * 2006-09-19 2008-05-29 Herington Daniel E Systems and methods for achieving minimal rebooting during system update operations
US8776041B2 (en) * 2007-02-05 2014-07-08 Microsoft Corporation Updating a virtual machine monitor from a guest partition
US8874425B2 (en) 2007-03-22 2014-10-28 The Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US8495708B2 (en) * 2007-03-22 2013-07-23 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
US9558019B2 (en) 2007-03-22 2017-01-31 Invention Science Fund I, Llc Coordinating instances of a thread or other service in emulation
US20080234998A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Coordinating instances of a thread or other service in emulation
US8438609B2 (en) 2007-03-22 2013-05-07 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
US9378108B2 (en) * 2007-03-22 2016-06-28 Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US20080235000A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing security control practice omission decisions from service emulation indications
US20080235001A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing emulation decisions in response to software evaluations or the like
DE102007041652A1 (de) * 2007-09-03 2009-03-05 Abb Research Ltd. Einrichtung und Verfahren zur Durchführung von Hardware-Anpassungen an einem Server in einem verteilten Computersystem mit wenigstens zwei Servern
DE102007041653A1 (de) * 2007-09-03 2009-03-05 Abb Research Ltd. Einrichtung und Verfahren zur Durchführung von Server-Software-Updates in einem verteilten Computersystem mit wenigstens zwei Servern
JP4983521B2 (ja) * 2007-10-04 2012-07-25 富士通株式会社 ソフトウェア更新検証装置、方法及びプログラム
KR100883208B1 (ko) * 2007-12-13 2009-02-13 성균관대학교산학협력단 가상화 기술을 기반으로 하여 소프트웨어의 업데이트가가능한 이동통신 단말기 및 그 업데이트 방법
US9720674B1 (en) 2008-05-05 2017-08-01 Open Invention Network, Llc Automating application of software patches to a server having a virtualization layer
US8185884B2 (en) * 2008-06-23 2012-05-22 Novell, Inc. System and method for offline updation of software in virtual machine (VM) images
EP2214101A1 (de) 2009-01-29 2010-08-04 Siemens Aktiengesellschaft Verändern von Objekten einer Anwendung
US8689206B2 (en) * 2009-03-05 2014-04-01 International Business Machines Corporation Isolating operating system in-memory modules using error injection
US20110053583A1 (en) * 2009-08-31 2011-03-03 Ramesh Parmar User initiated virtual mobile management
US8972781B2 (en) * 2009-04-20 2015-03-03 Aetherpal Inc. Session recovery during virtual mobile management
US20100299664A1 (en) * 2009-05-21 2010-11-25 Salesforce.Com, Inc. System, method and computer program product for pushing an application update between tenants of a multi-tenant on-demand database service
US8589904B2 (en) * 2009-08-10 2013-11-19 Symantec Corporation Systems and methods for updating a software product
US8918093B2 (en) 2009-08-31 2014-12-23 Aetherpal Inc. User initiated virtual mobile management
JP5430298B2 (ja) * 2009-09-03 2014-02-26 サンデン株式会社 自動販売機の制御装置
US9589114B2 (en) * 2010-01-05 2017-03-07 Microsoft Technology Licensing, Llc Policy for digital rights management
US20110265072A1 (en) * 2010-04-27 2011-10-27 Jack Matthew Dynamic Installation of Files for Running Programs
JP2012069088A (ja) * 2010-06-25 2012-04-05 Toshiba Corp 医用情報処理装置及びソフトウェア配信システム
US8296267B2 (en) 2010-10-20 2012-10-23 Microsoft Corporation Upgrade of highly available farm server groups
US9075661B2 (en) * 2010-10-20 2015-07-07 Microsoft Technology Licensing, Llc Placing objects on hosts using hard and soft constraints
US8417737B2 (en) * 2010-10-20 2013-04-09 Microsoft Corporation Online database availability during upgrade
US8386501B2 (en) 2010-10-20 2013-02-26 Microsoft Corporation Dynamically splitting multi-tenant databases
US8751656B2 (en) 2010-10-20 2014-06-10 Microsoft Corporation Machine manager for deploying and managing machines
US20120102480A1 (en) * 2010-10-20 2012-04-26 Microsoft Corporation High availability of machines during patching
US8799453B2 (en) 2010-10-20 2014-08-05 Microsoft Corporation Managing networks and machines for an online service
US8850550B2 (en) 2010-11-23 2014-09-30 Microsoft Corporation Using cached security tokens in an online service
US9721030B2 (en) 2010-12-09 2017-08-01 Microsoft Technology Licensing, Llc Codeless sharing of spreadsheet objects
US8473957B2 (en) * 2010-12-13 2013-06-25 Microsoft Corporation Architecture for providing on-demand and background processing
JP5655677B2 (ja) * 2011-04-04 2015-01-21 富士通株式会社 ハイパーバイザ置き換え方法および情報処理装置
KR101254208B1 (ko) * 2011-06-17 2013-04-18 인크로스 주식회사 이동 단말기의 애플리케이션 실시간 업데이트 방법
US8819660B2 (en) * 2011-06-29 2014-08-26 Microsoft Corporation Virtual machine block substitution
EP3660673A1 (en) * 2012-03-22 2020-06-03 Irdeto B.V. Updating software components
US8972964B2 (en) * 2012-07-26 2015-03-03 Unisys Corporation Dynamic firmware updating system for use in translated computing environments
CN103838947B (zh) * 2012-11-26 2016-12-21 北京新媒传信科技有限公司 一种实现应用割接的方法和装置
GB2510874B (en) 2013-02-15 2020-09-16 Ncr Corp Server system supporting remotely managed IT services
US8739151B1 (en) * 2013-03-15 2014-05-27 Genetec Inc. Computer system using in-service software upgrade
CN104182241A (zh) * 2013-05-24 2014-12-03 华为终端有限公司 一种网页应用程序更新方法及通信设备
CN104423989B (zh) * 2013-09-02 2017-11-28 联想(北京)有限公司 一种应用更新方法及电子设备
US9626180B2 (en) 2013-12-16 2017-04-18 International Business Machines Corporation Live operating system update mechanisms
US9098375B2 (en) * 2013-12-23 2015-08-04 Verizon Patent And Licensing Inc. Automatic management of software patch installation
US20150286505A1 (en) * 2014-04-03 2015-10-08 Oracle International Corporation Computing system resource provisioning
US9430223B2 (en) 2014-09-25 2016-08-30 International Business Machines Corporation Live operating system update mechanisms
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
KR102079701B1 (ko) * 2014-10-30 2020-02-20 에스케이텔레콤 주식회사 가상화 정보 처리 장치의 소프트웨어 업그레이드 방법
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
US10318271B2 (en) 2015-01-05 2019-06-11 Irdeto Canada Corporation Updating software components in a program
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9727725B2 (en) 2015-02-04 2017-08-08 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
CN106301820B (zh) * 2015-05-15 2020-03-10 阿里巴巴集团控股有限公司 一种基于网络连接服务的升级方法和装置
US9928108B1 (en) 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments
US10042660B2 (en) 2015-09-30 2018-08-07 Amazon Technologies, Inc. Management of periodic requests for compute capacity
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US9830449B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Execution locations for request-driven code
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9811363B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9830175B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10013267B1 (en) 2015-12-16 2018-07-03 Amazon Technologies, Inc. Pre-triggers for code execution environments
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US10002026B1 (en) 2015-12-21 2018-06-19 Amazon Technologies, Inc. Acquisition and maintenance of dedicated, reserved, and variable compute capacity
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10021605B2 (en) * 2016-01-13 2018-07-10 Uber Technologies, Inc. Non-interrupted handoff of real-time network-distributed services
CN105791007B (zh) * 2016-03-01 2019-06-14 中国银联股份有限公司 金融网络接入系统
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10162672B2 (en) 2016-03-30 2018-12-25 Amazon Technologies, Inc. Generating data streams from pre-existing data sets
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US10282229B2 (en) 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US9952896B2 (en) 2016-06-28 2018-04-24 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10868883B2 (en) * 2016-06-29 2020-12-15 Nicira, Inc. Upgrading a proxy that decouples network connections from an application during application's downtime
US10587673B2 (en) * 2016-06-29 2020-03-10 Nicira, Inc. Decoupling network connections from an application while the application is temporarily down
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10230712B2 (en) 2016-09-12 2019-03-12 Microsoft Technology Licensing, Llc Binary experimentation on running web servers
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
US10341438B2 (en) * 2017-03-17 2019-07-02 Verizon Patent ad Licensing Inc. Deploying and managing containers to provide a highly available distributed file system
US10261780B2 (en) 2017-05-01 2019-04-16 Google Llc Transparent upgrade of a system service or application
US10303492B1 (en) 2017-12-13 2019-05-28 Amazon Technologies, Inc. Managing custom runtimes in an on-demand code execution system
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10572375B1 (en) 2018-02-05 2020-02-25 Amazon Technologies, Inc. Detecting parameter validity in code including cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
WO2023043564A1 (en) * 2021-09-15 2023-03-23 Microsoft Technology Licensing, Llc. Secret rotation in a cloud service
US11979496B2 (en) 2021-09-15 2024-05-07 Microsoft Technology Licensing, Llc Secret rotation in a cloud service
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions
US12015603B2 (en) 2021-12-10 2024-06-18 Amazon Technologies, Inc. Multi-tenant mode for serverless code execution

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002328813A (ja) * 2001-04-27 2002-11-15 Hitachi Ltd プログラム修正方法

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155837A (en) * 1989-03-02 1992-10-13 Bell Communications Research, Inc. Methods and apparatus for software retrofitting
US5410703A (en) * 1992-07-01 1995-04-25 Telefonaktiebolaget L M Ericsson System for changing software during computer operation
US5359730A (en) * 1992-12-04 1994-10-25 International Business Machines Corporation Method of operating a data processing system having a dynamic software update facility
US5664195A (en) * 1993-04-07 1997-09-02 Sequoia Systems, Inc. Method and apparatus for dynamic installation of a driver on a computer system
US6138274A (en) * 1998-01-23 2000-10-24 Lucent Technologies, Inc. Method and apparatus for updating an online computer program
DE19810802A1 (de) * 1998-03-12 1999-09-16 Ericsson Telefon Ab L M Störungsfreies Aktualisieren von Daten
US6070012A (en) * 1998-05-22 2000-05-30 Nortel Networks Corporation Method and apparatus for upgrading software subsystems without interrupting service
US6154878A (en) * 1998-07-21 2000-11-28 Hewlett-Packard Company System and method for on-line replacement of software
US6199203B1 (en) * 1998-07-21 2001-03-06 Hewlett-Packard Company Memory management techniques for on-line replaceable software
US6314567B1 (en) * 1998-11-13 2001-11-06 Hewlett-Packard Company Apparatus and method for transferring state data when performing on-line replacement of a running program code and data
US7062765B1 (en) * 1999-05-25 2006-06-13 Realnetworks, Inc. System and method for updating information via a network
US6698017B1 (en) * 1999-07-16 2004-02-24 Nortel Networks Limited Software migration on an active processing element
US6629315B1 (en) * 2000-08-10 2003-09-30 International Business Machines Corporation Method, computer program product, and system for dynamically refreshing software modules within an actively running computer system
US20020073409A1 (en) * 2000-12-13 2002-06-13 Arne Lundback Telecommunications platform with processor cluster and method of operation thereof
US20030018950A1 (en) 2001-06-02 2003-01-23 Malcom Sparks Dynamic redeploying environment for the rapid iterative development of software applications
NO20021247D0 (no) * 2002-03-13 2002-03-13 Ericsson Telefon Ab L M Fremgangsmåte og system for oppgradering av programvare
US7174547B2 (en) * 2002-03-25 2007-02-06 Ciena Corporation Method for updating and restoring operating software in an active region of a network element
US20030191870A1 (en) 2002-04-02 2003-10-09 Dominic Duggan Method and apparatus for updating software libraries
US20040010786A1 (en) * 2002-07-11 2004-01-15 Microsoft Corporation System and method for automatically upgrading a software application
US7000229B2 (en) * 2002-07-24 2006-02-14 Sun Microsystems, Inc. Method and system for live operating environment upgrades
US7216343B2 (en) * 2002-09-20 2007-05-08 International Business Machines Corporation Method and apparatus for automatic updating and testing of software
US6978452B2 (en) * 2003-04-02 2005-12-20 Beach Unlimited Llc Upgrading digital media servers
WO2004092951A2 (en) * 2003-04-18 2004-10-28 Sap Ag Managing a computer system with blades
WO2004104825A1 (en) * 2003-05-15 2004-12-02 Applianz Technologies, Inc. Systems and methods of creating and accessing software simulated computers
US20050044301A1 (en) * 2003-08-20 2005-02-24 Vasilevsky Alexander David Method and apparatus for providing virtual computing services
US20050216920A1 (en) * 2004-03-24 2005-09-29 Vijay Tewari Use of a virtual machine to emulate a hardware device
US7886293B2 (en) * 2004-07-07 2011-02-08 Intel Corporation Optimizing system behavior in a virtual machine environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002328813A (ja) * 2001-04-27 2002-11-15 Hitachi Ltd プログラム修正方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009110505A (ja) * 2007-09-17 2009-05-21 Symantec Corp コンピュータプログラムにパッチを当てるシステム及び方法
JP2009217395A (ja) * 2008-03-07 2009-09-24 Nec Corp 仮想サーバソフトウェア更新システム、仮想サーバソフトウェア更新方法、サーバ、及びサーバ用プログラム
JP2009277217A (ja) * 2008-03-31 2009-11-26 Symantec Corp 仮想ソフトウェアサブレイヤの動的挿入および除去
JP2017534107A (ja) * 2014-09-30 2017-11-16 アマゾン テクノロジーズ インコーポレイテッド 動的コードデプロイメント及びバージョニング

Also Published As

Publication number Publication date
EP1643361A3 (en) 2008-02-06
US20060075076A1 (en) 2006-04-06
US8146073B2 (en) 2012-03-27
KR20060051932A (ko) 2006-05-19
EP1643361A2 (en) 2006-04-05
CN1770121A (zh) 2006-05-10

Similar Documents

Publication Publication Date Title
JP2006107500A (ja) ソフトウェアの実行中にソフトウェアを更新すること
US20210382859A1 (en) System and method for connection concentration in a database environment
US11316800B2 (en) Method and system for managing applications
US11294699B2 (en) Dynamically scaled hyperconverged system establishing minimum supported interoperable communication protocol between clusters in a cluster group
CN107534571B (zh) 用于管理虚拟网络功能的方法、系统和计算机可读介质
US20180039507A1 (en) System and method for management of a virtual machine environment
US6966060B1 (en) Method and system for remote client installation
US9571332B2 (en) Methods and apparatuses for remote application provisioning automation over virtualized IT infrastructure
WO2019184164A1 (zh) 自动部署Kubernetes从节点的方法、装置、终端设备及可读存储介质
EP3276488A1 (en) Deployment system for multi-node applications
WO2019184116A1 (zh) 自动搭建Kubernetes主节点的方法、装置、终端设备及可读存储介质
US11163669B1 (en) Measuring test coverage during phased deployments of software updates
US20090328030A1 (en) Installing a management agent with a virtual machine
US11693687B1 (en) Lifecycle management of VNFC software modules
US11966768B2 (en) Apparatus and method for multi-cloud service platform
US11573819B2 (en) Computer-implemented method for reducing service disruption times for a universal customer premise equipment, uCPE, device with resource constraint in a network functions virtualization, NFV, network infrastructure
US20060294354A1 (en) Image-based system maintenance
US20160217019A1 (en) Partitioned application environment
US20210326162A1 (en) Lifecycle management of a vnfc included in a multi-vnfc vdu
US20230138867A1 (en) Methods for application deployment across multiple computing domains and devices thereof
US9483326B2 (en) Non-invasive upgrades of server components in cloud deployments
US20210067599A1 (en) Cloud resource marketplace
US20240007340A1 (en) Executing on-demand workloads initiated from cloud services in a software-defined data center
US11853783B1 (en) Identifying hosts for dynamically enabling specified features when resuming operation of a virtual compute instance
CN115185699A (zh) 提供商网络服务扩展

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110812

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120120