[レポート] 無駄のないアーキテクチャとは?AWSでの費用対効率を高めよう #reinvent

re:Invent2019のセッション、「ARC209-R1 - [REPEAT 1] Running lean architectures: How to be cost-effective on AWS」のレポートです。
2019.12.05

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

こんにちは。AWS事業本部のShirotaです。

いつもの挨拶を省いてお届けしているのは、re:Invent2019のセッションレポートについて速攻でお届けしようと思っているからです!
今回はセッション、「Running lean architectures: How to be cost-effective on AWS」についての内容をお届けしたいと思います。

それでは早速行ってみましょう!

セッション情報

セッション名

ARC209-R1 - [REPEAT 1] Running lean architectures: How to be cost-effective on AWS

セッションの概要

Everybody can save money on AWS by optimizing your architecture! This session reviews a wide range of cost-optimization strategies, featuring real-world examples. In addition to Reserved Instances, we have a special focus on Spot Instances to get a discount of up to 90 percent. We also talk about leveraging AWS Auto Scaling, caching and offloading content to Amazon CloudFront to reduce backend load, and much more. Running serverless? Learn how to cut costs on serverless through minimizing AWS Lambda execution time and maximizing networking throughput. Additionally, we cover optimizing training and inference costs for machine learning on AWS.

コストを下げる為にどんな試みをすれば良いのか。RI?Auto Scaling?CloudFrontでキャッシュ?サーバレスを使う?実際の事例と絡めた話をしつつ、様々な手段についての解説をしてくれるそうです。

スピーカー

  • Constantin Gonzalez - Principal Solutions Architect, Amazon Web Services
  • Jason Fuller - Head of Cloud Management & Operations, HERE Technologies

セッションの内容

このセッションから学べる事

  • AWSをいかにコストを削減して使うかのベストプラクティス
  • よりスケーラブルで堅牢で動的なアーキテクチャ
  • より開発等に時間を割けるようになる
  • これらを簡単に実装できるようになれる

AWS自身の発展の機構(flywheel)

▲ AWSって物凄い回数値下げを実施しているのは知っていたけど、こう言うサイクルがあったらしい

コスト最適化のための機構

  • 測定、アーキテクチャ、構築を回していく
  • 測定
    • AWS BugdetやCost Management dashboardを見よう
    • 月ごとのコストを設定しよう
    • Cost Explorerでより深めていく
    • RIを使おう
      • 最大でオンデマンドより75%安くできる
      • Cost Explorerを使うとRIのレコメンデーションができる
  • アーキテクチャ
    • 使っていないインスタンスは止めよう
      • 開発、テスト、トレーニングインスタンスなど
      • RDSも止められるよ
      • 実際の例

▲ 休みの間に止めるだけでこんなになるらしい

  • 自動化をしよう
    • インスタンスの自動Start/Stopサイクルに使えるサービス
      • AWS CLI
      • AWS CloudFormation
      • AWS CDK
      • AWS Opsworks
      • EC2 Auto Scaling
        • CloudWatchのモニタリングをベースに調整できる
        • インスタンスの最大数/最小数を定義してスケーリング
      • サードパーティのツールもある
  • 古い考え方: アーキテクチャはペット
    • 個別のサーバ
    • 管理者の手作業
    • やる事がいっぱいある
  • 新しい考え方: Cattle(放牧している牛たちのイメージ)
    • 高い自動化
    • 高い標準化
    • コストが低くできる
    • やる事が少ない
  • スポットインスタンスを使おう
    • いつでもオンデマンド以下の料金
    • 最大でオンデマンドより90%安くできる
    • Spot Fleetが使える
    • Auto Scalingで使える

ここから話者交代、Jason Fullerさんに。事例紹介に入りました。

HERE社の紹介・試み

  • 非常に大きなAWS環境
    • 500以上のアカウントがある
    • 1000万以上のEC2インスタンスを使っている
    • 毎日28TBのデータが集まる
  • 新たに、中央集権化を試みている
    • 支払いを1つのコストセンターに
    • コストのトラッキングをしてプロジェクトを守っている
  • 実際にとってきたアクション
    • 環境全体の解析
      • Greenゾーン/Redゾーンを設ける
  • Trusted Advisorを使う
    • Splunkに毎日データを送る
    • ウィークリーレポートをチームのメーリングリストに送る
  • Personal Health Dashboardを使う
  • 適切な自動化をする

