WaterMind PC Blog

PCとネットワークに関するニュースコラム.

FaceBook: 日本での成功の鍵はゲーム?

2011-01-21 05:35:56 | ネットワークサービス
世界最大規模のSNS FaceBook において,ゲームアプリは非常に重要な役割を果たしている.

 FaceBook のゲームは,登録された友人間のコミュニケーション量を増やし,その結びつきを強めるのと同時に,知人以外の新たな友人を発見しやすくする.

  FaceBookゲームにおける FaceBookポイントや各会社のポイントなどの有料サービスは,問題も多いが,ビジネスモデルとしては成功しやすい.

  FaceBookゲームは,基本的に無料である.そのためそのゲーム内容は,一般的なゲーム専用機のソフトに比べて,薄くなっている.

  しかし逆に FaceBook ゲームの薄さ・軽さは,そのゲーム内容や成果うんぬんよりも,そのゲーム上での人付き合いの楽しさを際立たせることになった.

  しかも一般的なゲーム機のソフトと異なり,FaceBook ゲームでは,複数のゲームを次々と簡単に切り替えながらプレイすることができる.

  FaceBook ゲームは,無料でプレイでき,なおかつ,複数のゲームプレイ切り替えが簡単であることから,ゲームユーザーの多くが複数のゲームを同時にプレイしている可能性が高い.

 FaceBook ゲームは

  1. 低予算で短期開発でき(薄くてもかまわないゲーム内容,Flash開発)
  2. ビジネスモデルとして堅実(無料で勧誘,有料サービスで課金)
  3. 他のゲームとユーザー獲得を争うことも少ない(ゲームの同時使用)

と言う特徴を持つ.

  したがってゲーム不況にあえぐゲーム開発会社にとって,#FaceBook ゲームはビジネスチャンスとなりえる.

  FaceBook のユーザー数が日本では伸び悩んでいるという噂をよく聞くが, FaceBook ゲームの日本語化が進んでいないことも,大きく影響しているのではないか?

  FaceBook の日本における成功は,意外にも,このゲームが鍵を握っているのかもしれない.


モダンなインターネットサービス仕様

2011-01-12 14:33:44 | ネットワークサービス

たたき台です.今後,加筆・修正していく予定です.

★クライアントについて

  • サービスのクライアントは,複数のハードウエア・ソフトウエアをサポートする
  • サービスの主要なクライアントハードウエアは
    • PC
    • ガラケー
    • スレート端末
    • スマートフォン(Android, iPhone)
    • TV
  • サービスの主要なクライアントアプリは
    • PC Webブラウザ(Javascriptあり,マウス操作)
    • ガラケーWebブラウザ(iMode,Javascriptなし,テンキー操作)
    • スレート/スマートフォン Webブラウザ(Android, iPhone,iPad,タッチ操作)
    • TV Webブラウザ(リモコン操作)
    • それぞれのハードウエア別・OS別の専用アプリや連携アプリ
  • サービスは,最低限,Webブラウザをサポートする
  • サービス-クライアント間で使用するプロトコルは,HTTPとHTTPS のみに限定
  • クライアントは,マルチアカウントをサポートする(単一クライアントにおけるアカウントの切替,オプション)
★ユーザー認証について(オプション)
  • サービスは,複数ハードウエアや複数アプリからの,単一アカウントによる同時ログインをサポートする
  • サービスは,自社提供アカウントだけではなく,他社サービスのアカウントでも認証できるようにする(オプション,認証サービスの活用)
  • サービスは,最低限,そのサービス独自のアカウントを取得可能なWebページと,そのアカウントでログイン可能なWebページを持つ
★APIについて
  • サービスは,APIをその仕様と共に公開する
  • サービスは,APIを使用するクライアントやサービスは事前登録制とし,登録状態をWebで公開する(オプション)
  • サービスは,自APIを使用するクライアントやサービスについて,認証チェックを行う(オプション)
  • その認証チェックは,OAuthのようにワンクリックで認証でき,なおかつ,サードパーティにアカウントを保存しない方法が望ましい
  • APIには,サーバ負荷を軽減するために単位時間あたりの使用回数制限を設ける(オプション)
