【レポート】Amazon EC2 spot instance Deep Dive #AWSSummit

2018.05.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

おはようございます、加藤です。
AWS Summit Tokyo 2018。Day2 で開催された「Amazon EC2 spot instance Deep Dive」についてレポートします。

セッション概要

スピーカー

アマゾン ウェブ サービス ジャパン株式会社 技術統括本部 ソリューションアーキテクト
小川 貴士 氏

概要

EC2 を割安に利用できる EC2 Spot インスタンスは、昨年末に大幅に機能が更新され、より使いやすくなりました。本セッションでは EC2 スポットインスタンスを最大限に活用する為に、機能や使い所について解説します。

セッション内容

セッション目的

  • 機能拡張で使いやすくなったスポットインスタンスの新機能を理解する
  • スポットインスタンスを今まで以上に使ってみようという気持ちになってもらう

スポットインスタンスとは

  • Amazon EC2の購入オプション
    • 使われていないEC2インスタンスに入札して格安利用
    • 最大90%程度の大幅コストカットが可能
  • スポットインスタンスの種類
    • スポットインスタンス
    • 単一のインスタンスタイプでスポットインスタンスを起動、最もシンプル
    • スポットブロック
    • 1〜6時間の使用予定期間を指定、期間内はTerminateされない
    • スポットフリート
    • 複数のAZに散らして利用
  • スポットインスタンスの価値
    • 価格は需要に応じた時価
    • オンデマンドに比べて50〜90%安価
    • 同じ予算内で2〜10倍のコンピューティング容量に増やして高速化
  • リスク
    • 性質上、利用中さえも強制停止されてしまう
    • 時価が入札価格を上回ったとき
    • 余剰EC2がなくなったとき
  • リスクへの対応
    • 対障害性のあるシステム構築
    • 大切なデータは定期的にS3、EBSなどに保管
    • 強制停止の2分前から提供される警告通知を使って、停止に備える対処をする
    • メタデータ,ClouwdWatchイベントから取得 5秒ポーリングを推奨
    • 6時間以下の作業ならスポットブロックを選択する
  • スポット価格について
    • EC2の需要に応じて変動
    • リージョン、AZ、インスタンスタイプ毎に価格は異なる
    • 入札価格はあくまで最大価格、時価で落札できる
  • スポットマーケット
    • スポットはAZ毎でもマーケットが異なる

使いどころ

  • 向き不向き
    • 向き
    • 1つあたりの処理時間が短いもの
    • やり直しがきく処理
    • 処理時間にばらつきがあってよいもの
    • 不向き
    • 中断のできない長時間の処理
    • 処理の期限が厳密に決まっているもの
  • ユースケース
    • ログ・データ解析・分析
    • イメージレンダリング
    • ビッグデータ処理
    • ウェブクロール
    • プログラムのビルド
    • ゲノム解析
    • 機械学習
    • テスト環境
    • 動画エンコーディング
    • etc...
  • 事例
    • クリムゾン大学
    • 110万vCPUを使用した機械学習処理
    • 色々なインスタンスタイプをミックスして使用
    • TIBCO
    • 130万vCPUを使用した金融リスク分析
    • FRTBの規制に備えてリスク分析
  • 対応サービス
    • Auto Scaling
    • Batch
    • EMR
    • Data Pipeline
    • ECS
    • OpsWorks
    • CloudFormation
  • スポットインスタンスがインテグレートされたパートナー
    • Docker
    • ジェンキンス
    • MESOS
    • Terraform
    • spotinst
    • Bambpo
    • etc...

新機能について

  • 新たな価格モデルへの改定
    • 低価格・予想しやすい価格変動
      • MAXがオンデマンド価格
      • 長期のトレンドで需要を判断
    • 入札価格の指定なしでスポットリクエスト可
  • スポット価格モデルの改定
    • 以前は...
      • スパイキーな価格変動
      • オンデマンドの10倍にまで高騰
  • APIを統一化
    • オンデマンドと同一のAPIでスポット起動が可能
    • --instance-market-options MarkeType=spot
    • 現状価格の指定はできない
  • スポットインスタンスのStopとHibernation動作対応
    • スポットリクエスト時にインスタンスの中断動作を指定
    • スポットはStopおよびHibernationできる
  • スポットでのStop/Start機能
    • EC2と同じ
    • 追加料金なし
    • ルートボリュームはEBSが前提
    • ルート・アタッチされたボリュームは維持される
    • persistent maintain オプションを使う
    • 2分警告は従来どおりに受け取れる
  • スポットでのStart/Stopのユースケース
    • 長いプロビジョニングを必要とするワークロード
    • 永続的にデータを維持する必要があるステートフルなアプリケーション
    • 時間経過とともにストレージ内のデータを変更するアプリケーション(開発・テストワークロード)
    • PC・ワークステーション
  • スポットでのHibernation・Resume機能
    • ラップトップPCを開け締めするのと似た動作
    • 稼働中のメモリイメージをルートボリュームに書き出して永続化
    • 追加料金なしでStop/Start機能の利用が可能
    • ルートボリュームはEBSが前提
    • ルート・アタッチされたボリュームは維持される
    • persistent maintain オプションを使う
    • EBSサイズはメモリ以上(メモリをEBSへ書き出すので)
    • 暗号化されたEBSボリュームを推奨
    • Hibernation AgentがインストールされたAMI
    • Hibernation Agentを起動している
    • Hibernationの動作検証を必ずやりましょう
    • ボリューム・EIP上限に注意してね
    • 前提を満たしていなかった場合インスタンスは停止する
    • ハイバネートは通知を受け取った瞬間から開始
  • ハイバネートユースケース
    • メモリの状態を保持する長時実行されているタスク
    • HPCワークロード
    • 多くの状態キャッシュを保持するアプリケーション

スポット利用を支援するツール

  • スポットインスタンスアドバイザー
    • タイプ毎にオンデマンドに対してのセーブ率
    • タイプ毎のTerminate率
  • スポットアドバイザー
    • リクエストしたいvCPUなどを入れるとオススメのフリートをリストアップしてくれる
    • そのまま、フリートを作成できる

ベストプラクティス

  • ステートレス
    • ここのサーバに依存した情報を持たない
  • フォールトトレラント
    • 問題が発生してもリカバリー可能な、耐障害性のあるシステム
  • マルチAZ
    • どのAZで実行しても動作に支障がない構成に
  • 疎結合
    • どのインスタンスがいつ終了しても問題ない状態に
  • インスタンス対応に対する柔軟性
    • 複数のスポットプールに対応できるアプリケーション、システムを
  • マルチAZ利用を支援するサービス
    • S3
    • EFS
    • ECR

まとめ

  • 機能拡張によって価格を意識しなくても、簡単に安価に利用が可能になった
  • 価格変動が緩やかになり、誰でも安心して使える
  • Stop Hibernationで利用シチュレーションが拡大
  • スポットが適用できるシーンを再検討してコスト削減とコンピューティングのさらなる活用に役立てる

あとがき

スポットインスタンスがどう進化したのか、進化した結果何ができるようになったが中心なセッションでした。
要所要所で気をつけて欲しいポイントの紹介もあり、スポットインスタンスを使ったことがある人にも、これから使って見たい人にも有意義なセッションでした!