Amazon Web Services ブログ
スポットプレイスメントスコアを利用した柔軟性のあるワークロードに最適な場所の選定
この投稿は、EC2 スポットのソリューションアーキテクトである Jessie Xie と EC2 Auto Scaling および EC2 フリートのシニアプロダクトマネージャー Peter Manastyrny によって書かれています。
Amazon EC2 スポットインスタンスによって、柔軟性、耐障害性、またはステートレスなアプリケーションを、オンデマンド料金に比べ最大 90% の割引で利用できます。2009 年にスポットインスタンスの提供を開始して以来、柔軟なコンピューティングのニーズに合わせてスポットインスタンスを簡単かつ効率的に利用できるようにするという単一の目標のもと、新しい機能を取り込んできました。
スポットインスタンスは、AWS クラウド内の Amazon EC2 サービスの空きキャパシティーを活用し、大幅な割引を提供します。ただし、スポットインスタンスには中断が発生するという特徴があります。他のお客様からのリクエスト増加に応じて Amazon EC2 サービスがキャパシティーを必要とするとき、スポットインスタンスとして使用されていたキャパシティーを返却してもらう動作を取ります。これがスポットインスタンスの中断です。利用可能な場所(リージョンまたはアベイラビリティーゾーン)と空きキャパシティーは常に動的に変化し、リアルタイムで変化します。これがスポットインスタンスを活用するワークロードが柔軟であるべき理由です。ワークロードが柔軟であるとはつまり、特定のインスタンスタイプに固定せず様々なインスタンスタイプを活用し、その時点で空きキャパシティーのあるところに速やかに移動できることを指します。スポットインスタンスは、EC2 フリートや Amazon EC2 Auto Scaling などのツールとともに利用でき、複数のインスタンスタイプで簡単にワークロードを実行できます。
AWS クラウドは 25 のリージョンにわたる 81 のアベイラビリティーゾーンにまたがっており、21 のアベイラビリティーゾーンと 7 つのリージョンをローンチする予定です。しかし、これまでスポット容量のニーズを満たす最適な場所を見つけるには、まずそこでスポットインスタンスを起動してみる必要がありました。今回、スポットプレイスメントスコアを発表します。スポットプレイスメントスコアは、スポットインスタンスでワークロードを実行するのに最適な場所を選定するのに役立つ新機能です。スポットプレイスメントスコアは、必要なターゲット容量とインスタンスタイプの要件に基づいて、最適なリージョンまたはアベイラビリティーゾーンを推奨する機能です。
スポットプレイスメントスコアは、複数のリージョンで実行可能なワークロードに役立ちます。さらに、このスコアは指定されたインスタンスタイプの種類を考慮して計算されるため、選択したリージョンまたはアベイラビリティーゾーンに対してリクエストが十分なインスタンスタイプであるかどうかを判断するのに役立ちます。
スポットプレイスメントスコアの仕組み
スポットプレイスメントスコアを利用するには、必要なターゲット容量、インスタンスタイプの要件、およびリージョンと単一のアベイラビリティーゾーンのどちらを推奨してほしいかを指定する必要があります。インスタンスタイプの要件については、インスタンスタイプのリストを指定するか、vCPU の数やメモリ量などのインスタンス属性を指定することができます。インスタンス属性オプションを指定する場合、EC2 フリートまたは EC2 Auto Scaling の新機能である属性ベースのインスタンスタイプの選択(Attribute-based instance type selection)で指定するのと同様の項目を用いて、推奨されるリージョンまたはアベイラビリティーゾーンに対して起動しようとするスポットインスタンスの使用を指定することができます。
スポットプレイスメントスコアは、リクエストされたインスタンスタイプ、ターゲット容量、その場所でのこれまでのスポットインスタンスの使用状況の傾向、スコアのリクエスト時刻などの要素に基づいて、スコアが 1 ~ 10 のリージョンまたはアベイラビリティーゾーンのリストを提供します。スコアは、ターゲット容量の起動が成功する可能性を反映しており、10 はリクエストが成功する可能性が最も高いことを意味します。指定されたスコアは、現在のスポットインスタンスを提供する空きキャパシティーの状況に基づいて変化し、同じパラメーターからなるリクエストが異なる時刻に実行されるとき、その実行結果は異なります。実際のスポットインスタンス起動リクエストが完全に、または部分的に成功することを保証するものではないことに留意してください。
また、リージョンまたはアベイラビリティーゾーンでスコアをフィルタリングすることもできます。これは、米国のリージョンなど AWS リージョンのサブセットのみを利用できる場合に便利です。
スポットプレイスメントスコアが実際にどのように機能するかを例を通して見てみましょう。
AWS マネジメントコンソールでのスポットプレイスメントスコアの利用
スポットプレイスメントスコアを試すには、AWS マネジメントコンソールにログインし、[EC2] サービスを選択し、左メニューから [スポットリクエスト] を選択します。そして [Spot placement score(スポットプレイスメントスコア)] メニューをクリックして [Spot placement score(スポットプレイスメントスコア)] ウィンドウを開きます。
ここで、[Enter requirements(要件の入力)] をクリックして、ターゲット容量(Target capacity)とインスタンスタイプの要件を指定します。ターゲット容量は、インスタンス、vCPU、またはメモリの数量として入力できます。vCPU とメモリのオプションは、コンピューティングリソースの合計量に対してサイズが調整され、幅広いインスタンスサイズを利用できる、垂直スケーラビリティであるワークロードに役立ちます。なお、ターゲット容量に指定できる数値には上限を設けています。ご利用のアカウントのスポットインスタンスのこれまでの使用実績と、これからのご利用量の増加予測に基づいています。スポットインスタンスの起動実績がないアカウントには、スポットインスタンスの上限に合わせたデフォルトの制限が適用されます。
インスタンスタイプの要件には、2 つのオプションがあります。最初のオプションは、[コンピューティング要件に一致するインスタンス属性を指定] タブを選択し、コンピューティング要件を vCPU の数、メモリ量、CPU アーキテクチャ、およびその他のオプションの属性として入力する方法です。2 番目のオプションは、[インスタンスタイプを手動で選択] タブを選択し、リストからインスタンスタイプを選択する方法です。
少なくとも 3 つの異なるインスタンスタイプ (異なるファミリー、世代、またはサイズ) を選択する必要があることに注意してください。インスタンスタイプの数を少なくすると、スポットプレイスメントスコアは常に低いスコアになります。スポットプレイスメントスコアは、特定のワークロードニーズに合わせてスポットインスタンスをリクエストするのに最適な場所を見つけるのに役立つように設計されていますが、すべてのリージョンとインスタンスタイプで高いレベルのスポットインスタンス情報を取得することを目的としていません。
それでは、r5.8xlarge、c5.9xlarge、および m5.8xlarge インスタンスタイプを利用でき、2000 インスタンスのサイズであるワークロードを実行するのに最適な場所を探してみましょう。先ほど述べた通り、ターゲット容量に 2000 台を指定できるかどうかはそのアカウントのご利用状況によって決まることに留意してください。
[Target capacity(ターゲット容量)] で 2000 個のインスタンスを選択し、[インスタンスタイプを選択] で [r5.8xlarge]、[c5.9xlarge]、[m5.8xlarge] を選択し、[Calculate placement scores(プレイスメントスコアの計算)] ボタンをクリックすると、スコアの降順でソートされたリージョンのリストが表示されます。必要に応じて、特定のリージョンでフィルタリングすることもできます。
この例では、最も評価の高いリージョンは、スコアが 8 の米国東部 (バージニア北部) です。2番目の候補はヨーロッパ(アイルランド)で、スコアは 5 です。これは、現時点では、指定された要件に最適なリージョンが米国東部(バージニア北部)であることを示しています。
それでは、この結果より高いスコアを獲得できるかどうか見てみましょう。スポットインスタンスの重要なベストプラクティスは、柔軟性を持ち、できるだけ多くのインスタンスタイプを活用することです。これを行うには、[Target capacity and instance type requirements(ターゲットの容量とインスタンスタイプの要件)] タブの [Edit(編集)] ボタンを押します。新しいリクエストでは、同じターゲット容量を 2000 に維持しますが、様々なインスタンスファミリーおよび世代から同様のサイズのインスタンスタイプを追加して、インスタンスタイプの選択を拡張します。ここでは、r5.4xlarge、r5.12xlarge、m5zn.6xlarge、m5n.8xlarge、m5dn.8xlarge、m5d.8xlarge、m5d.8xlarge、r5d.8xlarge、r5n.8xlarge xlarge、r5dn.8xlarge、r5d.8xlarge、c5.12xlarge、c5.4xlarge、c5d.12xlarge、c5n.9xlarge。c5d.9xlarge、m4.4xlarge、m4.16xlarge、m4.10xlarge、r4.8xlarge、c4.8xlarge を選択しました。
プレイスメントスコアの計算を再度行うと、米国東部 (バージニア北部) のスコアが 8 のままであっても、ヨーロッパ (アイルランド) と米国西部 (オレゴン) のスコアは劇的に改善され、両方とも 9 に上がったことがわかります。これで、スコアの高い 3 つのリージョンでスポットインスタンスを利用できる可能性が高くなりました。
スコアに基づいてスポットインスタンスをリクエストするには、EC2 フリートまたは EC2 Auto Scaling を利用できます。スコアは、キャパシティーをリクエストする際に、capacity-optimized 配分戦略を利用することに注意してください。lowest-price などの他の配分戦略を指定した場合、スコアの推奨結果の示すリージョンやアベイラビリティーゾーンで起動したときの結果は、スコアの示す起動可能性とは一致しないことになります。
また、アベイラビリティーゾーンレベルでスコアをリクエストすることもできます。これは、すべてのスポットインスタンスを同じアベイラビリティーゾーンで起動する必要があるワークロードを実行する場合に役立ち、アベイラビリティーゾーン間のデータ転送コストを最小限に抑える可能性があります。Apache Spark など、インスタンス間で大量のデータを転送するワークロードに適しています。アベイラビリティーゾーンごとのスコアを取得するには、[Provide placement scores per Availability Zone(アベイラビリティーゾーンごとにプレイスメントスコアを提供する)] チェックボックスをオンにします。
アベイラビリティーゾーンの推奨に基づいてインスタンスをリクエストする場合は、その特定のアベイラビリティーゾーンのみを利用するように EC2 フリートまたは EC2 Auto Scaling リクエストを設定します。
スポットプレイスメントスコアを利用すると、異なる時点で異なるインスタンスタイプの組み合わせをテストし、スポットインスタンスでワークロードを実行するのに最適なリージョンまたはアベイラビリティーゾーンを見つけることができます。
利用可能リージョンと料金
現在、スポットプレイスメントスコアは、すべてのパブリックリージョンと AWS GovCloud リージョンで利用できます。ただし、中国に拠点を置くリージョンではまだ利用できません(今後リリース予定です)。スポットプレイスメントスコアには、AWS コマンドラインインターフェイス (CLI)、AWS SDK、およびマネジメントコンソールでアクセスできます。スポットプレイスメントスコアは追加料金なしでご利用いただけます。推奨に基づいてインスタンスを起動する場合にのみ、EC2 のご利用料金をお支払いいただきます。
スポットプレイスメントスコアの使い方の詳細については、スポットプレイスメントスコアのドキュメントページをご覧ください。スポットインスタンスの利用に関するベストプラクティスの詳細については、スポットインスタンスのドキュメントページを参照してください。
翻訳はソリューションアーキテクトの 阿部 純一郎 が担当しました。原文はこちらです。