[レポート] CMP201: より良く、より速く、より安く – Amazon EC2 Fleet によるコスト最適化コンピューティング #reinvent

こんにちは韓です。re:Inventで参加したくても出来なかったセッションを後ほど公開されたスライドと動画で受講しましたので、レポートを上げます。

原題は "Better, Faster, Cheaper – Cost Optimizing Compute with Amazon EC2 Fleet #savinglikeaboss (CMP201-R1)" です。

Amazon EC2 Fleet makes it easier than ever to grow your compute capacity and enable new types of cloud computing applications while maintaining the lowest TCO by blending EC2 Spot, On-Demand and RI purchase models. In this session, learn how to use the power of EC2 Fleet with AWS services such as Auto Scaling, ECS, EKS, EMR, Batch, Thinkbox Deadline and Opsworks to programmatically optimize costs while maintaining high performance and availability – all without breaking a sweat. We will dive deep into cost optimization patterns for workloads like containers, web services, CI/CD, batch, big data, rendering and more.

Amazon EC2 フリートを利用する上で、パフォーマンスと可用性を維持しながらコスト最適化を行う方法を概説しています。

AWS の導入検討あるいは初めて触れる方向けの内容ですが、サラッとおさらいしたい方にも有用な内容になっている印象でした。

動画

スライド

レポート

本セッションは、ワークロード毎にベストプラクティスを実践することでキャパシティ管理とコスト最適化が達成できると述べています。

そのためには、AWSにおける様々な「仕組み」を理解する必要があり、それぞれについて概説を行っています。

ベストプラクティスの実現のための基礎知識

最初はリソースタグの重要性を述べています。 このセッションにとどまらずシステムの利用状況を正確に把握してこそ対策が打てるためとても重要な事項となります。

次に AWS の価格体系と購入オプションについて解説がなされています。従量課金の後払いの「オンデマンド」、大幅割引のある前払いの「リザーブドインスタンス(RI)」、主に一時利用用途向けの入札形式の「スポットインスタンス」の説明があります。

システムの利用状況と購入オプションが理解できるようになると、コスト最適化の戦略を組めるようになります。

スライドではサンプルとして需要変化と購入オプションの適用方法について述べています。

  • RIは、既知の定量的なワークロードに向け
  • オンデマンドは、新規またはステートフルな需要増加への対応として
  • Spotは、障害耐性があり柔軟でステートレスなワークロードへの対応として

コスト最適化と性能管理を自動化するには

テンプレート起動で得られるものは「生産性の向上」「許認可の簡素化」「統制とベストプラクティス」「一貫したエクスペリエンス」

次はEC2フリート。仮想マシンの EC2 を単一インスタンスの運用ではなく、複数からなるフリート(艦隊)として運用する手法です。

複数のインスタンスタイプやアベイラビリティゾーン(AZ)や購入オプションを組み合わせるとができるため、リソースな必要な分だけ確保され、AZを跨ぐため可用性が確保され、RIやスポットインスタンスの利用で価格メリットも出せます。

またこの恩恵は、EC2だけではなくEC2を基礎にしたサービスでも受けることができます。

Auto Scaling と Auto Scaling Group(ASG)

Auto Scaling はその名の通り自動で性能の伸縮をする仕組みで、障害耐性を高め、アプリケーションの可用性を上げ、より安いコストを実現するものです。

Auto Scaling Group はインスタンス数の上限値・下限値・最適値を設定することができる論理グループです。

かつてのASGでは、インスタンスタイプ・AZ・購入オプションはどれか一つしか選ぶことができませんでしたので複数のASGにて運用する手法をとっていましたが、アップデートにより一つのASGでインスタンスタイプ・AZ・購入オプションを 組み合わせて 利用できるようになり運用性が向上しました。

なお、スケーリングの手法は従来の「手動」「スケジュール」「動的」に加え、「予測」に基づくスケーリングが利用できるようになりました。

需要変動に対し機械学習を行い、需要の変化を「予測」して積極的にスケーリングする方式です。

AWSにおけるワークロードの例

ビッグデータ分析

Spark や hadoop 等のデータ分析は膨大な処理能力を必要とするが、EC2フリートを活用することで処理能力とコスト低減を両立させることができます。

Webアプリやサービス

コンテナを利用したアプリケーションを事例として挙げています。コンテナサービスである ECS や EKS も EC2 同様に秒単位の課金であるためコスト最適化に寄与しています。

以下はステートレス(ログインなどの状態を持たない)Webアプリケーションをコンテナで構成する例です。

DevOps

ここでは Jenkins を用いた CI/CD ジョブの実行を事例としています。 戦略としては、CI/CD ジョブはスポットインスタンスを利用することでコスト削減を実現しています。

コスト最適化のためにまず始めること

「スポットインスタンス利用に明らかに適したワークロードを探す」

  • 何らかの形態でコンテナ技術は64%程利用されている
  • CI/CDパイプラインを持っている
  • スポット&オンデマンドをテスト・開発環境に対して実験的に利用してみよう
  • HPCワークロード(CFDなど)におけるチェックポイントを含む
  • もしビッグデータワークロードでSpotを利用していないなら、もしかしてre:Inventワークショップに参加することを検討してみてください

制約なしにイノベートする

「今なにをすべきか」

  • フリートにおいて利用できる3つの購入オプションを最適化する
  • EC2 Auto Scaling を利用した適切なサイズ、予測スケーリングと動的スケーリングを両方利用する
  • スケールダウンと資源開放を忘れずに
  • 起動テンプレートを利用することで、起動プロセスを合理化・簡素化する
  • ハイバーネートにも注目
  • パフォーマンスとコストを心に留めてワークロードをアーキテクトする

最後に

非常に基本的な事項の解説から入りましたが、構成例や実践すべきことが 具体的に 述べられており非常に密度が濃く有用なセッションと言えます。また、個人的にもよい復習になりました。