サーバーの基本!

2024/07/18

AWS Well-Architected フレームワークとは?

AWS Well-Architected フレームワークとは

AWS Well-Architected フレームワークは、AWSを活用する際に参考となるベストプラクティス集です。これまでの取り組みから導き出されたベストプラクティスがAWS Well-Architected フレームワークにまとめられています。AWS Well-Architected フレームワークを活用することで、現況とベストプラクティスを比較しながら、AWSのシステムを構築できます。



■フレームワークの6本の柱
AWS Well-Architected フレームワークは6本の柱でベストプラクティスをまとめています。6本の柱とは、システムを作成するときの基礎として必ず必要である、「運用上の優秀性」「セキュリティ」「信頼性」「パフォーマンス効率」「コスト最適化」「持続可能性」です。この6本の柱が、AWSの設計・仕様に組み込まれることで、安定した効率的なシステムを作成することができます。ただし、必ずしもAWS Well-Architected フレームワーク通りにシステムを構築しなければならないというわけではありません。自社システムのリスクや改善点を顕在化し、それらを自社のニーズと照らし合わせて、具体的にどうするかのビジネス的な判断に役立てます。
ここでは「AWS Well-Architected フレームワーク2023年10月」のホワイトペーパーの中からフレームワークの6本の柱それぞれの、AWSをクラウド上で最適に設計するための原則(設計原則)を紹介します。



■1.運用上の優秀性
・運用をコードとして実行する
→システムの操作方法をプログラム(コード)として書いておくことで、そのコードがきっかけ(トリガー)となり、自動的に必要な操作が実行されます。これにより、人的ミスが減り、システムの運用が効率的になります。


・小規模かつ可逆的な変更を頻繁に行う
→システムに変更を加える場合、もし変更が失敗してもすぐに元に戻せるように、まずは小さな部分から変更を始めます。また、できる限りお客様に影響が出ないように工夫します。


・運用手順を定期的に改善する
→常に最良の運用手順を考えます。運用手順は定期的に見直して改善できるように計画を立て、決まったスケジュールでその手順が効果的に動作しているかを確認します。そして、チームメンバーがその手順を十分に理解していることも確認します。


・障害を予想する
→システムに問題(障害)が発生した場合に備えて、その問題の原因を見つけて解決するための練習を行います。具体的には、問題が起こる可能性のあるシナリオ(状況)を考えて、そのシナリオを使ってテストを行い、どんな影響が出るかを確認します。また、問題に対する対処法(手順)を試して、その方法がちゃんと効くかどうか、チームのメンバーがその手順をよく理解しているかを確かめます。このような問題が発生したときに、チームメンバーが対応できるかどうかを定期的に確認する日を決めておきます。


・運用上のすべての障害から学ぶ
→システムの運用中に起こるすべての出来事や問題(障害)から学びます。学んだことを基に、システムや手順をより良くするための改善を進めます。これらの学びをチームの中だけでなく、会社全体で共有して、皆がその教訓を活かせるようにします。



■2.セキュリティ
・強力なアイデンティティ基盤の実装
→全てのユーザー情報(アイデンティティ)を一つのシステムで管理することで、安全性を高めます。


・トレーサビリティの実現
→システムを常に監視し、問題が発生したらすぐに知らせる機能を持ちます。これにより、早期に問題を発見し対応できます。システムの動作記録(ログ)や性能データ(メトリクス)を集めて、問題があれば自動で調査します。


・全レイヤーでセキュリティを適用する
→複数のセキュリティ対策を組み合わせて、多重の防御層を作ります。これにより、より強固なセキュリティを実現します。


・セキュリティのベストプラクティスを自動化する
→ソフトウェアで自動的に行うセキュリティ対策を導入し、速くてコスト効率の良いシステム運用を可能にします。


・伝送中および保管中のデータの保護
→データを重要度に応じて分類し、暗号化やトークン化(データを別の形に変換する方法)を使って、データが移動中や保存中でも安全に保ちます。


・データに人の手を入れない
→人がデータに直接触れる機会を減らし、データの誤操作や変更、ミスを防ぎます。


・セキュリティイベントに備える
→予期せぬ問題(インシデント)に備えて、組織の要件に合わせた対応計画を用意します。問題が発生した時に速やかに対処できるように、定期的にシミュレーションを行い、検出、調査、復旧のスピードを向上させます。



■3.信頼性
・障害から自動的に復旧する
→システムの重要な指標(パフォーマンスデータなど)を常に監視します。指標が決められた範囲(しきい値)を超えた場合、自動的に対応する仕組み(オートメーション)が動きます。これにより、問題が発生したときに自動で通知を受け、問題の追跡や修正も自動で行うことができます。さらに高度な自動化を使うと、問題が発生する前に修正を行うことも可能です。


・復旧手順をテストする
→クラウド環境では、システムにどのような問題が発生するかをあらかじめテストすることができます。また、問題が発生した場合の対処方法も検証できます。この方法を使うことで、実際に問題が起こる前に対策をテストし、修正することができるので、リスクを減らせます。


