初心者が避けて通りがちなAWS Well-Architected フレームワーク。 かく言う初心者支部運営メンバーも熟読したことがありませんでした。 今回のイベントを機にWordPressで作ったサイトを評価しましたので、その評価結果を発表します。
JAWS SONIC 2020 初心者が避けがちな AWS Well-Architectedフレームワークを使って WordPressサイトを評価してみた JAWS-UG 初心者支部
View Slide
・山原 崇史 ・Twitter : @shonansurvivors ・某Web系企業のSRE 自己紹介
本日のセッションについて ・初心者支部運営メンバーが、AWS Well-Architectedの勉強の為に設定した 架空の企業が題材となっています
目次 ・とある小さな企業のお話 ・Well-Architectedフレームワークとは? ・5本の柱を使って改善 ・まとめ
とある小さな企業のお話 ・色とりどりの布デザインマスクを製造/販売している小さな企業
とある小さな企業のお話 ・1年ほど前に、商品紹介等のためのWordPressのサイトを公開した ・サイトを構築したのは新卒入社2年目社員(エンジニアではない) ・いまAWSがイケてるらしい?と聞いて、独学でEC2上に構築
とある小さな企業のお話 ・その後の運用もこの2年目社員が1人で続けていた ・ここ最近、コロナ禍の影響でアクセスが増加中
構成と運用 ルートユーザー管理
この構成と運用をどう改善する?
AWS Well-Architectedフレームワークを参考にしてみよう
AWS Well-Architected FWとは? ・クラウドにサービスを構築する上での原則やベストプラクティス等を解説 ・概要 (約90ページ) と5つの柱から構成される ・運用上の優秀性の柱 (約50ページ) ・セキュリティの柱 (約50ページ) ・信頼性の柱 (約120ページ) ・パフォーマンス効率の柱 (約50ページ) ・コスト最適化の柱 (約50ページ)
運用上の優秀性の柱 ・4つの領域 ・組織 👀 ・準備 ・運用 ・進化
組織 ・運用モデルを 2 x 2 の形で表してみると、チーム間の関係を理解しやすい
「完全に分離した」運用モデル (https://d1.awsstatic.com/whitepapers/ja_JP/architecture/AWS-Operational-Excellence-Pillar.pdf)
「自ら実行して構築する」運用モデル (https://d1.awsstatic.com/whitepapers/ja_JP/architecture/AWS-Operational-Excellence-Pillar.pdf)
実践 ☑ 今後の体制を上司に相談 ☑ サイト開発/運用に関心のある1年目社員に参画してもらうことに 2年目社員2年目社員(プラットフォームエンジニアリング)1年目社員(アプリケーションエンジニアリング)2年目社員1年目社員
セキュリティの柱 ・5つの領域 ・アイデンティティ管理とアクセス管理 👀 ・検出 ・インフラストラクチャの保護 ・データ保護 👀 ・インシデント対応
アイデンティティ管理とアクセス管理 ・最小権限のアクセスを付与しよう ・まず、各IAMユーザー(やIAMロール)が何をする必要があるか定義しよう ・その上で、その実行に必要な権限(ポリシー)を付与しよう 👇 実践 ☑ ルートユーザーは権限として何でもできるので使用を止めた ☑ IAMユーザーを使用することにした ☑ 前述の新体制も踏まえて、各メンバーに最小限の権限(ポリシー)を付与した
データ保護 ・転送中のデータを保護しよう ・証明書を安全に管理しよう ・通信を暗号化しよう 👇 実践 ☑ ACMで証明書を発行/管理 ☑ ALBに証明書を付けてHTTPS化 ☑ HTTPはALBでHTTPSへリダイレクト
信頼性の柱 ・4つの領域 ・基盤 ・ワークロードのアーキテクチャ(ワークロード : AWSリソースとコードの集まり) 👀 ・変更の管理 ・障害の管理
ワークロードのアーキテクチャ ・可能であればサービスをステートレス(状態を持たないこと)にしよう ・ステートレスにすることで水平方向にスケーリング(注)できる 注 : EC2インスタンスの数を増やし、アクセスピーク時などに対応できる
ステートレス化の実践 ☑ EC2のストレージを、複数のEC2からアクセス可能なEFSに変更した ☑ DBを、EC2上にWordPressと同居させるのではなく、RDSでの管理とした
パフォーマンス効率の柱 ・4つの領域 ・選択 👀 ・レビュー ・モニタリング ・トレードオフ
テレビの取材があったよ、来週放送されるよ!(これはアクセスが凄いことになるぞ・・・)社長
選択 ・パフォーマンスアーキテクチャの選択 ・アーキテクチャを最適化するにはテストを通じて得られたデータが必要 👇 実践 ☑ 負荷テストを実施 ☑ ALBの前段にCloudFrontを導入 ☑ WordPressのキャッシュプラグインを利用するためにElastiCacheを導入 ☑ 再び負荷テストを実施して効果を検証
コスト最適化の柱 ・5つの重点分野 ・クラウドの財務管理の実践 👀 ・支出と使用量の認識 👀 ・費用対効果の高いリソース ・需要と供給を一致させる ・継続的最適化
クラウドの財務管理の実践 ・ファイナンス部門とテクノロジー部門のパートナーシップを確立する 👇 実践 ☑ 会社の経理担当者にもIAMユーザーを発行し、コストを常時参照可能にした ☑ AWSの割引プラン(Savings Plans, Reserved Instances)の仕組みを 経理担当者に説明し、今後の支払方法を一緒に検討するようにした
支出と使用量の認識 ・コントロールと通知 ・コスト管理の第一歩は、ポリシー外のコスト発生を通知すること 👇 実践 ☑ AWS Budgetsで予算を設定した ☑ 月次予算が超過しそうな見込みであればSlack通知するようにした
構成と運用の振り返り
これが ルートユーザー管理
こうなった 管理・アプリ担当・インフラ担当・経理担当
まとめ 1 / 2 ・Well-Architectedにはクラウド構築のベストプラクティスが詰まっている ・何をどこからどう改善すれば良いのか悩んでいる時の指針となる ・普段当たり前のように導入している構成の意義や目的の再確認になる ・技術的要素だけでなく組織体制や財務管理の話もある ・リードポジションの方も改めて読んでみると良いかもしれません
まとめ 2 / 2 ・それなりにボリューム(300ページ超)のあるドキュメントを読むのは腰が重い・・・ 👇 ・社内/社外の仲間と分担して読んで、意見交換してみては?
Special Thanks ! ・太田 亮 (運用上の優秀性の柱) ・山本 淳博 (セキュリティの柱) ・織田 繁 (パフォーマンス効率の柱) ・武田 可帆里 (コスト最適化の柱)
🏛ご静聴ありがとうございました🏛