【レポート】Fargate Spot について理解する – Deep Dive on Fargate Spot(CON311) #reinvent 2019

re:Invent 2019 のセッション Deep Dive on Fargate Spot(CON311)のセッションスライドから読み取った内容についてご紹介します。
2019.12.29

こんにちは、札幌在住 AWS 事業本部 オペレーション部(通称オペ部)の池田です。
今回は re:Invent 2019 のセッション Deep Dive on Fargate Spot(CON311)のセッションスライドから読み取った内容についてご紹介します。

セッションについて

  • タイトル
    • Deep Dive on Fargate Spot(CON311)
  • 発表者
    • Abhijeet Tirthgirikar, Sr. Software Development Engineer, Amazon Web Services
    • Wen Xiao, Software Development Engineer, Amazon Web Services

概要

With the ability to leverage Spot on AWS Fargate, customers can now get the price flexibility they are used to with Amazon EC2 but through a serverless operational model. In this session, learn how to run Spot tasks on AWS Fargate by running them as standalone tasks or in a service, and learn how to handle interruptions. We also briefly go over pricing and best practices for using Spot on Fargate.

公開資料はこちらにあります。残念ながらセッション動画は公開されていないようです。

アジェンダ

  • What is AWS Fargate Spot?
  • Using AWS Fargate Spot

What is AWS Fargate Spot?

背景

  • Fargate “サーバーまたはクラスターを管理せずコンテナを実行する仕組み”
  • 従来の支払いオプション
    • vCPU およびメモリリソースにもとづいた支払い
    • Savings Plans(SP) による支払い

つまり、SP がリリースされるまでは「vCPU およびメモリリソースにもとづいた」オンデマンド料金を支払う必要があった

  • Fargate Spot とは
    • Fargateの新しい価格設定オプション
    • AWS Compute の在庫(予備の容量)を使用する = EC2 Spot Instance と同じ
    • 通常の Fargate タスクと比較して最大 70% の割引
    • スポットタスクが予期せず(EC2 Spot Instance と同様に)中断される場合がある点に注意が必要
  • 長所
    • 割引価格で利用(Fargate Spot 料金ページを参照)
    • 安定した価格
    • 多様性のあるキャパシティ管理
  • 短所
    • 処理の中断リスク(在庫切れによるスポットタスクの提供中断 = 処理の中断)
    • 利用可能なキャパシティ(在庫)に依存する

Using AWS Fargate Spot

Interruption comparison Amazon EC2 vs Fargate

EC2 Spot と Fargate Spot の比較

  • 動作
    • EC2 Spot : 停止、休止、終了
    • Fargate Spot : タスクの停止
  • 中断前
    • EC2 Spot : 中断の警告(CloudWatch Event およびインスタンスメタデータ)
    • Fargate Spot : 停止タスクの開始(Amazon ECS イベントおよびコンテナに対する TERM シグナルの発行)
  • 中断時
    • EC2 Spot : インスタンスの中断
    • Fargate Spot : 停止タスクの完了(Amazon ECS イベントおよびコンテナに対する KILL シグナルの発行)

Managing a Spot Service

  • Spot タスクの動作例
    • Service desired count で起動するタスクの総数を指定
    • FARGATE weight と FARGATE_SPOT weight で両者の比率を指定

コスト請求レポートの例

Best Practices

  • Amazon ECS サービスよりは独自のスケジューラーを使用する
  • (中断したくない)重要なワークロードをスポットタスクだけに頼らない
  • 通常の Fargate タスクと組み合わせて構成する
  • アプリケーションはフォールトトレラント(耐障害性のある仕組み)となるようにする
    • SIGTERM をキャッチして中断を適切に処理できる仕組みにする
  • Fargate Spot は、ステートレスで耐障害性のある用途において最適に利用できる仕組みであることを理解する

まとめ

自分なりの理解としては、EC2 Auto Scaling および Spot インスタンスを利用する際と同様に、オンデマンド利用と(処理の中段を許容できる部分について)Spot での利用比率を事前に定義しておけば、あとはお任せできる仕組みと受け取りました。また、Savings Plans の Compute Savings Plans を組み合わせることでよりコスト削減効果を高めることができますね。
普段の担当業務において Fargate を利用する機会がないもので、re:Invent セッションを通じて理解することができればと思い、本記事を書くことにしました。Fargate Spot については、下記ブログ記事がとてもわかりやすいと思いますのでご参照ください。

Fargateをスポットで7割引で使うFargate Spotとは? #reinvent