AMAZON EC2 スポットインスタンスとSPOT（旧 SPOTINST）についてスポットインスタンスの活用皆さん、Amazon EC2 を活用されていますか？
Amazon Elastic Compute Cloud(Amazon EC2、以下 EC2)は、利用したいリソースを利用した時間だけ料金を支払うオンデマンドでの料金体系ですが、他にも安く使うための様々な仕組みがあります。
本記事では、その仕組みのご紹介と、特に"スポットインスタンス"について掘り下げていきます。
皆様の EC2 の利用コストの最適化の方法を是非習得してください！

EC2 の 料 金 体 系 と ス ポ ッ ト イ ン ス タ ン ス

ここでは、EC2 で利用可能な料金プランの概要を解説します。

オンデマンド

通常の支払い方法です。リージョン毎に対応するインスタンスタイプの 1 時間あたりの価格が設定されており、利用した分だけ課金されます。現在では、Free 系の Linux については秒単位の課金(最小 60 秒)となります。Windows やRedHatEnterpriseLinux などの商用 OS の場合は 1 時間単位の課金となります。

リザーブドインスタンス

オンデマンドが利用分を都度払う仕組みだったのに対して、リザーブドインスタンスは予め利用するリソースの条件を指定し、1 年または 3 年間利用する契約とすることで割引を得ることができます。契約形態や支払い方法によって割引率が異なるため、利用する予定のユースケースに照らし合わせて選択する必要があります。本記事では詳細は割愛しますが、常時稼働させるようなユースケースで特に有効なコスト削減手段です。ただし、条件指定が一致しないと適用されないので運用に注意が必要なプランでもあります。

リザーブドインスタンス 使用例

6$9,1*63/$16
購入する期間はリザーブドインスタンスと同様に  年または  年間利用する契約です。ただし、リザーブドインスタンスと比べて適用基準が柔軟になります。 時間あたりに使用する金額を確定することで、その金額に達成するまでのオンデマンド利用分が割引されます。(& の特定インスタンスファミリーに適用するプランと、より広範囲にコンピュータリソースを対象とするパターンを選択出来ます。
6DYLQJV3ODQV 使用例スポットインスタンス
$PD]RQ は (& をはじめとするコンピュータリソースサービスをホストするために、データセンターに多数のサーバーリソースを保持しています。利用されていないサーバーリソースについて、オンデマンド価格と比べて安価に提供しています。ただし、6/$ が保証されず、$:6 側の都合で停止されてしまうなど、通常の利用方法と比べていくつか制限があるため、利用にあたって注意が必要です。詳細について以降で述べます。利用方法はオンデマンドでの起動の場合に似ていて、スポットリクエストによる実行が一般的です。オンデマンドと同様必要事項を入力しますが、リクエストの条件を指定し、その指定条件ないで起動可能なリソースを確保してインスタンスを起動します。

スポットインスタンス 起動例

スポットインスタンスとは？

ここまででご説明した料金プランの中で価格的には最も安くなる可能性があるスポットインスタンスですが、その特性は他の料金プランと大きく異なります。

メリット
利用料金は非常に安価です。オンデマンドと比較して最大 割引されます。価格はスポットインスタンス用の市場価格が適用されます。需要と供給により決まります。現在の価格は、:HE サイトで確認することが出来ます。
KWWSVDZVDPD]RQFRPMSHFVSRWSULFLQJKWWSVDZVDPD]RQFRPMSHFVSRWLQVWDQFHDGYLVRU
制限事項