・水平方向にスケールしてワークロード全体の可用性を高める
→大きなリソース(サーバーなど)を複数の小さなリソースに分けることで、1つの問題がシステム全体に与える影響を減らします。これにより、1つの部分で問題が発生しても、他の部分が正常に動作し続けるようにできます。


・キャパシティーを推測することをやめる
→クラウドでは、システムの利用状況を監視し、必要に応じてリソースを自動で追加したり削除したりすることで、常に最適な状態を保つことができます。これにより、無駄を減らし、コストも抑えることができます。


・オートメーションで変更を管理する
→システムのインフラ(基盤)に変更を加える場合は、自動化された手順を使用する必要があります。これにより、変更が確実に実行され、人為的なミスを防ぐことができます。



■4.パフォーマンス効率
・最新テクノロジーの標準化
→最新のテクノロジーを使いたい場合、クラウドベンダーを利用すると、その技術を標準化して利用できます。クラウドでは、ITチームが専門知識を持っていなくても、複雑な技術(例えば機械学習)をサービスとして簡単に使えるようになっています。これにより、ITチームは技術の管理に時間を使わずに、製品の開発に集中できます。


・わずか数分でグローバル展開する
→AWSを使うと、低コストで素早くサービスを利用できます。さらに、AWSのサービスセンターは世界中にあるので、どこからでも快適にサービスを利用できます。


・サーバーレスアーキテクチャを使用する
→サーバーレスの技術を使うと、システムが動いている時だけ料金が発生するので、必要な容量を気にせずにサービスを利用できます。これにより、コストも抑えられます。


・より頻繁に実験する
→仮想的で自動化されたリソースを使うと、異なる設定でのテストを簡単に何度も実行できます。これにより、最適な設定を見つけるためのテストがより頻繁に行えます。


・システムに対する精通の程度を考慮する
→クラウドサービスの使い方を理解し、常にワークロードの目標に最適なテクノロジーを選ぶことが重要です。



■5.コスト最適化
・クラウド財務管理の実装
→コスト効率の高い組織を作るには、セキュリティや運用の能力だけでなく、財務管理やコスト最適化についての知識も必要です。このために、クラウドの財務管理とコスト最適化に投資する必要があります。


・消費モデルを導入
→AWSでは、使った分だけの料金を支払う仕組みです。将来の使用量を複雑に予測する必要がなく、ビジネスのニーズに応じて使用量を増やしたり減らしたりできます。


・全体的な効率を測定する
→ビジネスの成果と、それを実現するためにかかったコストを測定します。これにより、生産性を向上させてコストを削減することの利点を把握できます。


・差別化につながらない高負荷の作業に費用をかけるのをやめる
→AWSは、サーバー運用に必要な多くの作業を行います。これにより、オペレーティングシステムやアプリケーションの管理に関する負担が軽減されます。その結果、顧客やビジネスプロジェクトに集中できるようになります。


・費用を分析および属性化する
→システムの使用状況とコストを正確に特定し、分析することで、投資収益率(ROI)を把握できます。これにより、リソースを最適に利用し、コストを削減するチャンスを見つけることができます。



■6.持続可能性
・影響を把握する
→ビジネスの成果と、それが環境に与える影響を測定します。これにより、パフォーマンスを評価し、改善の必要性を確認できます。また、変更が長期的にどのような影響を与えるかも予測します。


・持続可能性の目標を設定
→ワークロードごとに長期的な目標を設定し、どれだけ利益が出るか(投資収益率: ROI)をモデル化します。持続可能性の目標に対して、必要なリソースを提供します。ユーザーごと、オペレーションごとなど、作業当たりの影響を軽減するために、拡大した計画にて設計します。


・使用率の最大化
→各ワークロードの規模を適切に調整し、ハードウェアのエネルギー効率を最大化します。不要なリソース(アイドル状態のリソース)を最小限に抑えます。


・より効率的な新しいハードウェアとソフトウェアの提供を予測して採用する
→パートナーと協力して改善を進め、ハードウェアとソフトウェアの効率を常に評価します。新しい技術を長期的に取り入れる柔軟性も考慮します。


・マネージドサービスの使用
→幅広いワークロードをサポートするために必要なインフラストラクチャを減らすために、共有サービスを利用します。マネージドサービスを活用して、アクセス頻度の低いデータをコールドストレージに移したり、コンピュータの性能を調整したりして、自動で持続可能性を実現します。


・クラウドワークロードのダウンストリームの影響を軽減
→サービスを使うのに必要なエネルギーやリソースを減らします。これにより、お客様がデバイスをアップグレードする必要性も減ります。また、デバイスファームを使ったテストで実際の影響を測定し、お客様と直接テストを行うことで影響を把握します。



■まとめ
AWS Well-Architected フレームワークは、AWSを設計・構築する際や運用中に役立ちます。定期的にこのフレームワークを活用することで、自社の状態と照らし合わせて課題を見つけることで、AWSシステムを最適化できます。