[2016版] Amazon EC2 購入オプションを理解する [コストダウン]

2016.10.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは菊池です。

サーバレスが話題になっている昨今ですが、AWSを始めるにあたって最も導入しやすいのがEC2です。一方で、EC2はもっとも費用がかさみやすいサービスでもあります。AWS利用料の大半を占めることが多いEC2利用料ですが、いくつかの購入オプションが用意されており、使い方に合わせて賢く購入することで費用を抑えることが可能です。

EC2インスタンスにある複数の以下の購入オプションについて、整理していきます。

EC2の購入オプション

  • オンデマンド
  • リザーブドインスタンス
    • スタンダードリザーブドインスタンス
    • コンバーティブルリザーブドインスタンス
    • スケジュールドリザーブドインスタンス
  • スポットインスタンス
    • スポットフリート
    • スポットブロック

オンデマンド

基本となる1時間単位の従量課金の費用です。通常、EC2インスタンスを起動すればこの費用体系が適用されます。

注意点としては、起動時間が1時間未満であっても1回の起動毎に最低1時間分の利用料が課金されることです。例えば、1時間以内に10回の起動/停止を繰り返すと10時間分の利用量が発生します。

リザーブドインスタンス

一定期間の継続利用をコミットすることで、割引を受けられる購入オプションです。

スタンダードリザーブドインスタンス

単に"リザーブドインスタンス"といったら通常はこちらを指していることが多いと思います。

1年または3年の継続利用をすることで、オンデマンド比で最大75%の割引が適用されます。一方、適用期間中はインスタンスを起動・停止の状態にかかわらず費用発生します。期間の長い3年の方が割引率は大きいです。

購入により1年または3年の固定費用が発生しますが、支払い方法は以下の3パターンがあります。

  • 全前払い(All Upfront):購入時に全額一括で支払い。
  • 一部前払い(Partial Upfront):一部金額を前払いし、残りは継続期間中に月額費用で支払い。
  • 前払いなし(No Upfront):前払いなしで全て月額費用で支払い。

予算の都合で支払い方法を選べますが、割引率は 全前払い > 一部前払い >>> 前払いなし と、前払い額が大きい程割引率もよいです。

コンバーティブルリザーブドインスタンス(2016年9月追加)

2016年9月に追加された新しいリザーブドインスタンスです。

従来のリザーブドインスタンス(スタンダードリザーブドインスタンス)では、購入時に指定したインスタンスファミリ(m3/m4/c3/c4/r3など)、アベイラビティゾーン、プラットフォーム(Linux/Windowsなど)が適用期間中は固定でした。コンバーティブルリザーブドインスタンスでは、適用期間中にインスタンスファミリやプラットフォームの交換が可能になります。支払い方法はスタンダートと同じ3種類です。

オンデマンド比で最大45%の割引と、スタンダードリザーブドインスタンスに比べ割引率は劣りますが、長期的な変動リスクによってリザーブドインスタンスの適用をためらっていた場合には強力な選択肢となります。

スタンダードリザーブドインスタンス/コンバーティブルリザーブドインスタンスについて詳しくは以下の記事を参照ください。

スケジュールドリザーブドインスタンス(2016年1月追加)

常時稼働しているわけではないが、日次/週次/月次などで決まった時間に決まったリソースが必要な場合に適用可能な購入オプションです。スタンダードリザーブドインスタンスに比べ割引率は低い(オンデマンド比5%〜10%程度)ですが、低い稼働率でも費用削減が可能になります。

現時点(2016年9月)ではバージニア/オレゴン/アイルランドの3リージョンのみ、契約期間は1年での提供となっています。

スケジュールドリザーブドインスタンスについて詳しくは以下の記事を参照ください。

リザーブドインスタンスの注意点

  • リザーブドインスタンスは特定のインスタンスに対し明示的に適用するわけではなく、購入しておくことで費用請求時に自動的に適用されます。購入済みのリザーブドインスタンスのタイプ(インスタンスタイプ/プラットフォーム/スコープ/テナンシー)と一致するインスタンスを通常通りに起動しておけば、その分の費用が引かれて請求されます。
  • リザーブドインスタンス購入により前払い費用が発生する場合(All Upfront/Partial Upfront)、通常の月ごとの利用とは別に購入のタイミングで費用請求が発生しますので、クレジットカード限度額などにご注意ください。
  • 割引率は期間/支払い方法の他に、インスタンスタイプ/プラットフォームでも異なりますので公式の料金表をご確認ください。

スポットインスタンス

起動できない or 強制終了されるリスクを負うことで、大幅にコスト削減が可能な購入方法です。

変動するスポット価格に対し、希望価格設定して入札します。入札価格がスポット価格を上回っていればインスタンスが起動しますが、スポット価格が高騰し入札価格を上回るとインスタンスは強制的に終了(Terminate)させられます。

インスタンスタイプにもよりますが多くの場合、オンデマンドに比べ大幅に安い時間単価で価格は推移しています(最大で90%の値引き)。まれに高騰することがありますので、強制的に終了させられても影響の少ない処理に使用することで費用が削減できます。

使いどころが限定されるスポットインスタンスですが、以下のオプション機能を使うことでリスクを緩和させることができます。

スポットフリート

スポット入札時に1つのインスタンスタイプに絞らず、ターゲット容量という必要なリソース量を指定して起動するオプションです。

例えば、c3.large(vCPU:2、RAM:3.75GB)のインスタンスを起動したい場合、多くの場合にm3.large(vCPU:2、RAM:7.5GB)、r3.large(vCPU:2、RAM:15.25GB)でもスペックとしては代用可能かと思います。

その場合、"c3.large/m3.large/r3.largeの中から、現在のスポット価格が安いインスタンスタイプで起動"のような指定が可能です。

他にも、合計vCPU数を維持するように複数サイズのインスタンスタイプを組み合わせることも可能です。複数のインスタンスタイプを組み合わせることで、一部のインスタンスタイプで価格が高騰しても他のインスタンスタイプを使って合計リソースを維持するようにカバーが可能になります。

スポットブロック

価格高騰によりいつ終了させられるかわからないスポットインスタンスですが、1〜6時間の範囲で起動時間を保証することができるオプションです。

なお、設定した時間の経過後はスポット価格によらず終了します。

このオプションにより一度開始した処理が確実に完了するまでインスタンスを起動しておくことが可能になりましたが、一方で通常のスポットよりも割引率は低くなります

スポットインスタンスの注意事項

  • スポットインスタンスはリザーブドインスタンスと異なり、起動時に明示的に指定します。なので、既存のインスタンスをスポットで利用する場合は再作成が必要です。
  • スポットインスタンスの作成はスポットリクエスト(入札)-> インスタンス起動、の流れで行います。通常のインスタンス起動に比べ若干の時間がかかる場合があります。
  • 価格高騰による強制停止時やスポットブロックの時間経過時には、インスタンスは停止(Stop)ではなく終了(Terminate)となりますので、重要なデータはインスタンス内に保持しないようにする必要があります。

まとめ

以上が現状で利用できるEC2の購入方法です。

デフォルトの従量課金であるオンデマンド、長期的に利用するのであれば効果的なリザーブドインスタンス、使いどころが難しいがうまく使えば劇的にコスト削減効果がでるスポットインスタンスと、それぞれに特徴がありますが、賢く使ってコストの最適化を目指しましょう。

参考資料