★サポートについて
  • サービスは,そのサービスに関するヘルプ,連携アプリ・サービス,技術文書等を提供する公式サイトを公開する
  • サービスは,そのサービスに関するディスカッションが可能な公式BBSや公式wikiを公開し,管理する
  • サービスは,個別ユーザーサポートのために,専用の問い合わせフォーム,メールアドレス,Twitterアカウントを公開する

モダンなインターネットサービスは,Webブラウザに依存しない

2011-01-12 12:27:36 | ネットワークサービス

モダンなインターネットサービスは,Webブラウザに依存しない.

モダンなインターネットサービスでは,HTML, Javascript, CSS, AJAX, HTTP を内部的に使用するため,Webブラウザとの親和性は高いが,Webブラウザは必須ではない.

モダンなインターネットサービスは,その機能を API として公開する.これによりサービスは,表示端末やユーザーインターフェースから自由になることができた.

SaaS 等の流行により,再びサーバ・セントリックな時代が訪れているが,それは TSS 時代のメインフレームとダム端末の関係とは異なる.

クライアント側には,PC,スマートフォン,スレート端末などのさまざまハードが存在し,その中で mashup アプリやWebブラウザを含む様々なソフトが動いている.しかも同じユーザーアカウントで複数ハード・ソフトを同時に稼働させている.




Skypeの全世界的不具合 - エピローグ

2011-01-05 04:43:17 | ネットワークサービス

昨年12月23日午前1時頃からほぼ24時間にわたって続いたSkypeの全世界的不具合.このようなSkypeの全世界的不具合は,2007年8月にも発生しており,その時にSkypeはその信頼性に深い傷を負った.特にビジネスでSkypeを使用していたユーザーは,Skype使用の断念を検討したはずだ.

しかしその後Skypeは安定的な運用が続き,信頼性はほぼ回復されていたと言ってよかった.不具合を体験した多くのSkypeユーザーは,同社が大規模不具合から得られたデータを元に,何らかの対策をシステムに対して行ったものと考えていたことだろう.ところが…

一般ユーザーのSkype需要が高まるであろうクリスマスイブの前日に,悪夢は再びよみがえった.

その時,ご存じのように,TwitterはSkype不具合のツイートに埋め尽くされ,サーバは過負荷状態となり,一時的にはクジラ状態(過負荷によるシステムダウン)に陥る場面もあった.Skype側が不具合の状況について,Twitterを使って報告を行ったことも,この過負荷状態の一因だったかもしれない.いずれにしてもSkypeは他のサービスをも巻き込みながら復旧にもがき苦しんだ.そして発生から20時間後,ようやくこの未曾有の全世界的不具合は終息を迎えることになった.

昨年12月29日SkypeのCIOである Lars Rabbe が,そのブログ上に「今回の不具合に関するお詫びと今後の対策」を発表した.そこには,今回の不具合の発生過程が書かれていた.それによると

  1. 22日:オフラインのインスタント・メッセージをサポートするサーバクラスターが過負荷状態に陥った
  2. Skype側は過負荷状態のサーバを使用不能(注:日本語訳では「機能不全」となっているが,原文では「disabled」)にしたり,あるいはサーバからクライアント要求を取り除くことで対処
  3. Skypeクライアントに対する上記サーバからの反応が遅延(上記対策が間に合わなかったため)
  4. Skype for Windowsクライアントのバージョン5.0.0152(注:全スーパーノードの25%~30%を含む)にはバグがあり,この反応遅延を処理できずにハング
  5. 多くのユーザーが上記クライアントを一斉に再起動
  6. 上記のサインイン処理のために,生き残っているスーパーノードネットワークに通常の100倍のトラフィックが発生
  7. この負荷に対して耐えきれないスーパーノードは,自己防衛システムを発動(注:おそらく他のノードからの接続拒否)
  8. 処理できない負荷は,生き残っている他のスーパーノードに転送され,同じくそのスーパーノードも過負荷状態になり,やはり自己防衛システム発動.
  9. 以下スーパーノードネットワークはデス・スパイラルに陥り(注:日本語訳は「肯定的なフィードバック」となっているが,原文は「positive feedback loop」であり,「正のフィードバック」が訳としては正しいと思われる),SkypeのP2Pネットワークにカタストロフィが訪れる
  10. Skype側が数百のメガ・スーパーノードを投入(注:投入の正確な日時は不明)
  11. 23日昼:全ユーザーの15~20%しか回復されていないため,数千のメガ・スーパーノードを投入
  12. 24日0時頃:大多数のユーザーの接続が回復
  13. 24日昼:グループビデオ通話リソースもスーパーノード化して投入
  14. 24日夕方~夜:スーパーノードネットワークの安定を確認
  15. 25日:上記リソースをグループビデオ通話用に戻し,ある程度のメガ・スーパーノードをネットワークから切り離す(注:一部は安定性確保のため残す)
