Amazon Web Services ブログ

【開催報告】「秋のスポットインスタンス祭り」セミナー

EC2スポットインスタンススペシャリスト ソリューションアーキテクトの滝口です。2020年11月11日にオンラインで開催された「秋のスポットインスタンス祭り」セミナーでは、100名を超える聴衆の方々にご参加いただき、AWSのソリューションアーキテクトによる技術解説に加え、スポットインスタンスを効果的に活用されている2社のお客様の具体的な事例をご紹介いただきました。

本記事では、お客様のご登壇資料を含む当日資料をご紹介し、また参加者の皆様からいただいた当日のQ&Aの一部をご紹介します。

当日アジェンダと資料

13:00 ~ 13:45 自動スケールから始める EC2 スポットインスタンス
講師:滝口 開資(アマゾン ウェブ サービス ジャパン株式会社 ソリューション アーキテクト)

概要:みなさまのシステム、自動スケール機能はお使いでしょうか。クラウドに移行したものの、EC2インスタンスはずっと立ち上げっぱなし。負荷の高いタイミングでも台数固定。そしてEC2の費用は慢性的に高止まり。こんな課題を抱えていらっしゃるみなさまに向けて、まず前半ではスケールする大規模処理での例としてWebサービス、機械学習、データ分析のワークロードを取り上げ、活用できる技術スタックの選定方針を紹介しました。 そして後半では、EC2インスタンスの自動スケールの仕組み、そしてそこにスポットインスタンスを組み合わせてコスト最適化を狙う方法をわかりやすくお伝えしました。

自動スケールから始める EC2 スポットインスタンス

13:45 ~ 14:15 実例から学ぶAWS Batch x スポットインスタンスによる大規模バッチ処理
講師:宮本 大輔(アマゾン ウェブ サービス ジャパン株式会社 ソリューション アーキテクト)

概要:クラウドでは必要な時に必要な量の計算リソースを起動して処理を行うことができるため、HPC (High Performance Computing) やゲノム解析、大量の動画像の処理といった用途に適しています。そしてこのような大規模バッチ処理をコスト効率よく行うためにはスポットインスタンスの活用が重要なポイントとなります。本セッションでは、大規模バッチ処理に対してスポットインスタンスを適用する際に考慮しなければいけないことや、注意すべきポイントについて、AWS Batchを活用した実例を交えてご紹介いたしました。

実例から学ぶAWS Batch x スポットインスタンスによる大規模バッチ処理

14:15 ~ 14:45 スポットインスタンス/インスタンスフリートを活用した Amazon EMR のコスト最適化
講師:川村 誠(アマゾン ウェブ サービス ジャパン株式会社 ソリューション アーキテクト)

概要:Amazon EMR はスポットインスタンスとインスタンスフリートを活用することで、コストを最適化することができます。直近のサービスアップデートでそれらの活用がより簡単に運用可能となりました。本セッションでは EMR におけるスポットインスタンス活用のベストプラクティスを最新アップデート情報を交え、解説しました。

20201111-AWS_SpotFes-AmazonEMR

14:45 ~ 15:15 お客様事例 1 がんばらないスポットインスタンス運用
講師:面白法人カヤック 藤原俊一郎様

概要:カヤック様では2014年からコスト削減のためにスポットインスタンスを運用されてきました。最初は独自の仕組みで入札していましたが、スポットフリートがリリースされたために乗り換え、現在はオートスケーリンググループでオンデマンド・スポットインスタンス混在構成に落ち着いておられるそうです。運用を通して学んだ、頑張りすぎないスポットインスタンス運用のコツについてお話しいただきました。

がんばらないスポットインスタンス運用 / Spot-instance-Matsuri

15:15 ~ 15:45 お客様事例 2 機械学習ワークロードにおけるSpot&Batchの活用
講師:UNICORN 株式会社 井上碩 様

概要:UNICORN様では1日120個以上の機械学習モデルの学習と、1日1兆回以上の推論を行っておられます。今回は学習タスクに焦点を当て、スポットインスタンスを活用するための枠組みと、特にAWS Batchでディスク容量を管理する方法についてお話しいただきました。

UNICORNの機械学習ワークロードにおけるSpot&AWS Batchの活用

15:45 ~ 16:15 質疑応答

Q&Aのご紹介

当日いただいたQ&Aをいくつかご紹介します。

