【17-E-5】震災とHackとクラウドと
         URIベースのCSLB
Client-side URI-based load-balancing with JavaScript


                      120217
                      菅 祐貴
              さくらインターネット研究所
                  y-kan@sakura.ad.jp
About me


• 菅 祐貴 (Yuki KAN)
• さくらインターネット株式会社
  – さくらインターネット研究所
  – 主にウェブに関連した新技術について研究
  – さくらのクラウドのUI開発を担当

• Github http://github.com/kanreisa/
  – JavaScriptのUIクラスライブラリ等

• Twitter @kanreisa
• RedBull愛好家
• 自宅InfiniBand
ここ1年くらいの活動?


• 近年、利用者端末の性能がWebを見るにはオーバースペックに
  – もっと活用しよう

• サーバーはサーバーでしか出来ない処理を
  – RESTful API実装 と JavaScriptによるクライゕント
  – サーバはHTMLまで動的生成する必要ないやん
  – さくらのクラウドコンパネはそのような感じで実装

• さくらのクラウドUIは全てJavaScriptで実装
  – APIにCRUDリクエストをJSON形式のデータで直接やりとり
  – リモートスクリーン(VNC)の実装はWebSocketで独自実装

• フルJavaScript UI向けのクラスライブラリとかを開発
  – Github: http://github.com/kanreisa/ (さくらのクラウドで利用)
3.11


• 壊滅的な被害
• 電力不足と計画停電
• 福島原発の危機 → 放射能? → デマの発生

   – 公的情報を求め政府・地方自治体サイト等へのゕクセス
     が殺到 → 過負荷でゕクセス困難

   – 必要な時に必要な情報が…


   →我々に出来ることは?
できること



• インターネットインフラを守る
 – とにかく落とさないようにがんばる
 – 電力不足? → 実験用サーバなどを停止


• インフラの提供
 – ウェブサイトのミラーリング
 – 公的情報の拡散支援
  ↑今回は これに関するHackを紹介します
公的情報の拡散支援



• 文科省からの協力依頼。
 – 大震災関連情報を拡散したい。
 – ゕクセス集中を避けるためクラウド事業者に協
   力を呼びかけた

 – さくらの他、
   WIDE Project / IBM / Azure
   AWS / Accelia / Yahoo!
   さん等と一緒に協力
事業者間でゕクセスを分散したい



• 時間がない中、それぞれ対象フゔイルを適
  当なURLに配置していった
   ex)
   http://○○○.jp/download/***.pdf
   http://×××.com/resource/***.pdf
   http://△△△.ne.jp/***.pdf


 →「URIベースでLBさせたい」
URIベースのロードバランシング


• GSLBか?
 – まともに構築しようとすると大変
 – DNSラウンドロビンは割と簡単に設定できるが
   今回はリソースの位置が異なるので無理
 – というか時間がない!


• JavaScriptで簡易的なのを作れないか
 – これなら数分で作れる
 – PHPとかCGIが動かなくても可
そりゅーしょん↓

         URIベースのCSLB
Client-side URI-based load-balancing with JavaScript
しくみ
                                        インデックスページ(CSLBマスター)



                                           eq.sakura.ne.jp             JS

                                   2

            1                            各事業者のサーバー(CSLBノード)
                    インターネット

                3                       ?.blob.core.windows.net        pdf
                                                                       等


                                        ?.s3.amazonaws.com             pdf
    スクリプト実行                    4                                       等
       ↓
   URIをランダムに
                                       ?.dc1.co.us.compute.ihost.com   pdf
       選択
                                                                       等


■Request
■Response
簡単な実装例
まとめ


• JSなので すばやく対応できた
– そのときの状況と必要に応じた技術を適切に用いる
– サーバサイドの負荷を低減

• もう少しの手間で ヘルスチェックとかも可
– JavaScriptで出来ることを知る

• JSが実行できない端末でも ゕクセス◎
– hrefの値を利用

• 咄嗟のシステム構築にクラウドが大いに活躍
– あらゆる業者・地域で利用可能:雲のような計算資源
– 今後の為にもインフラをしっかり整備していきたい
ありがとうございました。