というものだった.最初のオフラインメッセージ処理用サーバのオーバーロードが,なぜ起こったのかは記載されていない.ホリデーシーズンの影響もあったのかもしれない.その後の流れは,比較的単純だ.

この記事にはスーパーノードの機能についても,以下のように解説されている.
スーパーノードは通常のノードと比較して、ディレクトリーとして機能したり、他のスカイプ・クライアントをサポートしたり、それらの接続をサポートしたり、それぞれのスーパーノードごとに数百のピア・ノードをまとめたローカルな一群を作成する点において重要
上記に書かれているとおり,スーパーノードはSkype通信の接続中継(ルーティング)を行うのが主な役割だ.このいわゆるP2P通信は,サーバ経由通信とは異なり,負荷分散が簡単でインフラ投資が少なくて済む等のメリットを持つ.ただ今回の記述で,スーパーノードにディレクトリ機能があることを私は初めて知った.ディレクトリ機能とは,一般的な使用においては,メールアドレス(連絡先)等のデータベースを意味する.Skypeにおいては,おそらく通信相手のネットワーク上の位置を特定する機能だと推測される.またスーパーノードは数百のピア・ノード(スーパーノードに所属する通常のノード)を束ねていることから,スーパーノードは,この所属ピア・ノードのディレクトリ情報を持っているのだろう.通信相手のネットワーク位置特定は,おそらくスーパーノード同士のネットワークへの問い合わせによって解決されると想像される.また問い合わせ負荷を軽減するために,それぞれのスーパーノードはキャッシュを持っているに違いない.

さらに
オペレーション上のパラメータが期待値の範囲内でない場合、スーパーノードには自らを守り、それらをホストするシステムに不利益となる影響を避けるためのメカニズムが組み込まれています。

この自己防衛システムの詳細については記載されていないが,おそらくノードダウンに陥りそうな負荷がスーパーノードにかかったときに,他のスーパーノードからの問い合わせを拒否する機能と想像される.つまり自らをスーパーノードネットワークから切り離し,最悪な状態であるノードダウンを避ける方法だ.これならば,自己防衛システムを発動したスーパーノードに所属するピア・ノード同士の通信だけは,確保できる可能性が高い.またおそらく自己防衛システム発動スーパーノードは,定期的にスーパーノードネットワークに接続し,他のスーパーノードからの問い合わせ数をモニタリングし,負荷が許容範囲であれば,ふたたび問い合わせを受け付ける「自己防衛状態解除」システムも組み込まれているのだろう.

Skypeでは,この自己防衛システム発動のトリガーとなる負荷閾値を,現在のSkypeネットワークからの観測値とコンピュータ・シミュレーション等により,決定したのだろう.ただしご存じのように,P2Pネットワークは非線形でダイナミックな複雑系であり,ネットワーク挙動の完全な未来予測は不可能だ.今回,自己防衛システムは結果的には,スーパーノードネットワークを崩壊させる一因ともなってしまった.

ネットワーク挙動の完全制御は本質的に不可能であり,カタストロフィーに落ちる可能性を0にすることはできない.ネットワーク運営者にできることは,コストの許す限り,様々な,互いに独立した緊急時対策を,常に準備しておくことだろう.自己防衛システムによるスーパーノードネットワーク維持が失敗した時,Skype側にはまだ(最後の)切り札が残っていた.

