Amazon Web Services ブログ
スポットプレイスメントスコアによる Amazon EC2 スポットインスタンスの最適化
このブログ記事は、プリンシパル・スペシャリスト SA の Steve Cole とシニア・スペシャリスト SA の Robert McCone が執筆しています。
ワークロードに必要なコンピューティングリソース (数百万の vCPU でさえ) を確保しワークロードを実行するために、Amazon EC2 スポットインスタンスで必要なことは、たった一つの設定を行うことです。この投稿では、スポットプレイスメントスコアを使用して中断を減らし、キャパシティを増やし、スポットインスタンスでワークロードを実行するための最適な設定を学びます。Amazon EC2 スポットインスタンスでは、Amazon EC2 の空きキャパシティを活用することで、オンデマンド価格と比較して最大 90% の割引価格で利用できます。スポットプレイスメントスコアは、お客様が最適なインスタンスタイプを選んだり、データ分析やハイパフォーマンスコンピューティングなどの一時的な作業に最適なアベイラビリティーゾーン (Availability Zone, AZ) を選択したりするために使用する機能です。スポットプレイスメントスコアはリアルタイムのツールとしてデプロイメントの自動化に組み込まれることがよくあります。ただし、ロギング機能とスコア履歴表示機能を備えているため、クラウドにシステムを構築する前でも利用可能です。現在、お客様向けの GitHub リポジトリホスティングツールである AWS Labs を通じてご利用いただけるスポットプレイスメントスコアトラッカーは、どのお客様でもご利用でき、インスタンスタイプの選定やインスタンスの配置検討といった価値を生みづらい重労働(undifferentiated heavy lifting)に取り組むことができます。
スポットプレイスメントスコアについて
スポットプレイスメントスコアは AWS API から利用できる機能で、Amazon EC2 スポットリクエストコンソールにも実装されています。この機能では、内部のキャパシティと中断データを使用してスポットインスタンスリクエストのサイズとタイプを精査し、「成功確率」の評価が 1(成功の可能性が低い)、10(成功の可能性が高い)で応答します。スコアは、今後数時間にわたってインスタンスタイプの要件を使用して必要なキャパシティを獲得できる可能性を表しています。リクエストするインスタンスタイプは、特定のインスタンスのリストでも、属性ベースのインスタンスタイプ選択による要件ベースのものでもかまいません。リクエストのサイズには、インスタンス数、vCPU 数、メモリ量(GB)を指定できます。これは、既知のキャパシティ、配分戦略、および時間の経過に伴うキャパシティの傾向に基づいています。
スポットプレイスメントスコアがリリースされる前は、お客様は既存のワークロードと設定の傾向を追跡できました。これは、時間の経過に伴うキャパシティの制約を予測するのに役立ったかもしれませんが、設定を評価する際により有意義なことを行う機能がお客様から頻繁に求められていました。スポットプレイスメントスコアの提供開始に伴い、この機能が提供され、設定の変更がワークロードのスポットインスタンスの有効性にどのように影響するかについてのガイダンスをお客様に提供できるようになりました。
お客様はこの新機能の威力をすぐに認識し、スポットプレイスメントスコアが提供する新機能を組み込むためのツールをワークロードに合わせて作成し始めました。たとえば、お客様はスポットプレイスメントスコアを活用して、クラスター内で低レイテンシーを必要とするワークロードについて、リージョン内で最もスコアの高い AZ を見つけました。Amazon EMR のようなサービスでデータ分析を行っているお客様は、より自信を持ってスポットインスタンスでクラスターを起動できます。これにより、中断が少なくなるため、データ処理に必要なコストと時間が削減されます。この戦略を早期に採用したのは、金融機関、ヘルスケア・ライフサイエンス、ハイテク企業でした。
スポットプレイスメントスコアのメリット
あるお客様は、スポットインスタンスアドバイザーやスポットインスタンスの料金履歴などのツールを使用して、毎晩どのインスタンスを実行するかを決定しました。顧客の分析ワークロードの中断が多すぎると、必然的にオンデマンドインスタンスを使用して再開することになり、コストと完了までの時間が増えます。お客様のツールにスポットプレイスメントスコアを追加することで、どの設定が最も効果的か、より具体的にはどの AZ を使用するかについて、より多くの情報に基づいた決定が可能になりました。最終的に、これはスポットインスタンスの使用に対する信頼性の向上につながっただけでなく、時間の経過とともに大幅なコスト削減にもつながりました。
他のお客様も、時系列データベースに保存された定期的なクエリを使用してスポットプレイスメントスコアを時系列で追跡し、最適な設定や場所だけでなく、ワークロードを実行するのに最適な時間帯や曜日も特定しました。インスタンスタイプの様々な要件を自動化してクエリし、その結果を時系列データベースに記録してグラフとして表示しました。これらのグラフを精査し、設定を調整した結果、最終的にこれらの顧客は、スコアの高い場所でワークロードを実行することで、中断回数が減り、スポットインスタンスが提供するコスト最適化をより有効に活用できるようになりました。
AWS は、これがお客様の問題をどのように解決するか関心を持ち、お客様との調査と設計のアイデアを練り上げた結果、AWS が最近リリースした OSS ツール、スポットプレイスメントスコアトラッカーの作成につながりました。スポットプレイスメントスコアトラッカーは、お客様が複数の時間と場所に対して様々な設定を評価するのに役立ちます。これは AWS ネイティブのソリューションで、スポットプレイスメントスコア API と AWS Lambda および Amazon CloudWatch を組み合わせてダッシュボードを作成することで、どの AWS のお客様も自分で作成しなくてもこのモデルからメリットを得ることができます。
スポットプレイスメントスコアトラッカーの使い方
このソリューションでは、AWS Cloud Development Kit (AWS CDK) を使用してコードとしてのインフラストラクチャ (IaC) を自動化し、Lambda の実行に必要なインフラストラクチャと権限をデプロイします。これは5分ごとに実行され、定義された多くのスポットプレイスメントスコアを収集します。
CloudWatch ダッシュボードの準備後、データの収集や記録に必要な時間が経過すると、次の例のような直感的なグラフで気づきが得られます。
スポットプレイスメントスコアトラッカーから得られる気づき
時系列データを観察して最初に気付くのは、多様なインスタンスタイプを利用することが高いスポットプレイスメントスコアの主な要因であるということです。これはスポットインスタンスを使用する際のベストプラクティスであり、オンデマンドインスタンスにも適用されます。つまり、1 つのインスタンスタイプでしか実行できない場合、6 つまたは 12 のインスタンスで実行できる場合よりも、中断が発生する可能性がはるかに高くなります。属性が -a、-d、-n のインスタンスタイプ (例:m5.large, m5a.large, m5d.large, m5d.large)、旧世代 (例:m4.large)、コンテナ環境に様々なサイズ (m5.large、m5.xlarge、m5.2xlarge など) を含めるだけで、さらに AWS Graviton を含めるだけでスポットプレイスメントスコアを高めることができる、つまり中断が少なくなります。その結果、プロセスの再開が減り、リソースのより効率的な使用が可能になり、結果として効率が向上してコストが削減されます。
スポットプレイスメントスコアを時間の経過とともに使用することで得られる 2 つ目の気づきは、一時的なプロセスを配置できる最適な AZ を特定することです。このパターンにおける最適な使用例は、一晩で多くの計算を完了するために起動されるデータ分析クラスターでしょう。これは、リスク分析やコンプライアンスなど様々な理由から金融機関では一般的ですが、日中の実験結果を調べる医学研究や、24 時間 365 日のサービス提供の必要がないワークロードなど、その他の状況にも適用できます。これらのお客様は、ノード間の通信を高速化するためとデータ転送コストを削減するために、通常、単一の AZ を使用しています。したがって、スポットプレイスメントスコアが AZ ごとに異なるスコアを提供できることは非常に有利です。
3つ目は、時間の経過とともにワークロードのフットプリントの大きさを正確に特定できるようになることです。サイズが異なる同じ設定をスポットプレイスメントスコアに送信することで、理想的なワークロードサイズを特定できます。ジョブの完了に時間がかかりすぎるほど小さくはありませんが、中断が頻繁に発生して再起動が頻繁に発生するほど大きくはありません。これは、一時的なワークロードだけでなく永続的なクラスターやフリートにもメリットがあります。時間の経過とともに最低スコアがどうなるかを理解し、スポットインスタンスから期待できることと場所に関する確かな情報が得られます。これにより、スポットインスタンスの可用性が低下した場合に備えて、オンデマンドインスタンスを起動する準備が整っていることがわかります。また、価格を予測したり、Savings Plans やオンデマンドキャパシティ予約に関する意思決定に役立てたりすることもできます。
最後に、スポットプレイスメントスコアを時系列で分析することで、リージョン別のスコアを得ることができます。この方法により、プライマリリージョン以外のリージョンにあるスポットインスタンスは、オフピークによって日中の中断が少なくなる可能性があることを知らなくても、見落とされていた可能性のあるすべてのリージョンを特定できます。ローカルのデータアクセス要件の制約を受けずに別のリージョンにワークロードを配置できる場合、他の方法では(あまり利用されていない)場所にある大量のコンピュートリソースを利用できます。より少ないデータ転送とより多くのコンピューティングを必要とするワークロードは、他のリージョンのスポットインスタンスにアクセスすることで大きなメリットを得ることができます。たとえば、ビルドサーバーなどは、北米の営業時間中はヨーロッパで非常にうまく動作し、コンピューティングコストの削減によってジョブを完了するためのデータ転送コストが相殺される可能性があります。
まとめ
スポットプレイスメントスコアを使用することで、スポットインスタンスをビジネスニーズに応えるために最も効率的に利用できる方法、時期、場所を決定できます。しかも、価格も大幅に下がります。これまで入手できなかった情報を活用し、ビジネスに役立つデータ主導の意思決定を行えるように、このツールをリリースできることを大変嬉しく思います。この記事の情報は、時間の経過に伴うスポットプレイスメントスコアの出力と相まって、大きな進化を遂げています。
スポットプレイスメントスコアトラッカーを今すぐインストールし、既存のスポットワークロードに合わせて設定して、様々な時間や場所でのパフォーマンスを確認しましょう。より堅牢なオプションを検討し、空きキャパシティを見つけ、中断を減らしてください。または、オンデマンドインスタンス上のワークロードがスポットインスタンスにどのように移行できるかを調べてみてください。
翻訳はソリューションアーキテクトの 阿部 純一郎 が担当しました。原文はこちらです。