【AWS Summit Tokyo 2019 セッションレポート】EC2スポットインスタンスのすべて #AWSSummit

2019.06.12

AWS Summit Tokyo 2019 Day1(本日6/12)のセッション、「EC2スポットインスタンスのすべて」をレポートします。

ライブストリーミングでのセッション参加のレポートです。

セッション概要

Amazon EC2を使う上でコスト最適化を考えるとき、Amazon EC2 スポットインスタンスの理解と活用が大きな鍵を握ります。スポットインスタンスは、Amazon EC2の空きキャパシティを大幅な割引価格で提供する購入オプションです。このセッションでは、スポットインスタンスの押さえておきたい基本事項と使いどころ、そして格段に使いやすくなった2017年末以降の機能改善を含めた最新のアップデート情報をお届けします。

スピーカー

AWS ソリューションアーキテクト EC2スポットインスタンススペシャリスト 滝口開資(はるよし)さん

セッションレポート

セッションの目的

  • スポットインスタンスをわかっていただく
  • スポットインスタンス怖くないと思っていただく

若手棋士の間でAWSが大流行

囲碁AIブームに乗って、若手棋士の間で「AWS」が大流行 その理由とは?

  • 若手棋士の間でAWSの利用が進んでいる
  • スポットインスタンスを利用してAWS利用費を抑えている
  • 30名ほどの棋士がスポットインスタンスを利用して次の一手を研究中
  • スピーカーの滝口さんはAWS Loftで(上記記事インタビュイーの)大橋さんの質問に答えたこともある
  • 滝口さんはAWS囲碁部部長

EC2購入オプション

  • オンデマンド
  • リザーブドインスタンス
  • スポットインスタンス

どの購入オプションでも性能に違いはない

スポットインスタンス基礎

起動方法

  • 単体
  • スポットフリート
  • Auto Scaling
  • EC2フリート
単体

EC2コンソールでの作成方法を紹介

スポットフリート

複数のスポットインスタンスをまとめて起動

  1. スポットリクエスト
  2. スポットインスタンスのリクエスト
    • Load Balancing 性能の近いインスタンスタイプを提案
    • Flexible workloads 性能の異なるインスタンスタイプを積極的に活用 例:CI/CDに活用
  3. オススメのインスタンスタイプが表示 →変更可能
  4. 確認画面
    • 強度が十分と表示されていることを確認
    • コスト削減額も確認できる
Auto Scaling

新機能ミックスインスタンスグループ: オンデマンドとスポットを一つのASGに

  • 割合も指定ができる
  • スモールスタートに最適
  • 複数のインスタンスタイプを指定できる
  • 起動テンプレート機能を使ったASGのみ利用可能
  • EC2コンソールでの作成方法を紹介
EC2フリート
  • 上級者向け
  • 今回は割愛
スポットリクエストの確認方法

EC2コンソール左側メニュー「スポットリクエスト」から確認可能

スポットインスタンスの確認方法

EC2コンソール左側メニュー「インスタンス」から確認可能

  • 右上歯車アイコンから表示列を変更すると見やすい

スポットインスタンスのライフサイクル

  • 他の購入オプションと異なるのは、EC2スポットサービスによる中断があること
  • 中断2分前に中断の通知が発生
  • どれくらいの頻度で中断があるのか?
    • →そんなにない。92%のスポットインスタンスがユーザーにより終了されている
  • 2分間をどう使いこなすかが大事
    • ELB登録解除
    • コンテナステータスをDRAININGに
    • などなど

仕組み

空きキャパシティとスポットプール

スポットプール - リージョン、AZ、インスタンスタイプごとに独立したキャパシティ

スポットインスタンスの価格設定履歴

  • 3ヶ月間の履歴が確認可能
  • AZごとに価格が異なる
  • 価格変動は緩やか
    • 昔は価格変動が激しかった
    • オンデマンドより高い場合もあった
    • 当時は入札の概念があった→価格が入札価格より高くなれば中止
    • 入札不要モデル登場

空きキャパシティとスポット価格

残りキャパシティが少ないほど高くなる

今のスポットインスタンスは入札不要

  • 上限価格を指定
  • デフォルトはオンデマンド価格

スポットインスタンス実践

中断通知受信方法は2種類

  • インスタンスメタデータ シェルスクリプトで処理書く
  • CloudWatch Events Lambdaでどのインスタンスか特定して処理する

中断通知のテストができる

ターゲットキャパシティを減らす

スポットインスタンスを使いこなすための4原則

  • 中断処理を受け取ったら速やかに後処理
  • 耐障害性のある設計に

原則1.ステートレス

インスタンス内に状態を持たせない

原則2.再開可能なワークロード

原則3.疎結合

周辺影響の極小化

原則4.スポットプールの分散

AZ,インスタンスタイプを分散させる

活用シーン

  • ビッグデータ分析
  • CI/CD
  • ステートレスWEBアプリ
  • アドホックな計算処理
  • コンテナ化されたワークロード
    • Microserviceの思想は前述「スポットインスタンスを使いこなすための4原則」と相性が良い

株式会社トクバイさま事例

  • スポットインスタンスを採用
  • EC2費用を7割弱削減できた

EC2 購入オプションををどう組み合わせるか

  • 新規ワークロード、ステートフルワークロード →オンデマンドインスタンス
  • 中断に強い、スケールする → スポットインスタンス
  • 一定の負荷が見込める → リザーブドインスタンス

感想

スポットインスタンスに関しては知識として知っているだけで、実際に利用したことはありませんでした。
入札不要モデルが登場してより使いやすくなっていたことなどキャッチアップできておらず、今回良い勉強になりました。
また、92%のスポットインスタンスがユーザーによって停止されている(つまり強制終了の割合は少ない)というのは「そんなに少ないんだ」と驚きでしたね。
Microserviceとも相性が良いとのことで、今後積極的に利用していきたいと思いました!