それは,「メガ・スーパーノード」インスタンスの投入だった.ブログ記述によると

P2Pネットワーク上に何百ものスカイプ・ソフトウェアのインスタンスを作成し、複数の専用スーパーノードの働きを担わせました
(おそらくアウトソーシング仮想マシン上だと思われるが)Skypeは一時的に数百のスーパーノードをP2Pネットワーク上に投入し,壊滅状態にあったスーパーノードネットワークを支えようとしたわけだ.ただ…,この呼称には疑問が残る.なぜキロ(K=数千)にも満たない数百のスーパーノードで,メガ(M=数百万)なる呼称をつけたのだろう?確かに「キロ・スーパーノード」では頼りない印象を受ける時代ではあるが,もともと想定されていたスーパーノード投入数の単位は,数百ではなく,数百万ではなかったのか?

いずれにしても,緊急時シミュレーションをSkype側では行っているはずであり,緊急事態に対するメガ・スーパーノードの適切な投入量,その効果予想,さらには対策コストをも事前に計算していると思われる.しかし残念ながら数百という初期の投入量は,今回の危機に対して適切ではなかった.これが,SKypeネットワークの回復に24時間近くかかった要因となったのは間違いないだろう.

ブログ記事によると,SKype側は今後の対策として
  1. パッチ及びバグ修正済みクライアントの提供
  2. 新しい自動更新方法の検討
  3. 障害検知のスピードを上げる
  4. ベータテスト方法の検討
  5. 中核システム容量を定期的に見直す
をあげている.これらの対策は当然と言えば,当然のことだ.

ただ自分としては,メガ・スーパーノードの投入タイミングと投入量の判断について,全く記載されていないことに疑問が残る.もし迅速に数千単位あるいは数万単位のメガ・スーパーノードが投入されていたのであれば,もっと早く障害から回復できたのではないか?一端,崩壊してしまったP2Pネットワークが再び正常化するまでの時間は,線形ではないはずであり,それをSkype側も熟知していたはずだ.初期に大量のメガ・スーパーノードが投入されていれば,カタストロフィに陥る前に,SKypeネットワークを安定させることができ,しかもすぐにメガ・スーパーノードを離脱させ,メガ・スーパーノード維持コストをも押さえることができたかもしれない.Skype経営陣の判断は適切だったのだろうか?それとも「緊急時対策コストを最小限に抑えるために,カタストロフィ発生から復旧までには,24時間かけてよい」という危機管理ポリシーが存在するのだろうか?

サービスのダウンタイム時間と,ユーザーの信頼度の関係も,線形でないように私には感じられる.Skype側は「復旧がクリスマスイブに間に合って良かった」としているが,信頼を再び裏切られたユーザーの失望感やSkype使用に対する不安が,クリスマスイブに影響しないとでも言うのだろうか?今回の不具合対策発表の他に,有料ユーザーには30分無料通話クーポンを配布しているようだが,無料ユーザーには何もないのだろうか?実際,無料ユーザーの中でも一部のユーザーは,スーパーノードとしてSkypeネットワークを支え,それに貢献しているユーザーもいるはずだ.

これを機に,Skype側はスーパーノードであるクライアント上に,それを明示し,サービス貢献度(処理量・サービスアップタイム)に応じて,無料通話クーポンやポイントなどの何らかのキックバックを与えてはどうか?そうすれば,そのユーザーはスーパーノードをできるだけ維持するように,以前よりも努力するだろう.

いずれにしても,今回上げたSkype側の対策案はまだ不十分に思う.危機管理にはいくらでもコストをかけることはできる.したがってどこまで危機対策を行うのか,明確な危機管理ポリシーを経営陣は採択する必要がある.AUをはじめとして,Skypeが今後の携帯端末やスマートフォンに採用されていくのは間違いないだろう.そうなればSkypeネットワークはさらに大規模な社会インフラとなると同時に,その複雑度を増し,挙動予測はますます難しくなる.そのような状況下で今回のような大規模な不具合が発生すれば,社会的混乱すら招きかねない.Skype経営陣には,社会インフラ企業としての自覚を持って,危機管理ポリシーの再検討に着手していいただきたい.