雲と弾力性

すっごく弾性

クラウドサービスの開発を計画する際、多くの開発者は、彼らにとって何が新しいのか、クラウドサービスが「通常の」クラウドサービスとどのように異なるのか疑問に思っています。



クラウドやクラウドソリューションを説明するとき、彼らはしばしば弾力性について語っています。 Amazonは、そのクラウドをElastic Elastic Cloud(EC2)と呼んでいます。 「弾力性」はクラウドマーケティングで使用される美しい言葉であるという事実に加えて、明確な意味もあります。 コンピューティングリソースを実際の使用に対する支払いでレンタルし、いつでもリースを開始および停止できる可能性について話している。



これは、不安定な負荷のあるサービスにとって非常に便利です。負荷が変化すると、ノードの数を増減したり、ノードの数を増やしたり減らしたりすることができます。



だから理論的に。 実際には、美しい言葉から行為に移行することは必ずしも容易ではありません。







次の会議で簡単な「Hello World」サービスを表示することについての限り、すべては順調です。 「したがって、サービスを含むパッケージをクラウドにダウンロードしました。開始するまで少し待つ必要があります。その間、他の便利なことについて説明します。



現実の世界へようこそ。 現実の世界では、Hello Worldサービスをクラウドに保持するだけでは不十分な場合があります。 Cloud OCR SDKサービスなど、もっと複雑なことをしたい場合があります 。 私たちのサービス自体はシンプルですが、おわかりのように、光学認識を実行します。このため、サイズが約750 MBのほぼ完全なFineReader Engine配布キット(ヘルプとインストーラーを除く)を搭載しています。 現実の世界ではそれが起こります-何か役に立つことをするには、何か大きなものを使わなければなりません。



Windows AzureのPaaSモデルを使用しているため、各サービスノードはこのFREディストリビューションをどこかから取得して起動し、構成する必要があります。 論理的な解決策は、配布をBlob Storageに配置することです。 コピープロセスは可能な限り信頼性が高い必要があります。そのため、ファイル数を減らし、葉の多いディレクトリ構造を使用しないことをお勧めします。 最初に思い浮かぶのは、古き良きZIPです。



トリッキーな計画は次のようになります。

-アーカイブのダウンロード

-アーカイブを解凍します

-FREの展開と構成

-???

-標準作業



1つの問題-すべてのクラウドデータセンターにもかかわらず、FREの展開はかなり長い間続いています。 これは、仮想マシンが物理マシン上の唯一のものではなく、リソースを共有する必要があるため、ディスクスループットが特に制限されるためです。 このため、アンパックにはかなりの時間がかかります(読み取り-書き込み-読み取り-書き込み-繰り返し-所望の回数)。



クラウドレスの古い伝統に育てられた読者は、コメントに行き、ノードの起動時間がそれほど重要ではないことを「説明」する準備をすでにしています。 急がないでください。



ここに、「通常の」サービスとクラウドサービスの重要な違いがあります。



「通常の」サービスには、立ち上げと通常の仕事があります-人生の2つの異なるフェーズ。 最初に起動し、次に動作します。 クラウドサービスの場合、追加ノードの起動は通常の操作の一部です。 より多くのユーザーがいます-サービスが拡張され、追加のノードが起動します。 ユーザーが大幅に減ります-一部のノードは停止してクラウドに戻ります。



負荷をどのように予測しても、通常は負荷を制御しません。 ある時点で、予測できないサージが発生する可能性があり、追加のノードを起動する必要があります。 できるだけ早く。 クラウドは弾力性があります、覚えていますか?



起動に費やされる10秒ごとに、新たに起動されたホストの無駄なダウンタイムが発生します。 この10秒間、ノードは何か役に立つことができます。 さらに、この時点で非常に頻繁にサービスの負荷が大幅に増加し、このノードは負荷を処理できましたが、アーカイブのアンパックなどの「本当に重要な」何かで忙しいため、まだ準備ができていません。



それだけではありません。 負荷が急増すると、1つの新しいノードではなく、多くのノードを起動する必要が生じる場合があります。 その後、前の段落から10秒は、新しく起動されたすべてのノードを無駄に機能させます。 誰もが忙しいようですが、メリットはありません。



「本当に重要な」何かに費やされる1秒ごとは、ユニットの有用な作業が最も必要とされるまさにその時に非生産的に費やされます。



私たちの場合-もちろん、可能な限りFREの展開を促進する必要があります。 1つの方法は、仮想ハードディスクを使用することです。 NTFSでフォーマットしてディスクを作成し、組み込みのデータ圧縮をオンにすると、ディスクイメージは約600メガバイトを生成します。 イメージはBlob Storageに配置でき、起動時のサービスノードはそれをダウンロードして、単にマウントします。 これにより、展開時間を数倍短縮できます。



サービスがクラウドの弾力性を十分に活用するには、サービスを開発するときに追加の作業が必要です。これにより、新しいノードをできるだけ早く起動できます。 そうでなければ、弾力性は美しい言葉のままです。



ドミトリー・メッシェリャコフ、

開発者製品部門



All Articles