【レポート】Amazon.comはAWSのマネジメントツールをどの様に使っているのか #reinvent #DEV340

2017.11.30

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

はじめに

本記事はAWS re:Invent 2017のセッション「DEV340 - How Amazon.com Uses AWS Management Tools」のレポートです。

概要

Amazon.com enables all of its developers to be productive on AWS by operating across tens-of-thousands of team-owned AWS accounts, all while raising the bar on security, visibility and operational control. Amazon has been able to achieve these seemingly conflicting ideals by automating setup and management of these accounts at scale using AWS Management Tools such as CloudFormation, Config, CloudTrail, CloudWatch and EC2 Systems Manager. In this session, discover more about how Amazon.com built ASAP using AWS Management tools, and understand some of the decisions they made as their usage of AWS evolved over time. You will learn about the design, architecture and implementation that Amazon.com went through as part of this effort.

登壇者

  • Prashant Prahlad - Sr. Manager Product Management
  • Mike Burke - Principal Technical Program Manager

レポート

このセッションで話すこと

  • マネジメントツールって?
  • ガバナンスの方針が第一、ツールがついていくはず
  • Amazon.comの辿った流れ
  • マネジメントツールの役割
  • あなたも同じ様なメカニズムを実装できる

一般的な疑問

  • 私の採用すべきAWSアカウントの構造はどんな形?
  • どの様なガバナンスを導入すればいい?
  • どうやって会社のAWSの利用方法に追従すればいい?
  • 検証や分析のための適切なメタデータを保持できる?

チャレンジ

  • ガバナンスの観点
    • 定義
    • 検知
    • モニタリング
    • 管理
    • レポート
    • 対応
  • 開発速度の観点

AWSはどちらも可能にする

With AWS you can Programmatically

  • リソースのプロビジョニングと設定を定義
  • 新しいリソースと既存リソースの変更を継続的に検知
  • コンプライアンスのためのリソースとオペレーションのモニタリング
  • リソースに対する管理、レポート、対応

AWS Management Toolsの紹介

  • CloudFormation
    • 関連するリソースを作成、管理
  • Service Catalog
    • サービスのカタログを集中管理
    • 独自のカタログを定義してエンドユーザーがデプロイ可能
  • CloudTrail
    • コンソールやAPIでのアクションを証跡として記録
  • Config
    • AWS リソースの設定を評価、監査、審査
    • AWS リソースの設定を継続的にモニタリングおよび記録
  • CloudWatch
    • アプリケーションのモニタリング
    • アラームを設定しメトリクスのトリガー化
  • Trusted Advisor
    • デプロイをモニタリングし、ベストプラクティスを提案
  • EC2 Systems Manager
    • Parameter Store
    • 設定でデータを管理
    • State Manager
    • EC2やオンプレの仮想マシンのOS,アプリケーションの設定を定義して維持
    • Inventory
    • インスタンスに関する情報の収集と設定の追跡、監査のためのクエリ実行
    • Maintenance Windows
    • サービスの中断を許容する時間のコントロール
    • Patch Manager
    • OSや祖父トゥエアのパッチを管理、デプロイ
    • Run Command
    • コマンドのリモート実行

ツールの選択

AWS Management Tools

  1. AWSリソースのライフサイクル管理を自動化するツール
  2. 可視性や管理に対する速度のトレードオフは不要
  3. 今までより良い可視性と管理を提供
  4. 顧客のガバナンス方針に合わせた変更

AWS Management Toolsのユーザ

ロールはどの様にしている?

参考

Shared Account

Prime Day 2017の規模

  • DynamoDB:3.34兆のリクエスト
    • ピーク時は1290万/秒
  • AWS Config:1400万の設定を追跡
  • AWS CloudTrail:500億回のイベント、4190億回のAPI呼び出し
  • CloudFormation:Prime Dayのために31000近くのスタック作成

アクセスコントロール

作ったインスタンスを他人に変更されたり、誰かが作ったインスタンスを使っていたら削除されてしまったり・・・

今までのアプローチ

中央集権的に管理

試み1 - ラッパーの作成

権限管理、デプロイなどをラップする専用のアプリを作る

試み2 - リソースごとのパーミッションで管理

Shared AccountからMany Accountsへ

最初のアプローチ

  • rootクレデンシャルをなくす
  • 全てのIAM Roleはマネジメントレイヤーを通して作られる
  • IDブローカー経由での認可

ASAPシステム

AWS Config→SNSへの通知

  • 変更を通知
  • ベースラインとのずれを通知
  • リッチなデータとともに変更の通知

Amazon Cloudwatch Events→SNSへの通知

  • 起きたことを通知
  • ユーザ起点のイベントだけではない
  • スケジューリングされたイベント
  • カスタムイベント

AWS Cloudwatch Events→SNSへの通知

  • ユーザとアプリケーションのアクティビティを通知
  • あらゆるAPIのコールをキャプチャしロギング
  • AWSの特徴を広くカバー

何を得られるか

  • スケール
  • 広いコンテキストの評価
  • 問題の素早い捕捉
  • リッチなフィードバック
  • 自動的なエスカレーションや緩和

できること

  • 早期のガバナンス方針選択と、それが変化することを認識する
  • ガバナンス方針を実現するためのツールを選択する
  • 準備ができたら新しいサービスを採用し、すでにあるものを気軽に切り替える
  • ASAPを作ってみよう

役に立つリンク集

まとめ

システムが大きくなるにつれて、アカウントなどのガバナンスに沿った管理は複雑化していきます。

本セッションでは、AWS Management Toolsを用いて、「開発速度に影響を与えず(もしくは加速しつつ)」「ガバナンスに沿った運用」を実現するためのツールや実例の紹介がありました。

私からは以上です。