kakakakakku blog

Weekly Tech Blog: Keep on Learning!

AWS Well-Architected Framework に5本目の柱 "Operational Excellence" が追加されていた

AWS を運用しているエンジニアなら読んだ人も多いであろう,2015年10月に公開された "AWS Well-Architected Framework" に実は大幅なアップデートが入っていることに気付いた.時期的には AWS re:Invent 2016 の直前で,AWS re:Invent 2016 で発表された新サービスを見越していたんだろうと推測できる.

アップデート内容としては大きく2個ある.

  • 今までの4本の柱のベストプラクティスが一部見直された
  • 新たに5本目の柱 "Operational Excellence" が追加された

今回アップデートされた "AWS Well-Architected Framework" を理解するために活用した「AWS Well-Architected 研修」を紹介しつつ,実際に "Operational Excellence" を読んでみた感想をまとめておこうと思う.

無料で受講できる「AWS Well-Architected 研修」

以下のページにある "Training" からリンクを辿ると「AWS Well-Architected 研修」を受講することができる.しかも無料.ちゃんと "Operational Excellence" も含まれていて,最新版の "AWS Well-Architected Framework" に準拠した内容になっていた.

aws.amazon.com

カリキュラム

カリキュラムは6個あり,"AWS Well-Architected Framework" の全体概要を学ぶカリキュラムと,柱ごとの概要を学ぶカリキュラムがある.

  • AWS Well-Architected - Module 1: The AWS Well-Architected Framework
  • AWS Well-Architected - Module 2: The Security Pillar
  • AWS Well-Architected - Module 3: The Reliability Pillar
  • AWS Well-Architected - Module 4: The Performance Efficiency Pillar
  • AWS Well-Architected - Module 5: The Cost Optimization Pillar
  • AWS Well-Architected - Module 6: The Operational Excellence Pillar

全体的に良いなと感じたのは以下の3点だった.AWS 初学者にもオススメできる.

  • 動画内に Knowledge Check があって理解度確認をしながら進められること
  • 関連資料のリンクも多く紹介されていること
  • オンプレ環境など従来の環境とクラウドネイティブな環境の比較を学べること

学んだこと

  • "一般的な設計の原則" に "Improve through game days" が新たに追加されていた
    • 本番環境と同等なリクエストでアーキテクチャをテストすることによって改善に役立てるべき(これを "Game Days" と表現している)
    • "Game Day" は AWS 主催のトラブルシューティングコンテストのようなもの(ISUCON 的な)
  • "パフォーマンス効率の柱" に "Mechanical sympathy" が新たに追加されていた
    • 処理特性などを考えて,達成したいことに最適な技術を選択するべきということ
  • "コストの最適化の柱" の Key AWS Services(最も重要なサービスのこと)が "コスト配分タグ" だった
    • 知らなかった...

認定証

f:id:kakku22:20170110020944p:plain

"Operational Excellence" を読んでみた

まだ日本語訳になった資料は公開されていないが,"Operational Excellence" は "運用上の優秀性" と訳されていた."Operational Excellence" をザッと読んでみた.あくまで個人的なコメントなので,是非実際に PDF を読んで頂きたい!

設計の原則

  • Perform operations with code
    • インフラ運用をコード化しよう!
  • Align operations processes to business objectives
    • ビジネス目標に合わせた運用プロセスにしよう!
  • Make regular, small, incremental changes
    • 定期的に/小さく/段階的に変更しよう!サービスのダウンタイムを取らないように運用手順を考えよう!
  • Test for responses to unexpected events
    • 障害など予期しないイベントに備えてテストしよう!
  • Learn from operational events and failures
    • 失敗から学んで運用をさらに良くしよう!
  • Keep operations procedures current
    • 運用手順書や障害対応手順書を更新し続けよう!

ベストプラクティス(質問集)

OPS 1. What best practices for cloud operations are you using?

  • Operational Checklist
  • Proactive Plan
  • Security Checklist

チェックリストを作って確認できるプロセスにすることは確かに重要だなと思った.2013年から更新されていない点は気になるけど,AWS から公式に "Operational Checklists for AWS" が公開されていて,"AWS Well-Architected Framework" と似たような観点で確認するべきチェックリストが用意されている.

またビジネス的にインパクトのあるキャンペーンを実施するときなどは事前に計画して運用時に考慮するべきと書かれている.僕が担当してるシステムだと,テレビ砲や Yahoo! 砲が予定されているときは事前に共有をもらうようにしている.

OPS 2. How are you doing configuration management for your workload?

  • Resource Tracking
  • Documentation
  • Capture Operational Learnings
  • Immutable Infrastructure
  • Automated Change Procedures
  • Configuration Management Database (CMDB)

一言で言うと Infrastructure as Code を目指そうという内容だった.ドキュメント化(コード化)して,GitHub などで管理して,反映も自動化することが重要と書かれている.

OPS 3. How are you evolving your workload while minimizing the impact of change?

  • Deployment Pipeline
  • Release Management Process
  • Small Incremental Changes
  • Revertible Changes
  • Risk Mitigation Strategies

リリースの影響を小さくするために,デプロイフロー(継続的インテグレーション/継続的デリバリー)を整えたり,リリース戦略(Blue/Green デプロイメント/カナリアリリース/AB テスト)を適用したりするべきと書かれていた.特に "Revertible Changes" は実現できていないところもあって考えてみたい.ロールバックだけではなく,フィーチャートグルにも言及されていたのは良かった.

OPS 4. How do you monitor your workload to ensure it is operating as expected?

  • Monitoring
  • Aggregate Logs
  • Alarm-Based Notifications
  • Trigger-Based Actions

内部的な要因や外部的な要因で障害は発生してしまうため,適切にモニタリングして,異常値であればアラートを飛ばしたり,自動的にアクションを実施したりするべきと書かれていた.

OPS 5. How do you respond to unplanned operational events?

  • Playbook
  • RCA Process
  • Automated Response

障害が発生したときにどのように対応するかという話だった.Playbook の適切な日本語訳がわからないけど,オンコールプロセスを用意したり,障害の影響度に応じて組織内でエスカレーションしていくプロセスを決めておくなどが例として挙がっていた."Automated Response" も今後は考えたい.自動化できる対応は自動化して運用を楽にするべき.

OPS 6. How is escalation managed when responding to unplanned operational events?

  • Appropriately Document and Provision
  • Functional Escalation with Queue-based Approach
  • Hierarchical Escalation
  • External Escalation Path
  • Hierarchical Priority Escalation is Automated

OPS 5. と関連していて,エスカレーションをどのように管理するかという話だった.組織内でエスカレーションしていくプロセスを決めておくだけではなく,AWS サポートや外部サービスのサポートなど,影響する可能性のあるパートナーのエスカレーションパスも事前に用意しておくという話は参考になった.

Achieving Agility by Following Well-Architected Framework Principles (ARC203)

AWS re:Invent 2016 で "AWS Well-Architected Framework" に関するセッションがあった.

www.youtube.com

まとめ

  • 2016年11月に "AWS Well-Architected Framework" が大幅にアップデートされていた
  • 無料で受けられる「AWS Well-Architected 研修」があった
  • 5本目の柱 "Operational Excellence" を読むと,システムを安定稼働させるためのベストプラクティスと,障害時に迅速に対応するためのベストプラクティスが学べた

関連記事

kakakakakku.hatenablog.com