Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Spotを使いこなす:Auto Scaling groupsとSpot Scalingで利用率とコスト削減を最大化

By Matan BordoDec 12, 20236 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

Auto Scaling groups(ASG)によるSpotインスタンスの利用率最適化について、シナリオ別の戦略を交えて解説するとともに、DoiT Spot Scalingでコスト削減効果を最大化する方法もご紹介します。

Spotインスタンスシリーズの第1回では、Spotインスタンスの基本概念やメリット、効果的に活用するためのポイントを解説しました。

今回はその続編として、Auto Scaling groups(ASG)によるSpotインスタンスの利用率最適化と、Spotアロケーション戦略の細かな違いを掘り下げ、シナリオごとにどの戦略が適しているのか、その理由とともに解説します。

最後に、Spotインスタンス活用にあたってのASG構成・管理の煩雑さを解消するDoiT Spot Scalingで、コスト削減効果を最大化する方法をご紹介します。

Auto Scaling groups(ASG)とは

ASGは、複数のインスタンスをまとめて管理するための仕組みです。需要に応じてデプロイするインスタンス数を自動で調整することでworkloadsのelasticity(伸縮自在性)を高め、フォールトトレランスの強化にも役立ちます。

需要が増えればスケールアウトしてパフォーマンスと応答性を維持し、需要が減ればスケールインして無駄なコストを抑えられます。

許可するインスタンスタイプやアベイラビリティゾーン、インスタンス数の最小・最大値、混在インスタンスポリシー(Spotインスタンスとオンデマンドインスタンスの比率)などを設定可能で、一度設定すればASGがリソース管理の大部分を自動でこなしてくれます。

Auto Scaling group diagram

たとえばECサイトを運営しているなら、Auto Scaling groupsを使うことでトラフィックの変動にぐっと楽に対応できます。

これを手作業でやろうとすると常時監視と即時対応が欠かせず、対応が遅れればクラッシュやパフォーマンス低下を招き、ユーザー体験の悪化や売上機会の損失につながりかねません。

ASGとSpotインスタンス

ASGはSpotインスタンスを扱ううえで特に重要です。中断されたSpotインスタンスを自動で新しいインスタンスに置き換えることで、Spotの中断に対処し、利用率を最適化してくれるからです。

ASG自体がインスタンス間にworkloadsを直接振り分けるわけではありませんが、必要な数のインスタンスを常に確保した状態を維持します。受信するworkloadsやWebリクエストの分散は、通常Elastic Load Balancerなどのサービスが担当します。ASGはこれらのロードバランサーと連携し、新たに作成したインスタンスへ自動的にトラフィックを振り向けることで、効率的な負荷分散を実現します。

さらに、同じグループ内で複数のインスタンスタイプを混在利用できる柔軟性も備えており、可用性とコストに応じてさまざまなSpotインスタンスタイプを使い分けられます。

Spotアロケーション戦略

Auto Scaling groupsを構成するうえで決めなければならない設定の一つが、Spotアロケーション戦略です。Spotインスタンスを入札・取得する際のアプローチには、次のようなものがあります。

Lowest price(最低価格)

Lowest price戦略は、最も安価なインスタンスプールを優先して狙います。容量よりも価格を優先するため、十分な容量がある保証はなく、中断リスクは高めになります。

たとえば、大規模データセットを扱うデータ分析パイプラインのデプロイに向いています。Spot価格が低い時間帯にlowest-price戦略でジョブをスケジューリングすれば、価格が高騰した際の中断による影響は小さく、価格が再び下がったタイミングで処理を再開できます。

Capacity-optimized(容量最適化)

Capacity-optimized戦略は、空き容量の多いインスタンスプールを優先するため、結果的に中断リスクが低くなります。

高可用性が重要で、workloadsに中断の少ない安定したインスタンスプールが求められる場合に適しています。

たとえばストリーミングサービスを運営しているなら、視聴体験を損なわないよう可用性を最優先にしたいはずです。

Diversified(分散型)

Diversified戦略は、利用可能なすべてのプールにSpotインスタンスの割り当てを分散させます。

複数のインスタンスタイプやアベイラビリティゾーンを柔軟に使える状況であれば、この戦略によってインスタンス取得の可能性を高められます。

複数リージョンで運用している場合や、リソース要件の異なる複数のアプリケーションを動かしている場合に向いています。

Price & capacity-optimized(価格・容量最適化)

