(57)【要約】マルチテナント・サービスにおいてテナントをソース・スケール・ユニットからターゲット・スケール・ユニットに移すための自動テナント・アップグレードを提供する。実テナントを移す前に、テスト・テナントを移し、ターゲット・スケール・ユニットの健全性を監視する。監視は、ターゲット・スケール・ユニットに伴う問題を捜すために、テスト・テナントにおいてユーザー・アクティビティをシミュレートする。テスト・テナントを移動した後に重大な問題が検出されない場合、実テナントをバッチでアップグレードする。ターゲット・スケール・ユニットの監視は、実テナントがアップグレードされている間も続き、ターゲット・スケール・ユニットの健全性を評価するときに、既にターゲット・スケール・ユニットにアップグレードされている実テナントによって報告される問題も考慮に入れる。重大な問題が発生した場合、その問題が解決されるまで、テナントのアップグレードを休止する。自動テナント・アップグレードは、アップグレードの問題によるサービス混乱を最小限に抑えつつ、価格効率的な最新ビルドへのアップグレードを提供することによって、マルチテナント・サービスの使い勝手を改善する。【選択図】図１
2017532660.tif 000002
【特許請求の範囲】
【請求項１】
マルチテナント・サービスと通信可能であり、ソース・スケール・ユニットと、ターゲット・スケール・ユニットと、前記ソース・スケール・ユニットにプロビジョニングされる実テナントと、前記ソース・スケール・ユニットにプロビジョニングされるテスト・テナントとを含む自動テナント・アップグレード・システムであって、
前記ターゲット・スケール・ユニットの動作を検査するように動作可能なスケール・ユニット健全性モニターと、
前記スケール・ユニット健全性モニターと通信可能なアップグレード・マネージャと、
を含み、
前記アップグレード・マネージャが、
前記テスト・テナントを前記ソース・スケール・ユニットから前記ターゲット・スケール・ユニットにアップグレードし、
前記テスト・テナントを前記ターゲット・スケール・ユニットにアップグレードした後に、前記スケール・ユニット健全性モニターによる前記ターゲット・スケール・ユニットの検査を開始し、
前記ターゲット・スケール・ユニットについての情報を前記スケール・ユニット健全性モニターから受け、
前記情報が前記ターゲット・スケール・ユニットが健全であることを示す間に、実テナントを前記ソース・スケール・ユニットから前記ターゲット・スケール・ユニットにアップグレードし、
前記情報が前記ターゲット・スケール・ユニットが不健全であることを示すとき、実テナントのアップグレードを自動的に保留し、
前記情報が前記ターゲット・スケール・ユニットがもはや不健全でないことを示すとき、実テナントのアップグレードを自動的に再開する、
ように動作可能である、自動テナント・アップグレード・システム。
【請求項２】
請求項１記載の自動テナント・アップグレード・システムにおいて、前記アップグレード・マネージャが、更に、前記実テナントをバッチでアップグレードし、実テナントの各バッチをアップグレードし始める前に、前記ターゲット・スケール・ユニットが健全であることを検証するように動作可能である、自動テナント・アップグレード・システム。
【請求項３】
請求項１記載の自動テナント・アップグレード・システムにおいて、前記スケール・ユニット健全性モニターおよび前記アップグレード・マネージャの内少なくとも１つが、更に、前記スケール・ユニット健全性モニターによる検査に基づいて、前記ターゲット・スケール・ユニットが健全でないと判定されたとき、警告を生成するように動作可能である、自動テナント・アップグレード・システム。
【請求項４】
請求項１記載の自動テナント・アップグレード・システムにおいて、前記スケール・ユニット健全性モニターが、更に、一連の命令を実行するように動作可能であり、前記一連の命令が、前記ターゲット・スケール・ユニットとのユーザー対話処理をシミュレートし、前記ターゲット・スケール・ユニットの前記一連の命令に対する応答を監視する、自動テナント・アップグレード・システム。
【請求項５】
請求項４記載の自動テナント・アップグレード・システムにおいて、前記スケール・ユニット健全性モニターが、更に、一連の命令が首尾良く完了しなかったとき、前記ターゲット・スケール・ユニットが不健全であることを前記アップグレード・マネージャに通知するように動作可能である、自動テナント・アップグレード・システム。
【請求項６】
請求項４記載の自動テナント・アップグレード・システムにおいて、 前記スケール・ユニット健全性モニターおよび前記アップグレード・マネージャの内少なくとも１つが、更に、前記ターゲット・スケール・ユニットに伴って検出された問題の重大度の評価に基づいて、前記ターゲット・スケール・ユニットが健全かまたは不健全か判定するように動作可能である、自動テナント・アップグレード・システム。
【請求項７】
請求項１記載の自動テナント・アップグレード・システムであって、更に、
前記ソース・スケール・ユニットにおいて実テナントを格納するように動作可能な１つ以上のデーターベースと、
前記ソース・スケール・ユニットにおいてテスト・テナントのみを格納するように動作可能な１つ以上のテスト専用データーベースと、
を含み、
前記アップグレード・マネージャが、更に、前記ソース・スケール・ユニットが、選択された数のテスト専用データーベースを内蔵していない場合、アップグレードを取り消すように動作可能である、自動テナント・アップグレード・システム。
【請求項８】
マルチテナント・サービスにおいてテナントをソース・スケール・ユニットからターゲット・スケール・ユニットに自動的にアップグレードする方法であって、
テスト・テナントを前記ソース・スケール・ユニットから前記ターゲット・スケール・ユニットにアップグレードする動作と、
テスト・テナントを前記ターゲット・スケール・ユニットにアップグレードした後に、前記ターゲット・スケール・ユニットの健全性を検査する動作と、
前記ターゲット・スケール・ユニットが健全状態にある場合、実テナントを前記ソース・スケール・ユニットから前記ターゲット・スケール・ユニットにアップグレードする動作と、
を含む、方法。
【請求項９】
請求項８記載の方法であって、更に、実テナントを前記ソース・スケール・ユニットから前記ターゲット・スケール・ユニットにアップグレードする間、前記ターゲット・スケール・ユニットの健全性を検査し続ける動作を含む、方法。
【請求項１０】
請求項９記載の方法であって、更に、前記ターゲット・スケール・ユニットが不健全状態にある場合、実テナントの前記ソース・スケール・ユニットから前記ターゲット・スケール・ユニットへのアップグレードを自動的に保留する動作を含む、方法。
【請求項１１】
請求項１０記載の方法であって、更に、前記ターゲット・スケール・ユニットが健全状態に復元されたとき、実テナントの前記ソース・スケール・ユニットから前記ターゲット・スケール・ユニットへのアップグレードを自動的に再開する動作を含む、方法。
【請求項１２】
請求項８記載の方法において、テスト・テナントを前記ターゲット・スケール・ユニットにアップグレードした後に前記ターゲット・スケール・ユニットの健全性を検査する動作が、
前記テスト・テナントを使用して、前記ターゲット・スケール・ユニットにおけるユーザー・アクティビティをシミュレートする動作と、
前記シミュレートしたユーザー・アクティビティの結果を得る動作と、
前記結果に基づいて、前記ターゲット・スケール・ユニットが健全状態または不健全状態のどちらにあるか判定する動作と、
を含む、方法。
【請求項１３】
請求項１２記載の方法において、前記結果に基づいて、前記ターゲット・スケール・ユニットが健全状態または不健全状態のどちらにあるか判定する前記動作が、前記結果が、前記シミュレートしたユーザー・アクティビティが不成功であったことを示すとき、前記ターゲット・スケール・ユニットに不健全というフラグを立てる動作を含む、方法。
【請求項１４】
請求項１２記載の方法において、前記結果に基づいて、前記ターゲット・スケール・ユニットが健全状態または不健全状態のどちらにあるか判定する前記動作が、
前記結果が、前記シミュレートしたユーザー・アクティビティの内の１つが不成功であったことを示すとき、問題を識別する動作と、
前記識別した問題に基づいて重大度値を判定する動作と、
前記重大度値が重大度しきい値を満たす場合、前記ターゲット・スケール・ユニットに不健全というフラグを立てる動作と、
を含む、方法。
【請求項１５】
コンピューター実行可能命令を含むコンピューター読み取り可能媒体であって、前記コンピューター実行可能命令がコンピューターによって実行されると、マルチテナント・サービスにおいてテナントをソース・スケール・ユニットからターゲット・スケール・ユニットに自動的にアップグレードする方法を実行し、前記方法が、
テスト・テナントを前記ソース・スケール・ユニットから前記ターゲット・スケール・ユニットにアップグレードする動作と、
テスト・テナントを前記ターゲット・スケール・ユニットにアップグレードした後に、前記ターゲット・スケール・ユニットの健全性を検査する動作と、
前記ターゲット・スケール・ユニットが健全状態にある場合、実テナントを前記ソース・スケール・ユニットから前記ターゲット・スケール・ユニットにバッチでアップグレードする動作であって、各バッチが、前記ソース・スケール・ユニットからのある数の実テナントを含む、動作と、
実テナントを前記ターゲット・スケール・ユニットにアップグレードする間、前記ターゲット・スケール・ユニットの健全性を検査し続ける動作と、
前記ターゲット・スケール・ユニットに対して、選択された重大度レベルの警告がアクティブである場合、実テナントのバッチがアップグレードされ始めるのを自動的に禁止する動作と、
前記ターゲット・スケール・ユニットに対して、前記選択された重大度レベルの警告がアクティブでない場合、実テナントのアップグレードを自動的に再開する動作と、
を含む、コンピューター読み取り可能媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  制作マルチテナント・サービス(production multi-tenant service)では、顧客は種々の理由により、あるファームから他のファームに定期的にアップグレードされる。顧客は、常に、アプリケーションの最新バージョンにアップグレードされる。アップグレードの間、顧客体験を潜在的にダウングレードさせる可能性がある複数の動作が実行され、アップグレード・プロセスの間に重大な問題に直面した場合、顧客にとってダウンタイムが生ずる潜在的な可能性がある。問題が識別されても、既にアップグレードされている顧客は被害を受ける潜在的な可能性がある。いずれにしても手作業でテナントをアップグレードするのは、このような問題を監視するために多くの管理を伴う非常に労働集約的なプロセスであり、マルチテナント・サービスの運営業者にとって費用がかかる。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
[0002]  本発明が行われたのは、これらおよび他の考慮事項に関してである。比較的具体的な問題について説明したが、本明細書において開示する本発明の形態は、背景において識別された具体的な問題を解決することに限定されるのではないことは理解されてしかるべきである。
【課題を解決するための手段】
【０００３】
[0003]  この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を識別することを意図するのではなく、特許請求する主題の範囲を判断するときに補助として使用されることを意図するのでもない。
【０００４】
[0004]  自動テナント・アップグレード・システムの形態は、ソース・スケール・ユニット(source scale unit)からターゲット・スケール・ユニット(target scale unit)へのテナントのアップグレードを含む。異なるスケール・ユニットにアップグレードされる結果として顧客が問題を体験する潜在的可能性を最小限に抑えるために、自動テナント・アップグレード・システムは、ソース・スケール・ユニットにプロビジョニングされるテスト・テナントを利用する。いずれの実際のテナントを移す前でも、テスト・テナントがターゲット・スケール・ユニットにアップグレードされる。テスト・テナントは、実テナントとは別のデーターベースに格納されてもよい。十分な数のテスト・テナント、またはテスト・テナントを含むデーターベースがソース・スケール・ユニットにおいて入手可能でない場合、テナントはターゲット・スケール・ユニットにアップグレードされない。
【０００５】
[0005]  一旦テスト・テナントがターゲット・スケール・ユニットに移されたなら、ターゲット・スケール・ユニットの健全性を検査し監視する。ターゲット・スケール・ユニットが健全であるように見える場合、実テナントがターゲット・スケール・ユニットにアップグレードされる。ターゲット・スケール・ユニットの監視は、アップグレード・プロセス全体を通じて続けられ、ターゲット・スケール・ユニットが健全でないと判定されない限り、実テナントはアップグレードされ続ける。ターゲット・スケール・ユニットに伴う問題が、ターゲット・スケール・ユニットにアップグレードされた実テナントのユーザーによって検出または報告された場合、アップグレード・プロセスは自動的に休止される。一旦ターゲット・スケール・ユニットに伴う問題が解決されたなら、実テナントのアップグレードは自動的に再開される。このプロセスは、全ての実テナントがターゲット・スケール・ユニットにアップグレードされ終えるまで続けられる。
【図面の簡単な説明】
【０００６】
[0006]  本開示の更に他の特徴、形態、および利点は、以下の図を参照することによって、一層深く理解されよう。図面において、詳細を一層明確に示すためにエレメントは同じ拡縮率で描かれておらず、同様の参照番号は様々な図を通じて同様のエレメントを示す。
【図１】図１は、自動テナント・アップグレード・システムの形態を示すシステム図である。
【図２】図２は、マルチテナント・サービスにおける自動テナント・アップグレード方法の形態を示す上位フローチャートである。
【図３】図３は、本発明の形態を実施するのに適したコンピューティング・デバイスの物理コンポーネントを示すブロック図である。
【図４Ａ】図４Ａは、本発明の形態を実施するのに適した移動体コンピューティング・デバイスを示す。
【図４Ｂ】図４Ｂは、本発明の形態を実施するのに適した移動体コンピューティング・デバイスのアーキテクチャを示すブロック図である。
【図５】図５は、本発明の形態を実施することができる分散型コンピューティング・システムの簡略ブロック図である。
【発明を実施するための形態】
【０００７】
[0007]  以下では、本発明の種々の形態について、添付図面を参照して更に十分に説明する。図面は、本明細書の一部を形成し、本発明の具体的な実証的形態を示す。しかしながら、本発明は、多くの異なる形態で実現することもでき、本明細書において説明する形態に限定するように解釈してはならない。逆に、これらの形態は、本開示が綿密で完全であり、種々の形態の範囲を当業者に余すところなく伝えるようにするために設けられる。形態は、方法、システム、またはデバイスとして実施することができる。したがって、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせを使用して、実現例を実施することができる。したがって、以下の詳細な説明は、限定的な意味で捕らえてはならない。
【０００８】
[0008]  本明細書では、自動テナント・アップグレード・システムおよび付随する方法の形態について説明し、添付図面に示す。自動テナント・アップグレードは、マルチテナント・サービスにおいてテナントをソース・スケール・ユニットからターゲット・スケール・ユニットに移す。実テナントを移す前に、テスト・テナントを移し、ターゲット・スケール・ユニットの健全性を監視する。監視は、ターゲット・スケール・ユニットに伴う問題を捜すために、テスト・テナントにおいてユーザー・アクティビティをシミュレートする。テスト・テナントを移した後に重大な問題が検出されない場合、全ての実テナントが移され終えるまで、実テナントが一括してアップグレードされる。ターゲット・スケール・ユニットの監視は、実テナントがアップグレードされている間続けられ、ターゲット・スケール・ユニットに既にアップグレードされた実テナントによって報告された問題も、ターゲット・スケール・ユニットの健全性を評価するときに考慮される。重大な問題が発生した場合、実テナントのアップグレードは、問題が解決されるまで、休止される。自動テナント・アップグレードは、アップグレードの問題によるサービス混乱を最小限に抑えつつ最新のビルド(build)への価格効率的なアップグレードを提供することによって、マルチテナント・サービスの使い勝手を改善する。
【０００９】
[0009]  図１は、自動テナント・アップグレード・システム１００の形態を示すシステム図である。マルチテナント・サービス１０２は、通例、共有サービス、ソフトウェア、およびデーター構造を顧客に提供する複数のデーター・センター１０４によって構成される。図示のように、マルチテナント・サービスは、クラウド・ベース・サービスのように、分散型サービスであり、複数の地理的に分散したデーター・センター１０４を有する。顧客がマルチテナント・サービスに加入すると、顧客の地理的位置の近くに地理的に位置するデーター・センター１０４においてサービス１１０をホストするスケール・ユニット１０８にテナント１０６がプロビジョニングされるのが通例である。テナント１０６とは、一般に、顧客の階層表現における最上位オブジェクトを指す（例えば、会社）。テナント１０６についての情報を格納する1つ以上のデーターベース１１２が、各スケール・ユニット１０８と関連付けられてもよい。１人以上のユーザー１１４が各テナント１０６に関連付けられてもよい。
【００１０】
[0010]  本明細書において使用する場合、スケール・ユニット１０８とは、マルチテナント・サービス１０２の容量ユニット(capacity unit)であり、アプリケーション機能の一部または全部をテナントに提供し（例えば、アプリケーションを実行しサーブする）、顧客コンテンツをホストする。スケール・ユニット１０８は、ソフトウェア・リソース（例えば、ウェブ・アプリケーション、サービス・アプリケーション、およびワークロード）、およびユーザー要求にサーブするために一緒に動作する基礎ハードウェア（例えば、データー・センター１０４における１組の接続されたサーバーおよびデーター記憶システム）を包含することができる。マルチテナント・サービスによってサービスとして提供することができるアプリケーションの例には、限定ではなく、ワード・プロセシング、メール、メッセージング、会議、タスク管理、カレンダー記録、協力、連絡先情報管理、メモ書き留め、文書管理、コンテンツ管理、プレゼンテーション、スプレッドシート、データーベース、メディア、およびドローイング・アプリケーションが含まれる。
【００１１】
[0011]  アップグレード・マネージャ１１６は、ソース・スケール・ユニット１０８ｓからターゲット・スケール・ユニット１０８ｔへのテナントのアップグレードを管理する。典型的なシナリオでは、テナント１０６をサービス１１０ａの古いビルド(build)またはバージョンから新しいサービス１１０ｂにアップグレードする。しかしながら、自動テナント・アップグレード・システムは、アップグレード以外の他のシナリオにも非常に適しており、そして使用されてもよい。異なるスケール・ユニットにアップグレードされた結果として顧客が問題を体験する潜在的可能性を最小限に抑えるために、自動テナント・アップグレード・システム１００はテスト・テナント１０６ｔを利用する。本明細書において使用する場合、「テナント」という用語は、顧客に関連付けられた実テナント１０６ｒ、および架空エンティティを表すテスト・テナント１０６ｔの双方を広く含む。一般に、一旦作られると、機能の観点からは、実テナントとテスト・テナントとの間には有意な差はない。これが望ましいのは、実テナントを模擬して制作マルチテナント・サービスの動作を検査するために使用されることが、テスト・テナントに意図されているからである。自動テナント・アップグレード・システム１００の形態は、実テナントがプロビジョニングされるデーターベース１１２ｒとは別のテスト専用データーベース１１２ｔにおいてテスト・テナント１０６ｔをプロビジョニングすることを含む。
【００１２】
[0012]  いずれの実テナント１０６ｒを移す前でも、アップグレード・マネージャ１１６はテスト・テナント１０６ｔをターゲット・スケール・ユニット１０８ｔに移す。一旦テスト・テナント１０６ｔがターゲット・スケール・ユニット１０８ｔに移されたなら、健全性モニター１１８がターゲット・スケール・ユニット１０８ｔの健全性をチェックする。ターゲット・スケール・ユニットの健全性は、テスト・テナントがアップグレードされた後で実テナントが移される前に、選択された時間量の間監視されるとよい。健全性モニター１１８は、アップグレード全体にわたってターゲット・スケール・ユニットの健全性を監視し続ける。
【００１３】
[0013]  ターゲット・スケール・ユニット１０８ｔが健全であるか否か、種々の監視技術を使用して得られた情報に基づいて判断するために、決定論的判断基準を健全性モニター１１８によって適用することができる。監視技術は、ユーザー認識シナリオ(user perceived scenarios)を検査すること、およびスケール・ユニットからの健全性信号を監視することを含む。健全性信号の例には、限定ではなく、スケール・ユニットのソフトウェアまたはハードウェアによって提供される自己診断報告、およびスケール・ユニットによって生成されるエラー・メッセージ／ログを含むことができる。ターゲット・スケール・ユニット１０８ｔに伴う問題が検出されたとき、健全性モニター１１８は、その問題に重大度レベルを割り当てる、またはその問題に基づいて警告を割り当てることができる。健全性モニター１１８は、この問題についての情報と共に警告を技術サポート要員に送ることもできる。この情報は、影響を受けるスケール・ユニットおよび重大度レベルを含む。問題が解決されるまで、警告状態はアクティブのままになる（例えば、技術サポート要員が問題を解決する、または自己回復が行われる）。
【００１４】
[0014]  アップグレードの間、健全性モニター１１８は、ときどき、ターゲット・スケール・ユニット１０８ｔにおいてアクティブな警告があるかチェックすることができる。アクティブな警告がない場合、または低い重大度レベルのアクティブな警告しかない場合、ターゲット・スケール・ユニット１０８ｔは健全であると見なされる。ターゲット・スケール・ユニット１０８ｔが健全であるように見える場合、アップグレード・マネージャ１１６は、実テナント１０８ｒをターゲット・スケール・ユニット１０８ｔに移し始める。ターゲット・スケール・ユニット１０８ｔの監視は、アップグレード・プロセス全体にわたって続けられ、ターゲット・スケール・ユニットが不健全であると判定されない限り、実テナント１０６ｒはアップグレードされ続ける。ターゲット・スケール・ユニット１０８ｔは、選択されたしきい値レベルよりも高い重大度レベルのアクティブな警告がある場合に、不健全と見なされればよい。重大度しきい値を満たす問題が健全性モニター１１８によって検出された場合、またはターゲット・スケール・ユニット１０８ｔにアップグレードされた実テナント１０６ｒのユーザー１１４によって報告された場合、アップグレード・マネージャ１１６は、ユーザーが不健全なターゲット・スケール・ユニット１０８ｔに移されないように、実テナントのアップグレード・プロセスを自動的に休止することができる。一旦ターゲット・スケール・ユニット１０８ｔに伴う問題が解決されたなら、アップグレード・マネージャ１１６は自動的に実テナント１０６ｒのスケール・ユニットのアップグレードを再開する。
【００１５】
[0015]  健全性モニター１１８の形態が、監視プローブおよび／または検査シナリオを定めさせることもできる。健全性モニター１１８は、自動的に、テスト・テナントを使用してこれらのシナリオを応用して、ターゲット・スケール・ユニット１０８ｔにおけるサービス１１０ｂとのユーザー対話処理をシミュレートし、このような対話処理の成果を監視することができる。監視は、限定ではなく、ターゲット・スケール・ユニットの健全性または動作、ターゲット・スケール・ユニットにアップグレードされたテスト・テナントおよび／または実テナント、ならびに関連コメントを、テナント・アップグレード・プロセスの間、継続的に評価するために使用することもできる。健全性モニター１１８は、検査のステータス、アクション、および／または成果を記録する(log)ことができ、アップグレード・マネージャ１１６または他の接続されているシステムによる使用が可能な報告またはフィードを制作することができ、および／またはシミュレートされたユーザー対話処理が失敗したとき、あるいはサービス、テナント、および／またはターゲット・スケール・ユニットに関連する他のシステムまたはコンポーネントを含む、ターゲット・スケール・ユニットに伴う問題が識別されたときに、通知を送るあるいは警告を発することができる。
【００１６】
[0016]  実テナント１０６ｒがアップグレードされると、ユーザー１１４は問題を体験するかもしれず、この問題を技術サポート要員１２０に報告することができる（例えば、事務スタッフまたはサポート技術者を助ける）。ユーザーが開始する問題報告のいくつかは、自動テナント・アップグレード・システム１００と直接統合されていない通信チャネル（例えば、技術サポート要員への電話コール、電子メール、またはインスタント・メッセージ）を使用して行うことができる。しかしながら、このような非統合通信は、外部システム１２２（例えば、技術サポート・システム）に記録されてもよい(log)。したがって、自動テナント・アップグレード・システム１００の形態は、アップグレード・マネージャ１１６と外部システム１２２との間においてデーターを共有することを可能にするインターフェースを提供する統合を含む。また、健全性モニター１１８は、外部システム１２２とも通信することができる。例えば、健全性モニター１１８はあらゆる検出した問題を技術サポート・システムに記録することもできる。更に、アップグレード・マネージャ１１６または健全性モニター１１８は、警告（例えば、電子メールまたはテキスト・メッセージ）を生成することもできる。この警告は、健全性モニター１１８によって検出された、ターゲット・スケール・ユニット１０８ｔに伴うあらゆる問題を技術サポート要員に通知するために使用することができる。
【００１７】
[0017]  アップグレード・マネージャ１１６は、外部システム１２２から得られたターゲット・スケール・ユニット１０８ｔの健全性に関連する情報を利用して、テナント・アップグレード・プロセスを管理することができる。例えば、アップグレード・マネージャ１１６は、ターゲット・スケール・ユニット１０８ｔにアップグレードされた実テナント１０６ｒに関連するユーザー１１４からのユーザー報告問題（即ち、トラブル・チケットまたは他のレコード）が外部システム１２２において公開されたときに、テナント・アップグレードを休止することができる。同様に、アップグレード・マネージャ１１６は、ターゲット・スケール・ユニット１０８ｔにおける問題に関連するトラブル・チケットが更新されて、問題が解決されたことまたは問題の重大度が低下したことを示すときに、テナント・アップグレードを再開することができる。
【００１８】
[0018]  サーバー・スケール・ユニット１０８のアップグレード・マネージャ１１６、健全性モニター１１８、外部システム１２２のハードウェア・コンポーネントは、本明細書において説明する機能を提供する対応するコンピューター実行可能命令を実行するのに適した１つ以上のコンピューティング・デバイスを使用して実現される。コンピューター実行可能命令は、プログラム、アプリケーション、サービス、スクリプト、または他のソフトウェアの形態でもよい。コンピューティング・デバイスは、個々のサーバーとしてまたはサーバー・スケール・ユニットとして実現されてもよい。自動テナント・アップグレード・システム１００の分散コンポーネントは、インターネット、ワイド・エリア・ネットワーク、およびローカル・エリア・ネットワークのような、しかしこれらに限定されない１つ以上のネットワークを介して通信することができる。
【００１９】
[0019]  アップグレード・マネージャ１１６および健全性モニター１１８のような種々のコンポーネントは別々のシステムとして示されているが、自動テナント・アップグレード・システム１００の機能の一部または全部が１つのシステムにおいて実装されてもよく、更に外部システム１２２の一部であると説明した機能を組み込んでもよい。
【００２０】
[0020]  図２は、マルチテナント・サービスにおいてテナントを自動的にアップグレードする方法の形態を示す上位フローチャートである。自動テナント・アップグレード方法２００は、ターゲット・スケール・ユニット作成動作２０２、テスト・テナント・アップグレード動作２０４、テスト・テナント健全性チェック動作２０６、健全性チェック結果判定２０８、実テナント・アップグレード動作２１０、完了判定２１２、保留動作２１４、警告動作２１６、および保留監視動作２１８を含むことができる。
【００２１】
[0021]  ターゲット・スケール・ユニット作成動作２０２スケール・ユニットは、ソース・スケール・ユニットにおける実テナントがリロケートされる新たなターゲット・スケール・ユニットを作成し、テナント・アップグレードに関係する他の予備アクティビティを実行する。例えば、ターゲット・スケール・ユニット作成動作２０２は、１つ以上のテスト・テナントをソース・スケール・ユニットにおけるデーターベースにプロビジョニングすることも含むことができ、このデーターベースは、新たに作成されたターゲット・スケール・ユニットの健全性を検査するために使用することができる。このデーターベースは、テスト・テナントだけを収容する専用テスト・データーベースであってもよい。しかしながら、テスト・テナントが、実テナントを収容する制作データーベースにプロビジョニングされることは除外されない。
【００２２】
[0022]  テスト・テナント・アップグレード動作２０４は、テナントをアップグレードする実際の作業を開始する。テスト・テナント・アップグレード動作２０４の形態は、スケール・ユニットをチェックして、テスト・テナントのみを含む十分な数のテスト・データーベース、および／または十分な数のテスト・テナントが、ターゲット・スケール・ユニットを検査するために利用可能か否か判定することを伴うことができる。テスト・データーベースおよび／またはテスト・テナントの数は、固定値（例えば、予め選択された数）または可変値でもよい。例えば、アップグレードされる予定である実テナントの数の割合として、可変数を計算してもよい。十分なテスト・テナントが利用可能である場合、テスト・ユニットはソース・スケール・ユニットからターゲット・スケール・ユニットにアップグレードされる。テスト・テナントは、１回または複数回に纏めてアップグレードされてもよい。十分なテスト・データーベースまたはテスト・テナントが利用可能でない場合、アップグレードは進展しない。例えば、テナントまたはデーターベースがテスト・テナント／データーベースかまたは実テナント／データーベースかには関係なく、一旦ターゲット・スケール・ユニットが最小数のテナントまたはテナント・データーベースを含んだのなら、健全性監視が行われるのでもよい。したがって、ターゲット・スケール・ユニットの健全性をチェックできるまで実テナントをアップグレードするのを回避するためには、テスト・テナントの数は、少なくとも、健全性監視をトリガーするのに必要な最小数のテナントでなければならない。
【００２３】
[0023]  テスト・テナント健全性チェック動作２０６は、テスト・テナントを使用して、ターゲット・スケール・ユニットの健全性を監視する。健全性監視は、一旦テスト・テナントの一部または全部がターゲット・スケール・ユニットにアップグレードされたなら、自動的に開始される。テスト・テナント健全性チェック動作２０６の形態は、ターゲット・スケール・ユニットの健全性、およびターゲット・スケール・ユニットにアップグレードされたテスト・テナントが評価される待機期間を定めることを伴う。待機期間は、種々の方法で定めることができる。例えば、待機期間は、実テナントの自動アップグレードが開始する前の最少時間（例えば、少なくとも３０分または９０分）のように、時間単位で定められてもよい。待機期間は、実テナントの自動アップグレードが開始する前に首尾良く完了されなければならない、１組の指定された検査に関して定められてもよい。例えば、テスト・テナント健全性チェック動作２０６は、ターゲット・スケール・ユニットが適正に構成されているかまたは問題を露呈しているか判定するためにチェックされる、選択された数のアクションを伴うこともできる。特定の検査および時間制限の組み合わせが使用されてもよい（例えば、全ての検査が完了し、少なくとも４５分が経過した）。
【００２４】
[0024]  テスト・テナント健全性チェック動作２０６によって行われる健全性チェック監視は、限定ではなく、ターゲット・スケール・ユニットにおいてテスト・テナントをプロビジョニングするときにエラーが起こらないことを判定する、ターゲット・スケール・ユニットにおけるテスト・テナント・コンテンツがソース・スケール・ユニットにおけるテスト・テナント・コンテンツと一致することを検証する、およびターゲット・スケール・ユニットからの自己報告された診断情報の収集というような、基本的な監視を含むのでもよい。
【００２５】
[0025]  また、テスト・テナント健全性チェック動作２０６の形態は、新たなスケール・ユニットにおけるユーザー・アクションの自動シミュレーションも含んでもよい。自動検査は、ターゲット・スケール・ユニットによってホストされるサービスとのユーザー対話処理を、スクリプト、ワークフロー、または他の命令のシーケンスを使用してシミュレートすることによって行うことができる。シミュレートされるユーザー対話処理は、あたかもテスト・テナントのユーザーがアクションを実行しているかのように、テスト・テナントを使用してターゲット・スケール・ユニットに対して実行される。実テナントのユーザーによって手動で行うことができる殆どのアクションをシミュレートすることができる。シミュレートされるユーザー対話処理の例には、管理的シナリオ（例えば、ユーザーを作成する、変更する、削除する、またはユーザーのリストを作る）、認証シナリオ（例えば、サービスのログインおよびログアウト）、および文書シナリオ（例えば、文書を作成、編集、アップロード、ダウンロード、または削除する）が含まれるが、これらに限定されるのではない。
【００２６】
[0026]  また、自動検査は、シミュレートされたユーザー対話処理について成功および／または失敗条件を定めることもできる。成功および／または失敗条件は、コマンドに応答して実ユーザーに提示される直接フィードバックまたは他の情報（例えば、メッセージまたはダイアログ・ボックスのコンテンツ）、あるいはアクションの結果として生成される間接情報（例えば、ログのコンテンツまたはデーターに対する変更）に基づくのでもよい。単純な成功／失敗条件は、シミュレートされたアクションの結果得られるメッセージまたはエラー・コードを検出することを含むのでもよい。例えば、テスト・テナント健全性チェック動作２０６は、ユーザーを作成しようとするときに失敗を示すメッセージを、エラー状態として認識することができる。ある場合には、単なるメッセージの生成が、エラーが発生したことを示すのに十分であることもある。他の場合には、メッセージのコンテンツを分析して、エラーが起こったか否か、またはエラーの重大度を判定することができる。同様に、ログ・ファイルを解析して、ユーザーを作成する試行および試行の結果に対応するレコードを発見することもできる。
【００２７】
[0027]  成功または失敗条件は、予期される結果に関して定められてもよい。例えば、ログインするユーザーをシミュレートするとき、予期される結果は、テナントのホーム・ページを表示することである。したがって、テナントのホーム・ページが表示された場合、テスト・テナント健全性チェック動作２０６は、そのアクションを成功と見なす。
【００２８】
[0028]  更に精巧な成功／失敗条件は、実質的なアクション(substantive action)を試した後に検証アクションを実行することを伴ってもよい。例えば、ユーザーを作成するときに、コマンドが成功したときには全く通知を行わなくてもよく、あるいは成功または失敗の直接的な指示を全く示さなくてもよい。代わりに、ユーザー・リストに新たなユーザーが現れたか否かだけが、動作の成功または失敗の指示であってもよい。このような場合、ワークフローは、テナントに属するユーザーをリストするアクション、またはユーザーの検索によって、 新たなユーザーを作成するアクションに従う。特定のユーザーの検索に応答して、サービスは、ユーザーを含む（即ち、成功）１つのエントリー・ユーザー・リスト、空のリスト（即ち、失敗）、またはユーザーが見つからなかったことを示すメッセージ（即ち、失敗）のように、種々の方法で応答することができる。全てのユーザーをリストするコマンドまたはもっと一般的な検索（例えば、名前(last name)検索）に応答して、複数エントリーのユーザー・リストを戻すことができる。戻されるリストは、テスト・テナント健全性チェック動作２０６によって解析され、テナントにおけるユーザーの存在または不在を検証することができる。
【００２９】
[0029]  健全性チェック結果判定２０８は、ターゲット・スケール・ユニットに伴う問題について受けた情報を評価する。この情報は、ターゲット・スケール・ユニットの監視、およびターゲット・スケール・ユニットにアップグレードされた実テナントのユーザーによって報告された問題についての情報を収集することによって得られる。前述のように、ターゲット・ファームが健全かまたは不健全かについての１つの尺度は、ターゲット・ファームによって検出されたまたはターゲット・ファームについて報告された全ての問題の重大度である。重大度は、全ての問題のタイプまたは分類、潜在的に可能な問題の影響（個々にまたは集合的に）、問題の数、影響を受ける機能の重要性(critical nature)、影響を受ける機能の使用頻度、またはこのような要素の組み合わせというような、種々の方法で測定することができるが、これらに限定されるのではない。例えば、１つの主要な特徴、複数の些細な特徴、または頻繁に使用される１つの些細な特徴に伴う問題は、ターゲット・スケール・ユニットを不健全として分類するのに十分に重大であると見なすことができる。
【００３０】
[0030]  ターゲット・スケール・ユニットに伴う問題が重大であると判定されたとき、ターゲット・スケール・ユニットは不健全な状態にあると考えられる。健全性チェック結果判定２０８の形態は、重大度レベルをしきい値と比較して、ターゲット・スケール・ユニットが不健全な状態にあるか否か判定することを含むのでもよい。しきい値は、問題がターゲット・スケール・ユニットを不健全にするか否か判定する。例えば、ターゲット・スケール・ユニットに伴う問題は、１および４の間の重大度レベルを割り当てることができ、１が最も重大であり、２のしきい値レベルは、いずれかの実際に起こっている問題が１または２の重大度レベルを有する場合、ターゲット・スケール・ユニットは不健全と見なされることを意味する。それ以外の場合、スケール・ユニットは健全な状態にあると見なされる。ターゲット・スケール・ユニットの健全性判定は、重大度レベルの比較を、所与のセキュリティ・レベルの問題の数のような、他の要素と組み合わせることもできる。例えば、ターゲット・スケール・ユニットは、いずれかのレベル１の警告がアクティブであるとき、または複数のレベル２の警告がアクティブであるとき、不健全と見なすことができる。スケール・ユニットが健全な状態にあるとき、方法２００は実テナント・アップグレード動作２１０に進む。
【００３１】
[0031]  健全性チェック結果判定２０８は、テスト・テナント健全性チェック動作２０６によって得られた情報、ならびにターゲット・スケール・ユニットの継続監視および検査によって得られた情報を使用する。健全性チェック結果判定２０８は、テスト・テナント健全性チェック動作２０６によって提供されるターゲット・スケール・ユニットの健全性についての情報を受動的に受けることができ、および／または連続的または周期的にターゲット・スケール・ユニットの健全性についての情報を能動的に得るまたは要求することができる。言い換えると、受動的な実現例では、健全性チェック結果判定２０８は、情報が供給されるときにトリガーされればよい。連続能動的な実現例では、テスト・テナント健全性チェック動作２０６は、ターゲット・スケール・ユニットの健全性についての新たな情報のためにログを連続的に監視し、アップグレード・プロセスに対して非常に応答性が高い制御を行うことができる。周期的能動的な実現例では、テスト・テナント健全性チェック動作２０６は、選択した時間量（例えば、１０分毎）の経過後に、クエリーを発行することができ、または最後に記録した(log)イベントを解析することができる。ターゲット・スケール・ユニットの健全性についての更新情報をシークする前に健全性チェック結果判定２０８が待つ時間は、テナントのバッチをアップグレードするために必要とされる時間または他の関連する時間期間と調整されるとよい。例えば、テナントのバッチをアップブレードするために６〜７分かかり、次のバッチのアップグレードが、現在のバッチのアップグレードが終了すると直ちに開始する場合、現在のバッチの処理が終了したときにターゲット・スケール・ユニットの現在の健全性が入手可能になるように、健全性チェック結果判定２０８は、バッチのアップグレードを開始した５分後に、ターゲット・スケール・ユニットの健全性についての情報を要求すればよい。
【００３２】
[0032]  実テナント・アップグレード動作２１０は、実テナントをソース・スケール・ユニットからターゲット・スケール・ユニットにアップグレードする。実テナント・アップグレード動作２１０の形態は、実テナントをバッチでアップグレードすることを含む。１つのバッチにおいてアップグレードされる実テナントの数は、固定値（例えば、一度に１０または２０のテナント）または可変値（例えば、アップグレードされる全部の実テナントから選択される割合）でもよく、バッチでテナントをアップグレードすることによって、問題のあるターゲット・スケール・ユニットによる影響を受ける顧客数を制限する追加の機会が与えられる。ターゲット・スケール・ユニットの監視は、実テナントのアップグレードの間継続する。
【００３３】
[0033]  実テナントの各バッチがアップグレードされた後、完了判定動作２１２が、ターゲット・スケール・ユニットにアップグレードされることを待っている他の実テナントがソース・スケール・ユニットに残っているか否か判定する。ソース・スケール・ユニットが未だ実テナントを含む場合、方法２００は健全性チェック結果判定２０８に進む。
【００３４】
[0034]  実テナント・アップグレード・フェーズの間、健全性チェック結果判定２０８は、現在行われているテスト・テナントの自動監視を使用して、ターゲット・スケール・ユニットの健全性を評価し続ける。加えて、健全性チェック結果判定２０８は、ターゲット・スケール・ユニットまたは関連するサポート・システムによって報告される問題の考慮(consideration)も組み込むことができる。例えば、エラー報告ツールが、実テナントによる使用の間に発生したターゲット・スケール・ユニットに伴う問題を記録した(log)場合、またはユーザーがエラー・メッセージ・ダイアログ・ボックスにおいて提出制御(submit control)（即ち、ボタン）上でクリックすることによってエラーを報告した場合、健全性チェック結果判定２０８は、ターゲット・スケール・ユニットの健全性を判定するときに、問題情報を評価する。
【００３５】
[0035]  問題報告は、自動テナント・アップグレード・システムにリンクされた技術サポート・システムに手作業で報告されてもよい。例えば、ユーザーが電話、電子メール、またはインスタント・メッセージングによって技術サポート要員と連絡を取り、マルチテナント・サービスに伴う問題を報告した場合、技術サポート要員は、問題についての関連情報（例えば、ドメイン名、顧客名等）を入力することができ、これによって問題によって影響を受ける１つまたは複数のスケール・ユニットの識別を可能にする。技術サポート・システムに入力される情報は、技術サポート要員によって割り当てられた問題の重大度レベルの指示を含むこともできる。これは、問題報告を健全性チェック結果判定２０８の一部として評価するときに使用することができる。
【００３６】
[0036]  関連する技術サポート・システムは、健全性チェック結果判定２０８の間における評価のために、マルチテナント・サービスに伴う問題についてのメッセージを自動的に送ることができる。自動テナント・アップグレード・システムによって受けられた技術サポート・メッセージは評価され、アクティブなアップグレードにおいてターゲット・スケール・ユニットに関与すると判定されたものが、ターゲット・スケール・ユニットの健全性を判定するときに考慮される。同様に、健全性チェック結果判定２０８は、技術サポート・システムに、ターゲット・スケール・ユニットに影響を及ぼす問題について問いあわせることができる。
【００３７】
[0037]  健全性チェック結果判定２０８がターゲット・スケール・ユニットの障害(failure)を示す場合、方法２００は、実テナントのアップグレードが開始できるように、問題の一部または全部を修復すること、および既にアップグレードされている実テナントが潜在的に直面している可能性がある問題を低減する、最小限に抑える、または排除することを意図した一連の動作に進む。
【００３８】
[0038]  保留動作２１４は、ターゲット・スケール・ユニットが非健全状態にある場合、実テナントがアップグレードされるのを自動的に中止する。テスト・テナントのみを移した後にターゲット・スケール・ユニットに伴う問題が検出された場合、実テナントは移されず、したがって顧客は影響を受けない。いくつかの実テナントがアップグレードされた後にターゲット・スケール・ユニットに伴う問題が検出された場合、アップグレード・プロセスを休止または中止することによって、影響を受ける顧客の数を抑える。
【００３９】
[0039]  警告動作２１６は、技術サポート要員に、健全性モニター１１８によって検出されたターゲット・スケール・ユニット１０８ｔに伴うあらゆる問題を通知する警告または他の通知（例えば、電子メール）を生成し、これらを訂正できるようにする。警告動作２１６は随意の動作である。
【００４０】
[0040]  保留監視動作２１８は、テナント・アップグレードが保留されている間に、テスト・テナント健全性チェック動作２０６および健全性チェック結果判定２０８について先に説明したのと実質的に同様に、ターゲット・スケール・ユニットの健全性を評価する。一旦ターゲット・スケール・ユニットが健全な状態に戻ったなら、方法２００は健全性チェック結果判定２０８に進む。
【００４１】
[0041]  完了判定動作２１２は、ソース・スケール・ユニットに何らかの実テナントが残っているか否かチェックする。全ての実テナントがソース・スケール・ユニットからターゲット・スケール・ユニットにアップグレードされた後、方法２００は終了する。
【００４２】
[0042]  本発明の形態は、システム、デバイス、または他の製品として、あるいはハードウェア、ソフトウェア、コンピューター読み取り可能媒体、またはこれらの組み合わせを使用する方法として実施することができる。以下の説明および関連する図は、本明細書において説明した発明の形態を実施するために利用することができる大多数のシステム・アーキテクチャおよびコンピューティング・デバイスを代表する、選択されたシステム・アーキテクチャおよびコンピューティング・デバイスについて説明するが、決して本発明の範囲を限定するために使用されてはならない。
【００４３】
[0043]  種々のタイプのユーザー・インターフェースおよび情報は、コンピューティング・デバイスの内蔵ディスプレイによって、または１つ以上のコンピューティング・デバイスに関連するリモート・ディスプレイ・ユニットによって表示することができる。例えば、種々のタイプのユーザー・インターフェースおよび情報は、これら種々のタイプのユーザー・インターフェースおよび情報が投影される壁面上に表示され、対話処理される。本発明が実施される複数のコンピューティング・システムとの対話処理は、限定ではなく、キーストロークの入力、タッチ・スクリーン入力、音声または他の聴覚入力、関連するコンピューティング・デバイスにユーザー・ジェスチャを取り込んで解釈しコンピューティング・デバイスの機能等を制御する検出（例えば、カメラ）機能が装備されている場合にはジェスチャ入力によって行うことができる。 
【００４４】
[0044]  図３は、本発明の形態を実施することができるコンピューティング・デバイスのアーキテクチャを示すブロック図である。コンピューティング・デバイス３００は、多種多様なコンピューターおよびプログラマブル消費者用電子デバイスにおいて具体化される本発明の形態を実現するのに適している。多種多様なコンピューターおよびプログラマブル消費者用電子デバイスには、メインフレーム・コンピューター、ミニコンピューター、サーバー、パーソナル・コンピューター（例えば、デスクトップおよびラップトップ・コンピューター）、タブレット・コンピューター、ネットブック、スマート・フォン、スマートウオッチ、ビデオ・ゲーム・システム、およびスマート・テレビジョン、ならびにスマート消費者用電子デバイスが含まれるが、これらに限定されるのではない。
【００４５】
[0045]  破線３０８によって示される基本構成において、コンピューティング・デバイス３００は、少なくとも１つの処理ユニット３０２とシステム・メモリー３０４とを含むことができる。コンピューティング・デバイスの構成およびタイプに依存して、システム・メモリー３０４は、揮発性ストレージ（例えば、ランダム・アクセス・メモリー）、不揮発性ストレージ（例えば、リード・オンリー・メモリー）、フラッシュ・メモリー、またはこのようなメモリーの任意の組み合わせを含むことができるが、これらに限定されるのではない。システム・メモリー３０４は、コンピューティング・デバイス３００の動作を制御するのに適したオペレーティング・システム３０５と、ソフトウェア・アプリケーション３２０を実行するのに適した１つ以上のプログラム・モジュール３０６とを含むことができる。プログラム・モジュール３０６は、本明細書において説明した本発明の形態を実現するソフトウェアを含む。
【００４６】
[0046]  ソフトウェア・アプリケーション３２０は、処理ユニット３０２において実行している間、方法２００の段階の内１つ以上を含むがこれらに限定されないプロセスを実行することができる。本発明の形態にしたがって使用することができる他のプログラム・モジュールは、電子メールおよび連絡アプリケーション、ワード・プロセシング・アプリケーション、スプレッドシート・アプリケーション、データーベース・アプリケーション、スライド・プレゼンテーション・アプリケーション、またはコンピューター補助ドローイング・アプリケーション・プログラム等を含むことができる。
【００４７】
[0047]  基本構成に加えて、コンピューティング・デバイス３００は追加の特徴または機能を有することができる。例えば、コンピューティング・デバイス３００は、例えば、磁気ディスク、光ディスク、またはテープのような、追加のデーター記憶デバイス（リムーバブルおよび／または非リムーバブル）も含むことができる。このような追加のストレージは、リムーバブル記憶デバイス３０９および非リムーバブル記憶デバイス３１０によって例示されている。
【００４８】
[0048]  また、コンピューティング・デバイス３００は、キーボード、マウス、ペン、音響入力デバイス、タッチ入力デバイス等のような１つ以上の入力デバイス（１つまたは複数）３１２も有することができる。ディスプレイ、スピーカー、プリンター等のような出力デバイス（１つまたは複数）３１４も含むことができる。前述のデバイスは例であり、他のものが使用されてもよい。コンピューティング・デバイス３００は、他のコンピューティング・デバイス３１８との通信を可能にする１つ以上の通信接続３１６を含むことができる。適した通信接続３１６の例には、ＲＦ送信機、受信機、および／または送受信機回路、ユニバーサル・シリアル・バス（ＵＳＢ）、パラレル、および／またはシリアル・ポートが含まれるが、これらに限定されるのではない。
【００４９】
[0049]  コンピューター読み取り可能媒体という用語は、本明細書において使用される場合、コンピューター記憶媒体を含むことができる。コンピューター記憶媒体は、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、またはプログラム・モジュールのような情報の格納のための任意の方法または技術で実現することができる。システム・メモリー３０４、リムーバブル記憶媒体３０９、および非リムーバブル記憶デバイス３１０は全て、コンピューター記憶媒体の例（即ち、メモリー・ストレージ）である。コンピューター記憶媒体は、ＲＡＭ、ＲＯＭ、電気的消去可能プログラマブル・リード・オンリー・メモリー（ＥＥＰＲＯＭ）、フラッシュ・メモリーまたは他のメモリー技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（ＤＶＤ）または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたは他の磁気記憶デバイス、あるいは情報を格納するために使用することができ、コンピューティング・デバイス３００によってアクセスすることができる任意の他の製品を含むことができる。このようなコンピューター記憶媒体はいずれも、コンピューティング・デバイス３００の一部であってもよい。
【００５０】
[0050]  本発明の形態は、電気回路において実施することもできる。電気回路は、ディスクリート電子エレメント、論理ゲートを内蔵するパッケージ化または集積電子チップ、マイクロプロセッサーを利用する回路、あるいは電子エレメントまたはマイクロプロセッサーを内蔵する１つのチップを含む。例えば、本発明の形態は、システム・オン・チップ（ＳＯＣ）によって実施することができ、図示したコンポーネントの各々または多くを１つの集積回路上に集積することができる。このようなＳＯＣデバイスは、１つ以上の処理ユニット、グラフィクス・ユニット、通信ユニット、システム仮想化ユニット、および種々のアプリケーション機能を含むことができ、その全ては、チップ基板上に、１つの集積回路として集積される（または「焼き付けられる」）。ＳＯＣによって動作するとき、ソフトウェア・アプリケーション３２０に関して本明細書において説明した機能は、１つの集積回路（チップ）上に、コンピューティング・デバイス３００の他のコンポーネントと共に集積された特定用途ロジックによって動作させることができる。また、本発明の形態は、例えば、ＡＮＤ、ＯＲ、およびＮＯＴのような論理演算を実行することができる他の技術を使用して実施することもでき、機械、光、流体、および量子技術を含むが、これらに限定されるのではない。加えて、本発明の形態は、汎用コンピューター内において、あるいは任意の他の回路またはシステムにおいて実施することもできる。
【００５１】
[0051]  図４Ａは、本発明の形態を実施するのに適した移動体コンピューティング・デバイス４００を示す。適した移動体コンピューティング・デバイスの例には、移動体電話機、スマート・フォン、タブレット・コンピューター、サーフェース・コンピューター、およびラップトップ・コンピューターを含むがこれらに限定されるのではない。基本的な構成では、移動体コンピューティング・デバイス４００は、入力エレメントおよび出力エレメント双方を有するハンドヘルド・コンピューターである。移動体コンピューティング・デバイス４００は、通例、ディスプレイ４０５と、ユーザーが情報を移動体コンピューティング・デバイス４００に入力することを可能にする１つ以上の入力ボタン４１０とを含む。移動体コンピューティング・デバイス４００のディスプレイ４０５は、入力デバイスとして機能することもできる（例えば、タッチ・スクリーン・ディスプレイ）。随意の側面入力エレメント４１５が含まれる場合、これは更に他のユーザー入力も可能にする。側面入力エレメント４１５は、回転スイッチ、ボタン、または任意の他のタイプの手入力エレメントであってもよい。移動体コンピューティング・デバイス４００はこれらよりも多い入力エレメントまたはこれらよりも少ない入力エレメントを内蔵することもできる。例えば、ディスプレイ４０５はタッチ・スクリーンである必要はない。移動体コンピューティング・デバイス４００は随意のキーパッド４３５も含むことができる。随意のキーパッド４３５は、物理キーパッド、またはタッチ・スクリーン・ディスプレイ上に生成される「ソフト」キーパッドであってもよい。出力エレメントは、グラフィカル・ユーザー・インターフェースを示すディスプレイ４０５、視覚インディケーター（例えば、発光ダイオード）、および／またはオーディオ変換器４２５（例えば、スピーカー）を含む。移動体コンピューティング・デバイス４００は、ユーザーに触覚フィードバックを与える振動変換器も内蔵することができる。移動体コンピューティング・デバイス４００は、オーディオ入力（例えば、マイクロフォン・ジャック）、オーディオ出力（例えば、ヘッドフォン・ジャック）、および信号を外部デバイスに送るまたは信号を外部デバイスから受けるビデオ出力（例えば、ＨＤＭＩ（登録商標）ポート）のような、入力および／または出力ポートも内蔵することができる。
【００５２】
[0052]  図４Ｂは、本発明の形態を実施することができる移動体コンピューティング・デバイスのアーキテクチャを示すブロック図である。一例として、移動体コンピューティング・デバイス４００は、１つ以上のアプリケーション（例えば、ブラウザー、電子メール・クライアント、メモ、連絡先マネージャ、メッセージング・クライアント、ゲーム、およびメディア・クライアント／プレーヤー）を実行することができるスマート・フォンのように、システム４０２において実現することができる。
【００５３】
[0053]  １つ以上のアプリケーション４６５をメモリー４６２にロードし、オペレーティング・システム４６４においてまたはこれに関連して実行させることができる。アプリケーション・プログラムの例には、発呼(phone dialer)プログラム、電子メール・プログラム、個人情報管理（ＰＩＭ）プログラム、ワード・プロセシング・プログラム、スプレッドシート・プログラム、インターネット・ブラウザー・プログラム、メッセージング・プログラム等が含まれる。また、システム４０２はメモリー４６２内に不揮発性記憶エリア４６８も含む。不揮発性記憶エリア４６８は、システム４０２の電源を切っても失われてはならない永続的情報を格納するために使用することができる。アプリケーション・プログラム４６５は、電子メール・アプリケーションによって使用される電子メールまたは他のメッセージ等のような情報を、不揮発性記憶エリア４６８において使用および格納することができる。 また、同期アプリケーション（図示せず）もシステム４０２に存在し、不揮発性記憶エリア４６８内に格納されている情報を、ホスト・コンピューターに格納されている対応する情報と同期させ続けるために、ホスト・コンピューターに存在する対応する同期アプリケーションと相互作用するようにプログラミングされる。認められるであろうが、本明細書において説明した本発明の形態を実現するソフトウェアを含む、他のアプリケーションをメモリー４６２にロードし、移動体コンピューティング・デバイス４００において実行することもできる。
【００５４】
[0054]  システム４０２は電源４７０を有し、電源は１つ以上のバッテリーとして実装されてもよい。更に、電源４７０は、ＡＣアダプターのような外部電源、またはバッテリーを補足するまたは再充電する給電ドッキング・クレードルも含んでもよい。
【００５５】
[0055]  また、システム４０２は、無線周波数通信を送信および受信する機能を実行する無線機４７２も含むことができる。無線機４７２は、通信事業者またはサービス・プロバイダーを介した、システム４０２と「外部世界」との間のワイヤレス接続(connectivity)を容易にする。無線機４７２への送信および無線機４７２からの送信は、オペレーティング・システム４６４の制御の下で行われる。言い換えると、無線機４７２によって受信される通信は、オペレーティング・システム４６４を介してアプリケーション・プログラム４６５に分散すること、そしてその逆が可能である。
【００５６】
[0056]  視覚インディケーター４２０は、視覚通知を与えるために使用することができ、および／またはオーディオ・インターフェース４７４は、オーディオ変換器４２５を介して可聴通知を生成するために使用することができる。図示のように、視覚インディケーター４２０は発光ダイオード（ＬＥＤ）でもよい。これらのデバイスは、有効化されたときに、バッテリー電力を保存するためにプロセッサー４６０および他のコンポーネントが停止することがあっても、これらは、通知メカニズムによって指示される期間オンのままで留まるように、直接電源４７０に結合することができる。ＬＥＤは、ユーザーがデバイスの給電(powered-on)ステータスを示すためアクションを行うまで、無期限にオンのまま留まるようにプログラミングすることができる。オーディオ・インターフェース４７４は、可聴信号をユーザーに供給し、可聴信号をユーザーから受けるために使用される。 例えば、オーディオ変換器４２５に結合されることに加えて、オーディオ・インターフェース４７４は、電話の会話をやりやすく等のために、可聴入力を受けるためにマイクロフォンに結合されてもよい。また、マイクロフォンは、以下で説明するように、通知の制御を容易にするために、オーディオ・センサーとしての役割を果たすこともできる。更に、システム４０２は、静止画像、ビデオ・ストリーム等を記録する(record)ために、内蔵カメラ４３０の動作を可能にするビデオ・インターフェース４７６も含むことができる。
【００５７】
[0057]  システム４０２を実装する移動体コンピューティング・デバイス４００は、追加の特徴または機能を有することもできる。例えば、移動体コンピューティング・デバイス４００は、磁気ディスク、光ディスク、またはテープのような、追加のデーター記憶デバイス（リムーバブルおよび／または非リムーバブル）を含むことができる。このような追加のストレージは、不揮発性記憶エリア４６８によって示されている。周辺ポート４３０は、外部デバイスを移動体コンピューティング・デバイス４００に接続することを可能にする。外部デバイスは、追加の特徴または機能を移動体コンピューティング・デバイス４００に提供すること、および／またはデーターを移動体コンピューティング・デバイス４００に転送するまたはデーターを移動体コンピューティング・デバイス４００から転送することを可能にすることもできる。
【００５８】
[0058]  移動体コンピューティング・デバイス４００によって生成されまたは取り込まれシステム４０２によって格納されたデーター／情報は、前述のように、移動体コンピューティング・デバイス４００にローカルに格納することができ、あるいはデーターは、任意の数の記憶媒体に格納することができ、記憶媒体は、無線機４７２を介して、移動体コンピューティング・デバイス４００と、移動体コンピューティング・デバイス４００に関連する別のコンピューティング・デバイス、例えば、インターネットのような分散型コンピューティング・ネットワークにおけるサーバー・コンピューターとの間の有線接続を介して、デバイスによってアクセス可能である。認められるであろうが、このようなデーター／情報は、移動体コンピューティング・デバイス４００によって、無線機４７２を介してまたは分散型コンピューティング・ネットワークを介してアクセス可能である。同様に、このようなデーター／情報は、電子メールおよび協力型データー／情報共有システムを含む周知のデーター／情報転送および格納手段にしたがって、格納および使用のために、コンピューティング・デバイス間で容易に転送される。
【００５９】
[0059]  図５は、本発明の形態を実施するための分散型コンピューティング・システムの簡略ブロック図である。本明細書において説明した発明の形態を実現するソフトウェアを含むソフトウェア・アプリケーションに関連して開発、対話処理、または編集されたコンテンツは、異なる通信チャネルまたは他のストレージ・タイプに格納することができる。例えば、種々の文書は、ディレクトリー・サービス５２２、ウェブ・ポータル５２４、メールボックス・サービス５２６、インスタント・メッセージング・ストア５２８、またはソーシャル・ネットワーキング・サイト５３０を使用して格納することができる。ソフトウェア・アプリケーションは、本明細書において説明したように、データー利用を可能にするために、これらのタイプのシステム等の内任意のものを使用することができる。サーバー５２０は、ソフトウェア・アプリケーションをクライアントに提供することができる。一例として、サーバー５２０は、ソフトウェア・アプリケーションをウェブを介して提供するウェブ・サーバーであってもよい。サーバー５２０は、ソフトウェア・アプリケーションをウェブを介してクライアントに、ネットワーク５１５を通して提供することができる。一例として、クライアント・デバイスをコンピューティング・デバイス３００として実現し、パーソナル・コンピューター５１８ａ、タブレット・コンピューター５１８ｂ、および／または移動体コンピューティング・デバイス（例えば、スマート・フォン）５１８ｃにおいて具体化することができる。これらのクライアント・デバイスの内任意のものがストア５１６からコンテンツを得ることができる。
【００６０】
[0060]  本願において提供した１つ以上の実施形態の説明および図示は、主題の全範囲の完全な綿密(thorough)および完全な開示を当業者に与えることを意図するのであり、特許請求する本発明の範囲を限定または制限することは全く意図していない。本願において示された形態、実施形態、例、および詳細は、所有(possession)を伝えるのに十分であると見なされ、特許請求される発明の最良の形態を実施することを当業者に可能にする。当業者には周知と見なされる構造、リソース、動作、およびアクトの説明は、本願の主題の知られていない(lesser known)または独特の形態を曖昧にするのを避けるために、端的であった場合または省略された場合もある。特許請求する発明は、本明細書において明示的に述べられていなければ、本願において示されたいずれの実施形態にも、例にも、詳細にも限定されるように解釈してはならない。纏めてまたは別々に示され説明されたかには関係なく、種々の特徴（構造的および方法論的の双方）は、特定の１組の特徴を有する実施形態を生成するために、選択的に含まれるまたは省略されることを意図している。更に、示されたまたは説明された機能およびアクトの内任意のものまたは全ては、任意の順序でまたは同時に実行されてもよい。以上、本願の説明および図示を行ったが、当業者であれば、本願において具体化された更に広い一般的な発明概念の形態の主旨に該当し、更に広い特許請求される発明の範囲から逸脱しない変形、変更、および代替を想起することができよう。
【図１】
2017532660.tif 000003
【図２】
2017532660.tif 000004
【図３】
2017532660.tif 000005
【図４Ａ】
2017532660.tif 000006
【図４Ｂ】
2017532660.tif 000007
【図５】
2017532660.tif 000008
【国際調査報告】
2017532660.tif 000009