読者の皆様へ: あなたのリクエストに応じて、大切な情報を見逃すことなく、ノイズを減らす機能を開発しました。お気に入りのトピックを選択して、メールとウェブで通知をもらいましょう。
Amazon Web Services (AWS)は先頃、Amazon EC2スポットインスタンスの要求方法と操作方法を大きく変更して、大幅なコスト削減を実現した。入札価格を指定せずにスポットインスタンスを要求できるようになり、スポット価格がより穏やかなものに調整された。さらに、スポットインスタンスの停止および休止と再起動が可能になったことで、中断可能なワークロードをさらに最適化できるようになった。
Amazon EC2 Spotインスタンスは、オンデマンド価格の最大90パーセント割引で提供されるが、EC2がその容量を必要とする場合には回収される可能性のある余剰な計算容量で、テスト環境や開発環境、CI/CDパイプライン、ステートレスなWebサービス、バッチ処理、分析、マシンラーニングといった、フォールトトレラントあるいは中断可能なワークロードに適している。
AWSは時間を掛けてスポットインスタンスのコンセプトを進化させてきたが、この低価格な容量プールを弾力的かつ効果的に使用するには、唐突なインスタンス終了に対処可能な技術力と合わせて、スポットマーケットの入札戦略に関する理解が必要とされていた。さらに、インスタンスの種類や時間帯や地域など、さまざまな要因によって価格が大幅に変動する(オンデマンド価格の10倍になる場合もある)ことから、中断が頻繁に発生したり、複雑な能力計算や価格計算が必要となる場合もある。
AWSは今回このスポットインスタンスを、“長期的な需要と供給のトレンドに基づいて、価格がより穏やかに調整される”価格モデルに移行した。注目すべきなのは、スポット価格の上限として、オンデマンドの価格が新たに設定されたことだ。これはつまり、インスタンス予算をオンデマンド価格以下にしたいという要求のない限り、入札価格を指定する必要のないことを暗示している。このメリットは、オプションとして計算リソースにスポットインスタンスを使用可能な、例えばAWS BatchやAmazon ECS、Amazon EMRといったAWSサービスからも享受できる。
平均コスト削減の可能性が持つ影響力はインスタンスタイプや地域によって異なるが、新たなスポット価格モデルでは価格変動の振り幅が大幅に制限されるとともに、費用の傾向も従来よりスムーズなものになる。これによってスポットインスタンスアドバイザでも、ほとんどのインスタンスタイプに対して、中断の頻度が'低くなる’ことが実証されている。この変化は、スポット価格の変動履歴にも表れている。
図: Amazon EC2インスタンスタイプm4.2xlargeのスポット価格変更による影響(eu-west-1)
run-instances API経由のスポットインスタンス要求モデルも簡略化され、キャパシティが利用可能になった時点で即座にインスンタンスIDが返されるようになった。これにより、これまでのrequest-spot-instances APIを介した場合の、非同期スポット要求の結果をポーリングする必要はなくなっている。スポットインスンタンスを要求するには、既存のスクリプトにパラメータをひとつ追加するだけでよい。これにより、暗黙のコスト削減というメリットを得ることが可能になる。
$ aws ec2 run-instances --instance-market-options '{"MarketType":"Spot"}' \
--image-id ami-1a2b3c4d --count 1 --instance-type c3.large
さらに、スポットインスタンスがEC2によって中断された場合、終了する代わりに停止(stop)あるいは休止(hibernate)して、同じインスタンスタイプが利用可能になった時点で再開することもオプションで可能になった。これはサービスレベルでの最適化であり、スポットインスタンスを手動で停止や再起動することはできない点に注意が必要だ。Jeff Barr氏(AWSチーフエバンジェリスト)は、想定するユースケースを次のように要約している。
必要とするキャパシティが利用可能になれば、アプリケーションのプロビジョニングやEBSボリュームの設定、データのダウンロード、ネットワークドメインへの参加といった処理に時間を費やす必要なく、インスタンスの起動と継続が可能になります。
インスタンスの停止と休止のおもな違いとして、後者では、RAMデータのEBSルートボリュームへの永続化も同時に行われる。これによって、ワークロードが“さまざまな状態をメモリ内に保持”できる、というメリットが加えられる。スポットインスタンスを停止する場合、ルートEBSボリューム以外の要件はほとんどないが、休止の場合は、サポートするオペレーティングシステム上のエージェントが必要であると同時に、現時点での対象は、一般的に使用されているECSインスタンスタイプに限定されている。さらにAWSでは、休止の場合は“ルートボリュームに暗号化されたEBSボリュームを使用”して、“ボリューム上にあるメモリ(RAM)の内容を暗号化”することを強く推奨している。
関連するニュースとして、AWSは先日、以前からの機能要望に対応する形で、Amazon CloudWatch Event(以前の記事)によるスポットインスタンス終了の2分前警告を可能にした。新設されたスポットインスタンス中断通知を利用することで、他の大部分のAWSリソース変更で利用されているのと同じイベントバスおよびアクションターゲットを使用して、プッシュ通知の起動や、関連処理を自動的に実行することが可能になる。
Google Cloud Platform (GCP)と(最近になって)Microsoft Azureも、用途を限定した低価格の仮想マシンを提供しているが、GCPのプリエンプティブVMインスタンスとAzureのLow-Priority VMは、ともに価格モデルや運用上の制約がかなり異なっている。
Amazon EC2のドキュメントにはLinuxとWindowsインスタンス用のユーザガイドがあり、EC2スポットインスタンスの導入やインスタンスの中断、AWS CLIリファレンス、APIリファレンスといった章が設けられている。Amazon EC2 スポットインスタンスの料金表には、現時点での計算時間課金が記載されている。中断されているインスタンスには課金されないが、保存されたボリュームには通常と同じ従量制のEBS価格設定が適用される。サポートはAmazon EC2フォーラムを介して提供される。
この記事を評価
- 編集者評
- 編集長アクション