Price & capacity-optimizedアロケーション戦略は、価格と可用性のバランスを取り、可用性を犠牲にすることなくSpot容量を最大限確保できる選択肢です。

1日の中で需要が変動しつつも、ある程度の可用性が求められるサービス——たとえばECストアの運営——にぴったりです。

ASGでSpotインスタンスを使うときに起こり得る問題

AWSユーザーがASGにSpotインスタンスを組み込む(あるいは利用範囲を広げる)際に懸念する点は、主に2つあります。1)信頼性、そして2)構成の複雑さです。

SpotインスタンスはAWSから2分前の通知で中断される可能性があるため、アプリケーションの信頼性に影響を及ぼす恐れがあります。前述のとおり、用途によっては大きな問題にならないこともあります。

それ以上に課題となるのが、Auto Scaling GroupsへのSpotインスタンス導入です。起動テンプレートや混在インスタンスポリシーなどの設定を適切に構成する必要があり、ここがハードルになりがちです。

さらに、ASGをSpotインスタンスで安定的かつコスト効率よく稼働させる最適構成にたどり着くには、複数の変数を踏まえた複雑な分析が欠かせません。Spotインスタンスで最適な容量とコスト削減効果を得るには、適切なインスタンスタイプ、AZ、VPC、アロケーション戦略などを選定する必要があり、複数のアベイラビリティゾーンの指定、スケーリングポリシーの設定、他のAWSサービスとの統合などが求められる場合もあります。

Spot Scaling

DoiT Spot Scalingは、ASGにベストプラクティスに沿った構成を提案することで、Spotインスタンスの導入をスムーズにし、コスト削減効果を引き出します。

Auto Scaling Groups(ASG)のインスタンス構成を自動で管理してくれるので、中断を気にせずSpotインスタンスを活用できます。

たとえば下の例には、Spotによるコスト削減と可用性をさらに高められる余地のあるAuto Scaling groupがあります。現在の構成ではインスタンスタイプが1種類のみで、オンデマンドインスタンスしか使えない状態です。

これに対しSpot Scalingは、選択中のインスタンスタイプと近い属性を持つ追加のインスタンスタイプを提案し、活用できるインスタンスプールの幅を広げてくれます。

使用できるインスタンスタイプとアベイラビリティゾーンが増えることで、Spotインスタンスがまったく取得できない事態に陥る可能性を下げられます。

万が一どのインスタンスプールにも空き容量がない場合、Spot Scalingは(混在インスタンスポリシーが100% Spotであっても)Spotインスタンスが再び利用可能になるまで、自動的にオンデマンドインスタンスへ切り替えます。

必要なのは、推奨内容を確認し、必要に応じて調整したうえで「Apply Recommendations」をクリックするだけ。あとはSpot ScalingがそのASGを継続的に管理してくれます。

CattleEyeがSpot ScalingでEC2費用を60%以上削減した事例

CattleEyeはAWS Batch上で推論パイプラインを稼働させ、市販のカメラにコンピュータビジョン技術を適用して牛を監視・映像解析し、100万頭を超える牛の福祉向上に取り組んでいます。

しかし牛のリアルタイム解析は計算負荷の高い処理であり、AWS EC2がCattleEyeのコストの大半を占めていました。当初はGPUインスタンスを使用していたためSpotインスタンスの活用が難しく、Spotインスタンスをより活かせる別の適切なインスタンスを調査する時間もありませんでした。

そこでCattleEyeはSpot Scalingを導入し、Spotインスタンスの活用を本格化させました。当初はオンデマンドインスタンスのみに頼っていたバッチ処理は、現在では100% Spotインスタンスで稼働しており、その結果EC2コストを60%以上削減しています。

Spot Scalingのインタラクティブツアーはこちら

ASGにおけるSpotインスタンスの設定・管理は一見ハードルが高く感じられますが、DoiT Spot Scalingのようなツールを使えば一連のプロセスを大幅に簡素化できます。最適な構成を提案し、インスタンス構成を動的に管理することで、Spot Scalingは可用性を維持しつつSpotによるコスト削減効果を最大限に引き出します。

Auto Scaling groupsでEC2インスタンスをデプロイしているなら、Spot Scalingの詳細はこちらからご覧ください。Spotインスタンスを活用したコンピュートコストの最適化や、クラウド利用料全体の削減にDoiTがどう貢献できるかについては、お問い合わせからお気軽にご相談ください。