Q. 空きキャパシティについて質問です。例えば、c5.largeのキャパシティが枯渇した場合、同じインスタンスファミリー(c5.xlarge, c5.2xlarge)も同様に起動できないのでしょうか?
A. c5.largeとc5.xlarge, c5.2xlargeはそれぞれ、インスタンスタイプが異なる「スポットプール」として独立していますので、一つが起動できないことは他のスポットプールの空き容量には影響しません。図でご覧いただいたように、アベイラビリティゾーンでも異なってきます。ワークロードの制約が許すようであれば、同一ファミリー間の他のインスタンスタイプを候補に入れていただくのはおすすめの定義方法の一つです。
Q. これまで2分前に中断通知が来ていたのが予兆があった段階で通知が来るようになる機能追加(「リバランス通知」)について、今後はもうそちらだけ見ておけば良いでしょうか? 今後も2分前の通知の両方を見ることになりますか?
A. リバランス通知は、中断リスクが高まったときに送付される通知であり、中断通知に追加する形で提供されます。中断通知・リバランス通知とも、内部的には同一の仕組みを用いて提供されます。リバランス通知は最も遅くなった場合で中断の2分前に通知されることになるため、最終的に両方とも通知されることになります。

  • EC2 Auto Scalingでリバランス通知を活用するには、セッションでお話ししたとおり、キャパシティリバランシング機能を有効にしてください。中断対応アクションは、そのAuto Scalingグループの終了時のライフサイクルフックとして定義します。インスタンスメタデータサービスやEvent Bridge経由での、中断通知・リバランス通知に対する明示的なアクションの設定は不要になります。
  • スポットフリート、EC2フリート、またRunInstancesから単体起動したスポットインスタンスについては、中断アクションはリバランス通知にのみ設定しておくのが良いと考えます。なお、予期せぬ通知不良等を予防する意味で、中断通知にも中断アクションを定義することは考えられますが、この場合、中断への対応アクションはべき等になるように、つまり同一操作が2度実行されても構わないように実装する必要があります。ログの保全などの処理でこの点を考慮しない場合、二重処理になってしまう場合があることに注意してください。
Q. リバランス通知が来た場合の処理をテストしたい場合にどうすればいいでしょうか?中断通知の場合はスポットフリートを活用することで意図的に発生することが可能でしたが、リバランス通知でも同様に可能でしょうか?
A. (2020-11-20 更新) 2020年11月20日現在、maintainモードで作成したスポットフリートのターゲット容量を減らすことで、リバランス通知を任意に発生させることができます。

  • 手順についてはAWS Summit Online Tokyo 2020でご紹介しております。こちらの資料の45ページ以降をご覧ください。
  • このテスト方法により、中断通知とリバランス通知の双方が送付されます。
  • リバランス通知を監視できるように、EventBridgeルールやインスタンスメタデータサービスのリクエストパスを追加してください。詳細はこちらのドキュメントを参照してください。
  • この手順で確認できるのは、リバランス通知と中断通知のイベント発生までです。スポットフリートでのキャパシティリバランシング動作によって、中断のリスクが高まった際に事前にスケールアウトさせる部分はシミュレートされません。
Q. AWS Batchのセッションで、より多くのキャパシティを必要とする場合は~~C5d/C5n/C5aも選択という説明がありましたが、例えばC6gのように、単純に選んでは動かないタイプは他にありますか?
A. ご理解の通り、Arm系アーキテクチャのものはそのまま動かないものになります。gのつくGravitonファミリーのもの、また1世代前のGravitonファミリーであるA1インスタンスを除外してください。
Q. AWS Batchのスポット中断対策について、中断された時の動作は、コンテナ内のアプリからしたら、急にプロセスを中断されたようなイメージですか?
A. はい、ご認識の通り、何もしなければ突然中断されたような挙動になります。動作中にOSレベルでシャットダウンが発生したというのが比較的近いかと思います。
Q. Batchのコンピューティング環境のAMIはコンピューティング環境を作った時点のままとなると思いますが、どれぐらいの頻度でコンピューティング環境を作り直すものなのでしょうか。
A. AWS Batchはコンテナ環境で稼働するため、コンテナイメージを更新することでアプリケーション更新に対応することができます。EC2 Auto Scalingの場合、アプリケーションの更新がAMI更新を要求するため、この点が異なります。一方、ベースとなるOSのセキュリティ更新を含むアップデートはAWS Batchにおいても必要に応じて計画する必要があります。AWS Batchを用いて継続的な実行環境を設計する場合、定期的なOSイメージの更新についても計画していただくことを推奨します。

おわりに

「コンテナ × スポットインスタンス」 活用セミナーに引き続いて、2020年2回目となるスポットインスタンスの活用に関するセミナーをお届けいたしました。2021年も引き続き、様々な切り口からのセミナーを企画してまいります。スポットインスタンスを含め、EC2サービスに関連する今後のセミナー予定は https://awsj-compute.connpass.com/ に掲載していきます。みなさまのご登録をお待ちしております。