スポットインスタンスを使用することでAWS EC2料金を50%削減できます
スポットインスタンスは、柔軟な開始と終了の時間を持つ変動する作業負荷に合わせて設計されています。しかし、オートスケーリングと併用すると、オンデマンドインスタンスのコストの一部で置き換えることができます。
スポットインスタンスは約50〜70%の節約ができます
スポットインスタンスは、AWSが余剰計算能力を大幅な割引で販売することを可能にする特別な種類のEC2インスタンスです。これらはAWSによっていつでも終了される可能性がありますが(通知は2分前)、終了率は非常に低く(ほとんどのインスタンスで月に5%未満)、自動スケーリンググループで使用されることを想定しています。
スポットインスタンスの価格は一日中変動しており、株式市場のように、常に稼働しているスポットインスタンスのフリートを運営するための月間コストを判断するのが難しく、インスタンスの終了が非常に頻繁に発生していました。
しかし、AWSは2018年初頭にこの問題を解決し、現在ではスポットインスタンスの仕組みが大きく変わりました。余剰計算能力に対して入札するのではなく、AWSは余剰計算能力を売る意志がある最低価格を設定します。
これにより、スポットインスタンスの価格はかなり一貫しており、また持続時間も長くなります。ほとんどの変動は月の間に起こり、日々の突発的な急騰ではありません。ほとんどのインスタンスは、例えば
c5シリーズは比較的フラットのままです。
いくつかの事例では、ほとんど変動が見られない、例えば次のように
t2/
t3シリーズ。現在のスポットインスタンスの価格は、EC2コンソールの「スポットリクエスト」>「価格履歴」で確認できます:
平均すると、少なくとも50%、そして最新のインスタンスのほとんどでは約70%の節約ができるでしょう。AWSはスポットインスタンスが「最大」で90%節約できると主張していますが、これはほとんどがマーケティングの一環であり、90%の節約が可能なのは、AWSがほとんど販売していない古いインスタンスタイプに限られています。
スポットインスタンスを非常に便利な場所に配置します。彼らは3年間のリザーブドインスタンス契約とほぼ同じ価格ですが、3年間の契約に縛られるという明らかなデメリットはありません。
オートスケーリングによるスポットインスタンスの欠点の修正
大きなコスト削減が別の欠点によって相殺されると思うかもしれませんが、実際にはそうではありません。スポットインスタンスの主な問題は、AWSによっていつでも終了される可能性があり、通知がわずか2分しかないことです。これは問題のように聞こえますが、自動スケーリングを使用することで、この問題は最小限に抑えられます。
オートスケーリングは、需要に応じてサーバーアーキテクチャを拡張するAWSの機能です。ウェブサーバーが過負荷になると、新しいサーバーが自動的に作成されて負荷を分散します。これには、パッケージのインストールからコードの実行まで、サーバーのライフサイクルを自動化する必要がありますが、その他は比較的簡単に設定できます。
オートスケーリングは、目標とするサーバーの数を維持しようとし、サーバーの1つがクラッシュした場合、代わりのサーバーを立ち上げることができます。これはスポットインスタンスでも同様で、AWSがコンピュート容量を回収する場合、その場所に新しいスポットインスタンスを作成できます。オートスケーリンググループに複数のインスタンスがある場合、ダウンタイムは発生しません。オートスケーリングを設定するのにかかる時間がスポットインスタンスの唯一の欠点ですが、月々のコンピュートコストを大幅に削減するためには、一度それを行うだけで済みます。
スポットインスタンスは非常に優れているため、オンデマンドインスタンスが異常に高価に見えます。スポットインスタンスは、AWSが実際にインスタンスを販売するつもりでいるコストの本質のようです。彼らは、スケーラブルなサービスのスキーマに適応することを望んでおり、サーバーフリートを運用することで、ビジネスの成長とAWSの利益の両方にとって良い方向に進むからです。また、彼らは自動スケーリングの設定を促すために、より低い価格を利用しています。自動スケーリング自体もコストを節約し、スポットインスタンスと組み合わせることで、ウェブサーバーのようなスケーラブルなワークロードの運用が予約インスタンスよりもはるかに安価になります。
もちろん、必要なのが単一のWebサーバーであり、それが100%の稼働時間を求めるのであれば、オートスケーリンググループをセットアップするよりも、予約インスタンスを使用する方が金銭的に有利かもしれません(これにより同様の金額を節約できます)。スポットインスタンスは、複数のインスタンスがある場合にのみ価値があります。そうでない場合は、AWSがインスタンスを再請求した際に短時間のダウンタイムを経験する可能性があります。
オートスケーリングの操作方法
オートスケーリングの設定に関する完全なガイドを読むことができますが、その要点は非常にシンプルです。
まず、サーバーのライフサイクルを自動化する方法を見つける必要があります。手動で新しいサーバーを作成する場合に通常行うセットアップをすべて処理できる構築スクリプトを作成しなければなりません。時間がかかるかもしれませんが、自動的にスケーリングが行えることが保証されます。新しいインスタンスの作成時間を短縮するために、すべての事前インストールされているソフトウェア(そして必要に応じて独自のコードも)を含むカスタムAMIを作成してください。
次に、EC2コンソールのAuto Scalingタブから新しい起動設定を作成します。この設定には、Auto Scalingグループにサーバーがどのように起動されるかに関するすべての情報が含まれています。たとえば、インスタンスタイプ、イメージ、スタートアップスクリプトなどです。「詳細の設定」タブから「スポットインスタンスをリクエストする」をチェックします。
オートスケーリンググループでスポットインスタンスを使用することにはほとんど欠点がありませんが、アプリケーションがサーバーレベルでの中断に対処できない場合は別です。一般的なルールとして、アプリケーションが簡単に負荷分散できるのであれば、スポットインスタンスの使用には問題がないでしょう。