▲ 構成図を見せてもらうと分かりやすい

結果どうなったか

  • RIの網羅率が1年間で80パーセント以上に
  • それにより、環境の中央集権化も進んだ
  • 3.5年間で$50M節約し、$150Mの無駄遣いを避けられた

ここで話者交代。Constantin Gonzalezさんに戻ります。

AWS Saving Plansの紹介

  • EC2やFargateの使用料を最大で72パーセント抑えられる
  • Saving Plansのタイプ
    • コンピュートSaving Plans
      • インスタンスファミリーの変更
      • リージョン/AZの変更
      • OSの変更
      • テナンシーの変更
      • Amazon EC2かAWS Fargateで利用可能
    • EC2インスタンスSaving Plans
      • インスタンスファミリーの変更
      • リージョン/AZの変更
      • OSの変更
      • テナンシーの変更

一言で言えば、「サーバレスアーキテクチャを使おう」

  • イベント駆動のコード
  • マルチスレッド
  • 60パーセントもの時間の節約に!
  • スクリプトにsleepを仕込むのをやめよう
    • Step Functionsを使おう
  • コカコーラはLambdaを使う事でボトルを売る時間を90パーセント減らせた!

キャッシュを使おう

  • CPUよりもメモリの方が安くて早い
  • キャッシュは至る所で使われている!
    • RDSでも、EC2でも、ELBでも、そしてCloudFrontでも
  • キャッシュは節約に使える
    • 1秒間に3Kのリードを抑えられた

構築

  • 不必要な重たい移行を避けよう
  • AWSのデータベースサービスを使おう
  • AWS application Integration serviceを使おう
  • を使おう
    • Amazon EMRからAmazon Athenaに移行した時の例
  • AWS analytics serviceを使おう
  • AI/MLで節約する
    • AI/MLはあなたたちのビジネスの天気予報のようなもの
    • 不必要なインスタンスを止める: Amazon SageMaker notebook
    • 自動化: Amazon SagemMaker
    • Auto Scalingを使う: Amazon SageMaker auto scaling
    • Spot Instanceを使う: Amazon SageMaker Managed Spot Training
  • 不必要な重たい移行を割けるならSageMakerを使おう
  • MLパイプラインをコスト効率よく構築しよう
    • AWSのマネージドサービスを使おう
      • Amazon Athena、AWS Glue、AWS Lake Formation
    • Amazon SageMaker Ground Truth for labelingを使おう
      • 最大70%節約ができる
  • MLモデル学習の節約をしよう
    • ノートブックインスタンスに大きな学習データを置くのは避けよう
    • スモールスタート、スケールアウトをしてからスケールアップをする
    • Amazon SageMaker automatic model tuningを使おう
  • プロダクションを推論/MLで節約しよう
    • Amazon SageMaker Neoを使って実行ファイルを最適化
    • リアルタイム処理の代わりに使えるところはバッチ処理を使う
    • 不必要なエンドポイントは消そう
    • 推論インスタンスは適切なサイズで  

まとめ

  • EC2のスポットインスタンスやRI、Saving Plansを使おう
  • 使っていないインスタンスは止めよう
  • EC2 Auto Scaling等を使って自動化しよう
  • サーバレスで同期処理やwaitを避けよう
  • キャッシュを色々なところ、状況で使おう
  • マネージドサービスを使って利益率をあげる
  • AI/MLにおいてはAmazon SageMakerを使うとより発展できる
  • お金を節約するとどうなるか?
    • 以下のような機構が生まれる!

▲ 良いことづくし

セッションの感想

幅広いサービスを駆使してAWSのコスト削減の仕方を学べる 、1時間で駆け抜けるのには勿体無いくらいのセッションに感じました。

コストを下げる事に悪い面はほぼほぼ無い事からも、積極的に取り組むべきテーマとなるのではないでしょうか。