スポットインスタンスは格安である一方、様々な制限事項があるため、利用用途を注意する必要があります。 有休リソースがある場合にのみ利用可能
スポットインスタンスは有休リソースを活用しています。多くのユーザが他の料金プランやコンピュートリソースを利用している場合に、スポットインスタンス用のキャパシティが確保できない場合があり、その際はそもそもインスタンスを起動することが出来ません。また、後述する $:6 の都合による停止が発生する可能性があります。
$:6 側の都合で停止される
前述のように、スポットインスタンスは有休リソースを活用していますが、キャパシティ予約済みのリクエストや、オンデマンド利用などの他の料金プランのリクエストが増えて該当するアベイラビリティーゾーンのキャパシティが枯渇した時に、稼働しているスポットインスタンスを終了してキャパシティを回復しようとします。その結果、終了対象と判断された場合、メタデータや &ORXG:DWFK(YHQW で停止を通知した上で、 分後に終了処理を実行します。

終了処理から 1 分以内に終了できない場合は、最終的に強制停止が実行されるため、時間内に OS のシャットダウン処理や必要な場合データの保存などをしておく必要があります。
なお、インスタンス起動時の設定に応じて終了の代わりに停止を選択して EBS を再利用することは可能です。
停止される順序は、スポットインスタンスのリクエスト実施時に設定した入札金額によります。現在のスポットイン
スタンス市場価格が入札金額より高くなった場合は、すぐに停止対象となります。市場価格より入札価格が高い場合は、該当インスタンスタイプのうち入札価格の低い順番で停止対象となります。

3. SLA が保証されない
スポットインスタンスは AWS の都合で停止する可能性があるため、SLA の対象外となります。

スポットインスタンスの活用方法

先にあげたような特性があるため、スポットインスタンスを利用する場合、ユースケースを考える必要があります。

1. ステートレス
EBS を保持可能とはいえ、状態を保持するユースケースにはあまり向いていません。上で稼働させるアプリケーションのアーキテクチャをステートレス前提でするなどの対応が必要です。

2. 短時間稼働
短時間で利用して終了出来るような処理に向いています。たとえばバッチ処理等です。6 時間以内であれば、短時間のスポットインスタンスの利用も可能で、この場合は指定時間以内に強制停止することはありません。

また、システムとしてリソースを維持できるようにするための仕組みが用意されているので、それを前提としたシステムアーキテクチャを考えることも視野に入れて下さい。

SPOTFLEET に よ る キ ャ パ シ テ ィ 維 持

必要なインスタンス数を確保するための仕組みとして、Spot Fleet があります。スポットリクエスト作成時に、必要なインスタンス数を指定しておき、強制停止によってインスタンス数が減った場合に別のインスタンスを起動させることでインスタンス数を維持するようにできます。AWS 側のキャパシティの都合でスポットリクエストが実行できない場合にそなえて、オンデマンドインスタンスを併用するように設定することもできます。この仕組みによって、常に指定したインスタンス数を確保することが出来るようになります。ただしこの仕組みでは指定した台数にすることのみに特化しているため、Web システムなどのスケールアウト/スケールインは行えません。

AUTO SCALING に よ る ス ケ ー ル イ ン /ス ケ ー ル ア ウ ト

AWS では、様々な条件によるインスタンス数の増減手段として Auto Scaling による自動的な増減処理が実行可能です。その際にスポットインスタンスを利用することが可能です。スポットインスタンスの強制停止が発生したとしても、Auto Scaling Group 側で Spot Fleet の機能を活用してインスタンス数の維持を行うことが出来ます。さらには負荷増大などのイベントに対してスポットインスタンスによるインスタンス数を増やしたり、不要になった追加分のインスタンスを減らしたりすることも可能です。

ユースケースとしては、最低限維持が必要なインスタンス数についてはオンデマンドによるキャパシティ予約を含めた構成、負荷による一時的な増加分はスポットインスタンスで賄う、などの柔軟な構成が可能です。

6327（ 旧 6327,167） の 活 用 

上記のように、$:6 ではスポットインスタンスを活用してのシステムを作りこむ為の仕組みはいろいろ用意されていますが、いくつか課題があります。
 ステートフルなユースケースへの対応
(%6 の維持はできますが、完全なインスタンスの維持はできません。(%6 のディアタッチから別のインスタンスで再アタッチするため、インスタンスとしては別物になります。
 停止時間の制限
停止対象になってから停止処理開始まで  分しか時間がないため、通常のシャットダウンに時間がかかるようなサーバーの場合正常終了が出来なくなってしまいます。
 より積極的なコスト最適化
6SRW)OHHW により複数のゾーンやインスタンスタイプから必要な台数分のインスタンスを確保することはできます
が、そこには戦略的な視点は反映されません。コストを重視したい、あるいは安定して稼働させたい、といったニーズに細かく答えることは難しいです。
これらの課題を解決するソリューションとして、6SRW という 6DD6 サービスがあります。
6SRW では、$, による予測アルゴリズムに基づき、最適なスポットインスタンスの活用を行うことが出来ます。$:6の $XWR6FDOLQJ や 6SRW)OHHW の仕組みは、指定したインスタンス台数を維持するために、スポットインスタンスが停止した際に、新たなスポットインスタンスを立ち上げるという動きをします。
それに対して、6SRW のサービスでは、(ODVWLJURXS という機能により、$, でスポットインスタンスの停止が発生する
予兆を  分程度前に予測し、あらかじめ代替えとなるスポットインスタンスをあらかじめ起動して停止予定のものと入れ替えることで、必要なインスタンス数を下回ることなく必要なインスタンス数を維持することが可能です。
(ODVWLJURXS によるインスタンスの入れ替えまた、(ODVWLJURXS のステートフルを維持する機能により、利用していた ,3 を引継ぎ、ディスクデータを維持して入れ替えることでステートフルな状態維持を可能としています。
(ODVWLJURXS では $:6 のさまざまなサービスを使ったユースケースに対応しているため、$:6 でよく使うシステムアーキテクチャに柔軟に適用することが可能です。
$:6 ユースケース


6SRW では、(ODVWLJURXS の活用により、6/$ を保証することもできます。
また、6SRW の利用価格はオンデマンド利用料金とスポットインストの差額金額の一部となっており、差額が発生しない場合は利用料金も発生しないことになるため、導入により金銭的に不利になることはありません。

ダッシュボードによるコストに関する可視化も用意なため、コスト可視化ツールとしての利用やレポーティング用の素材としての利用も可能となっています。
6SRW ダッシュボード
6SRW では  日間の無償トライアルを提供しています。
ご興味ありましたら気軽にお試しください。