AWS re:Invent 2021にて AWS Well-Architected カスタムレンズの発表: 内部のベストプラクティスを使用して Well-Architected フレームワークを拡張する というアップデートがあったので使ってみます。

部署や特定案件、独自のベストプラクティスをLensとして定義して、Well-Architected Toolで管理・更新することができるようになりました。

事前知識として「Well-Architectedとは?」「レンズとは?」最初に記載しているので、不要な方は [本題]Well-Architected カスタムレンズ から読んでいただければ。

事前知識

Well-Architectedとは?

クラウドアーキテクチャのベストプラクティス

AWS Well-Architected

AWS Well-Architected は、クラウドアーキテクトがアプリケーションやワークロード向けに高い安全性、性能、障害耐性、効率性を備えたインフラストラクチャを構築する際に役立ちます。AWS Well-Architected では、5 つの柱(優れた運用効率、セキュリティ、信頼性、パフォーマンス効率、コストの最適化)に基づいて、お客様とパートナーがアーキテクチャを評価し、時間と共に拡大できる設計を実装するための一貫したアプローチを提供しています。

Well-Architectedは観点となる「柱」と、具体的なベストプラクティスである「質問」により構成されます。

構成イメージ

- Well-Architected
  - 柱:セキュリティ
    - 質問:SEC 1. ワークロードを安全に運用するには、どうすればよいですか?
        - ベストプラクティス(≒チェック項目):アカウントを使用してワークロードを分ける
        - ...
    - 質問:SEC 2. ユーザー ID とマシン ID はどのように管理したらよいでしょうか?
    - ...
  - 柱:信頼性
  - ....

マネージメントコンソールから「Well-Architected Tool」を選択することで、ベストプラクティス(Well-Architected)に沿ったワークロードかどうかチェックし結果を管理・更新することができます。該当のベストプラクティスを実現するのに役立つリソース情報も表示してくれます。

WA.png

レンズとは?

基本となるWell-Architectedに加えて特定の領域・観点に特化したベストプラクティスの質問を追加することができるものです。
Lenses

Well-Architected_Tool.png

構成イメージ

- ワークロード
    - Well-Architected Framework
            - 柱[]
                - 質問[]
                    - ベストプラクティス[]
    - レンズ[]
        - 各種レンズ
            - 柱[]
                - 質問[]
                    - ベストプラクティス[]

ちなみに基礎となる「Well-Architected Framework」を外すことはできません。
APIも確認しましたが、「Well-Architected Framework」を付ける/外すをコントロールできそうなパラメータはありませんでした。

[本題]Well-Architected カスタムレンズ

前述の「レンズ」を独自に作成・利用・共有できるようになったのが今回のアップデートです。

カスタムレンズの作成と利用の流れ

作成

  1. マネジメントコンソールから Well-Architected Tool > カスタムレンズ > カスタムレンズを作成を選択
  2. レンズ定義用のテンプレートファイルをダウンロード(JSONファイル)
  3. レンズ定義ファイルを編集し、アップロード
  4. レンズを公開※する

※Lensには「公開(publish)」と「共有(share)」という概念があります。「公開」はレンズを作成したアカウント内で利用できるようにすること。「共有」は他のAWSアカウントでも使えるように共有することです。共有についても後述します。

利用

  1. ワークロードのLensを選択する画面で公開されたLensが選択できるようになっているので選択する。

Well-Architected_Tool.png

定義ファイルのフォーマット

定義ファイルのフォーマットはこちら

このフォーマット仕様を読まなくてもテンプレートファイルをダウンロードして眺めれば、だいたいどこ触ればいいかわかるようになっています。

めちゃくちゃ雑に書くと、だいたい以下のような構成です。

- pillars[] # 柱
  - questions[] # 質問
    - choices[] # ベストプラクティス(チェック項目)
        - 内容
        - helpfulResource # 画面右端に出す「便利なリソース」欄
        - improvementPlan # リスクありと判断した場合に画面下に出す「改善計画」欄
        ....
    - riskRules[] リスク判定条件
        - 条件(choicesのidで条件を記述) & リスク

おもしろいなと思ったのはRisk Rules sectionのところで、細かくリスクの判定条件を指定できるところ。Well-Architectedではレビュー結果に応じてその項目のリスクを「高リスク」「中リスク」「リスクなし」と分類できます。レビュー後に改善をかけてこの「リスク」を減らしていくような使い方が想定されています。ベストプラクティスにも「優先順位」や「これができてるなら、ここはできてなくてもたいしたリスクではない」という場合があるので使えそうです。

2021/12/07現在、日本語での記述はほとんどの項目でできないようなので、英語で記述する必要があります。JSONを読み込ませたときに以下のようなエラーが表示されます。

[Validation] Invalid lens description (must be 1-2048 characters, allowed characters are A-Z, 0-9, a-z, - _ . , : / ( ) @ ! & # + ' and ’)

カスタムレンズの共有

カスタムレンズは他のAWSアカウントに共有することができます。ベストプラクティスは組織単位でアカウントはプロジェクト/環境単位というケースが多いと思うのでこれは嬉しいですね。
やり方はワークロードの共有と同じで、共有したいアカウントのIDを入力します。複数アカウントに共有したい場合はカンマ区切り。

共有する側アカウント:招待の送信

Well-Architected_Tool.png

共有される側アカウント:招待の承諾

Well-Architected_Tool.png

承諾すると、共有されたレンズをワークロードに組み込むことができるようになります。

感想

今まで自分はチーム内のベストプラクティスや蓄積してきたレビュー観点を、タスク単位ではスプレッドシートや課題テンプレートのチェック項目として管理していました。ワークロード全体の新規開発時や定期的な見直しにWell-Architectedを利用しているので、そのタイミングでのチェックにカスタムLensは使ってみようと考えています。

今回は触れませんでしたがカスタムLensを更新するとき差分のある質問を表示してくれたり、マイナーバージョンの変更(自動適用)であれば参照しているワークロード側で「この質問について更新があった」旨の表示がされるなど細かいところ気が利いています。

改善のアイディアが思いつけばマネジメントコンソール左下隅にある「フィードバック」から送ってみようと思います。

Well-Architected_Tool.png

元記事はこちら

https://qiita.com/shu85t/items/ac559487be5ecc7ea8b6
著者:
@shu85t


アイレットなら、AWS で稼働するサーバーを対象とした監視・運用・保守における煩わしい作業をすべて一括して対応し、経験豊富なプロフェッショナルが最適なシステム環境を実現いたします。AWS プレミアコンサルティングパートナーであるアイレットに、ぜひお任せください。

AWS 運用・保守サービスページ:
https://cloudpack.jp/service/aws/maintenance.html

その他のサービスについてのお問合せ、お見積り依頼は下記フォームよりお気軽にご相談ください。
https://cloudpack.jp/contact/form/