一般的なウェブサービスにおけるリソースの利用効率
一般的なWeb3層モデルのウェブサービスではフロントにロードバランサーを配置し、ロードバランサーの背後にWebサーバーやDBサーバーを配置します。ロードバランサーは、背後に配置されたサーバーへ届くリクエストをなるべく均等になるように配送する役割を担います。ただしサーバーに届くリクエスト1件当たりの処理にかかる計算コストが一定ではない場合、以下の図1に示すようにロードバランサーから配送されたリクエストを処理するサーバーの処理能力が足りなくなる状態(以下、高負荷状態)になることがあります。この高負荷状態が続くとシステムダウンやユーザーがサービス利用をやめてしまうことによる機会損失が起こります。そのため高負荷状態になった場合はスケールアウトを行い負荷の均等化を行います。しかし新規にサーバーを追加し負荷の均等化を行うことにより各サーバーの余剰リソースが増えるため、システム全体の利用効率は悪くなる場合があります参考1。
図1:スケールアウト時のリソース使用量の遷移
リソース利用効率の最適化による利点
システム全体のリソース利用効率を最適化することにより余剰リソースが最小化できるため、コスト削減効果が期待できます。以下の図2はwebサービス提供用のVM(virtual machine)3台(図中のweb)とログ収集用のVM1台(図中のlog)を各々独立して動かす場合と、余剰リソースが十分に有るVMにログ収集用の機能(以下、プロセス)を同居させる場合の利用効率の例になります。この例ではVM1台分のコスト削減が期待できます。
図2:非最適化状態と最適化状態の比較
Cluster Managerによるリソース利用効率の最適化
上述したようにリソースの利用効率を高めるには、余剰リソースのあるVMにさまざまなプロセスを同居させる事が効果的です。ただし状況によって余剰リソースがあるVMは異なるため、VM上で動いているプロセスは動的に他のVMにマイグレーションでき、プロセスが利用できるリソースも動的に変更できる必要があります。こういった作業を手作業で行うことは不可能ですが、Cluster Managerを使うと動的なプロセスのマイグレーションや動的なリソース変更を自動的に行うことができます。
図3:Cluster Managerの動作イメージ
Cluster Managerの課題と今後の動向
現在Cluster Managerとして提供されているソフトウエア(Apache Mesos参考2など)を利用するには、管理対象のプロセスが動作するVMの環境に非依存であることが必要になります。例えば、ウェブシステムの場合、ステートレス参考3なシステムアーキテクチャになっている必要があります。管理対象のプロセスがVMの環境に依存している場合の例を以下の図4に示します。今後は管理対象のプロセスがどのような状態でもCluster Managerによって効率的なリソース管理が実現出来るようになるでしょう。
図4:プロセスがVMの環境に依存している場合
まとめ
クラウドの利用によりシステムのスケールアウト・スケールインが容易に出来るようになりシステムの処理性能を簡単に増減できるようになりましたが、反面システムのリソース利用効率が低下することがあります。このような問題に対して、Cluster Managerが登場し、クラウドのリソース利用効率を最適化するトレンドが生まれています。
参考文献
- 参考1システム全体のリソース使用効率を以下の計算式で求められるとした場合、図1の左側(スケールアウト前)のリソース使用効率は75%、図2の右側(スケールアウト後)のリソース使用効率は50%となるため、スケールアウトすることにより使用効率が下がっていると言える。
- 式1
1サーバー当たりのリソースの使用効率(%)=使用中のリソースの割合/キャパシティ
- 式2
システム全体のリソース使用効率(%)=(1台めのサーバーのリソース使用効率+⋯+n台めのサーバーのリソース使用効率)/サーバー台数
- 式1
- 参考2Apache Mesos(外部リンク)
- 参考31回のリクエスト・レスポンスで接続が終わることを意味する。HTTPプロトコルはステートレスである注4。ウェブシステムではセッション注5を利用せず、バックエンドにあるいずれのサーバーにアクセスしてもユーザーが目的の処理を行える状態であることをステートレスなアーキテクチャと呼ぶ。
- 参考4HTTPとは(外部リンク)
- 参考5セッションとは (外部リンク)