Azure Dynamic Scaling でクラウド環境の動的なスケールアウトを実現
昨日の Azure MMC に続きAzure関連の新機能をご紹介。
クラウドの負荷に応じてスケールアウトさせられる便利ツール Azure Dynamic Scaling が
これまたMSDNのコードギャラリーで公開されている。
ちょっとしたWebサイト構築にフォーカスした Google App Engine が勝手に環境をスケール
してくれることに魅力を感じて利用している方もいるだろうが、Azureでも動的スケールアウトが
可能になってきている。しかも、より柔軟に。
興味のある方は上記ページからソースをダウンロードしてみていただきたい。
いきなり Visual Studio でビルドしろと言われても困る…という方はドキュメントを読むだけでも
このツールの概要を理解していただけるだろう。
このツール、サンプルながら画面が提供されており、ブラウザで負荷状況を確認する
ダッシュボードと、負荷を与え続けるクライアント、および状況に応じてインスタンス数を
変更するScalingEngine(コマンドプロンプト)からなる。
クライアントを起動して負荷を与える。このツールでは処理キューにメッセージを投げ続けて
滞留が増えてくると、裏でさばく側のインスタンス数を増やす(逆の場合は減らす)ように
なっている。下図は秒間60件投げてキューに2件滞留している状態。
負荷をあげながら、ダッシュボードをみていると徐々に滞留メッセージ数が増えてきて…
閾値を超えると管理APIを経由してインスタンス数の増減が行われる。
すると滞留していたメッセージが消化されて元に戻るという一連の流れ。処理VM数を
CPU使用率ではなくキューに滞留しているメッセージの数で制御しようという発想が
クラウドっぽいと個人的に感じている。
やっていることを別の視点でおさらいしておくと、キューを媒介した非同期アーキテクチャの
サービスにおいてキューにメッセージを投げ続けてゆき…
キューの状況や各サービスのパフォーマンスカウンターなどをTABLE Storage に記録して、
Scaling Engineがインスタンス数の増減を行う。
その状況をダッシュボードからながめられるようにしているのである。
もっと違う仕組みで制御したい、という方もいるかもしれないが、その場合はソースを
すべて公開しているので適宜自分なりなカスタマイズを施してみて欲しい。
願わくば「上限Midium×10インスタンスまで滞留キューとCPU負荷をみてスケールアウト」
とかいう設定をAzure側でできるようになると便利なのだが、当面はAzure Dynamic Scaling の
ようなツールで対応するほかないだろう。
ただ、昨日紹介したAzure MMCや、近日中に発表があるであろう新しいSDKの進歩を見るに
この手の機能拡張は、そう遠くない将来に実現されると思われる。もっとこんな感じで!
という具体的なアイディアがある方は、コチラの投票サイトにエントリーしてみていただきたい。
開発チームの動きを中の人目線でみているに、みなさまの民意は無下にできない模様。
なお、現時点においてAzureの使用料は従量課金が基本となっており、技術的にはカッコイイ
クラウドスケールな世界を実現しようとすれば、それなりなコストがかかってしまう点に十分
注意していただきたい。まあ、時間課金なのでさっと展開してすぐデプロイした環境を
削除すれば、いきなり莫大な費用が発生して「パケ死」することはないだろうが。
ご利用は計画的に。