17 E-5 震災とHackとクラウドと ━ URIベースのCSLB

  • 1.
    【17-E-5】震災とHackとクラウドと URIベースのCSLB Client-side URI-based load-balancing with JavaScript 120217 菅 祐貴 さくらインターネット研究所 y-kan@sakura.ad.jp
  • 2.
    About me • 菅祐貴 (Yuki KAN) • さくらインターネット株式会社 – さくらインターネット研究所 – 主にウェブに関連した新技術について研究 – さくらのクラウドのUI開発を担当 • Github http://github.com/kanreisa/ – JavaScriptのUIクラスライブラリ等 • Twitter @kanreisa • RedBull愛好家 • 自宅InfiniBand
  • 3.
    ここ1年くらいの活動? • 近年、利用者端末の性能がWebを見るにはオーバースペックに – もっと活用しよう • サーバーはサーバーでしか出来ない処理を – RESTful API実装 と JavaScriptによるクライゕント – サーバはHTMLまで動的生成する必要ないやん – さくらのクラウドコンパネはそのような感じで実装 • さくらのクラウドUIは全てJavaScriptで実装 – APIにCRUDリクエストをJSON形式のデータで直接やりとり – リモートスクリーン(VNC)の実装はWebSocketで独自実装 • フルJavaScript UI向けのクラスライブラリとかを開発 – Github: http://github.com/kanreisa/ (さくらのクラウドで利用)
  • 4.
    3.11 • 壊滅的な被害 • 電力不足と計画停電 •福島原発の危機 → 放射能? → デマの発生 – 公的情報を求め政府・地方自治体サイト等へのゕクセス が殺到 → 過負荷でゕクセス困難 – 必要な時に必要な情報が… →我々に出来ることは?
  • 5.
    できること • インターネットインフラを守る –とにかく落とさないようにがんばる – 電力不足? → 実験用サーバなどを停止 • インフラの提供 – ウェブサイトのミラーリング – 公的情報の拡散支援 ↑今回は これに関するHackを紹介します
  • 6.
    公的情報の拡散支援 • 文科省からの協力依頼。 –大震災関連情報を拡散したい。 – ゕクセス集中を避けるためクラウド事業者に協 力を呼びかけた – さくらの他、 WIDE Project / IBM / Azure AWS / Accelia / Yahoo! さん等と一緒に協力
  • 7.
    事業者間でゕクセスを分散したい • 時間がない中、それぞれ対象フゔイルを適 当なURLに配置していった ex) http://○○○.jp/download/***.pdf http://×××.com/resource/***.pdf http://△△△.ne.jp/***.pdf →「URIベースでLBさせたい」
  • 8.
    URIベースのロードバランシング • GSLBか? –まともに構築しようとすると大変 – DNSラウンドロビンは割と簡単に設定できるが 今回はリソースの位置が異なるので無理 – というか時間がない! • JavaScriptで簡易的なのを作れないか – これなら数分で作れる – PHPとかCGIが動かなくても可
  • 9.
    そりゅーしょん↓ URIベースのCSLB Client-side URI-based load-balancing with JavaScript
  • 10.
    しくみ インデックスページ(CSLBマスター) eq.sakura.ne.jp JS 2 1 各事業者のサーバー(CSLBノード) インターネット 3 ?.blob.core.windows.net pdf 等 ?.s3.amazonaws.com pdf スクリプト実行 4 等 ↓ URIをランダムに ?.dc1.co.us.compute.ihost.com pdf 選択 等 ■Request ■Response
  • 11.
  • 12.
    まとめ • JSなので すばやく対応できた –そのときの状況と必要に応じた技術を適切に用いる – サーバサイドの負荷を低減 • もう少しの手間で ヘルスチェックとかも可 – JavaScriptで出来ることを知る • JSが実行できない端末でも ゕクセス◎ – hrefの値を利用 • 咄嗟のシステム構築にクラウドが大いに活躍 – あらゆる業者・地域で利用可能:雲のような計算資源 – 今後の為にもインフラをしっかり整備していきたい
  • 13.