FOR PROFESSIONALSプロフェッショナル向け

P思考段4設計層設計

トレードオフの考え方|「なぜそのサービスか」を根拠つきで説明する型と、Well-Architected の6本柱の使い方

トレードオフの考え方|「なぜそのサービスか」を根拠つきで説明する型と、Well-Architected の6本柱の使い方

「なぜ RDS ではなく DynamoDB なのか」「なぜマルチリージョンにしないのか」。設計を持つ立場になると、こう聞かれる場面が増えます。答えが「AWS がそう勧めているから」「前のプロジェクトでそうだったから」では、聞いた側は納得できず、判断は見直せません。設計判断を根拠つきで説明できる状態とは、「何を得るために、何を捨てたか」を言える状態です。この記事は、その言い方の型と、AWS Well-Architected フレームワークを「観点の一覧」として使う方法を扱います。

この記事の結論

  • 設計に「全部を満たす正解」はありません。判断とは、何かを得るために何かを捨てることで、捨てたものを言えないなら判断ではなく成り行きです。
  • クラウドの設計で繰り返し出る天秤は3つ。可用性とコスト、疎結合と複雑さ、マネージドと自由度。
  • AWS Well-Architected フレームワークの6本柱は「満たすべき基準」ではなく、見落としを防ぐ観点の一覧として使います。柱同士は引っ張り合うので、どれを優先したかを残します。
  • 「なぜそのサービスか」の説明の型は、要件 → 選択肢 → 軸 → 決定 → 捨てたもの → 見直す条件の6つです。
  • 判断は ADR に残し、見直す条件が満たされたら新しい ADR で置き換えます。間違いは消さず、変わった理由を残します。

判断とは「何を捨てるか」を決めること

設計の場面で「一番いい構成はどれですか」と聞かれたら、答えは「要件によります」です。これは逃げではなく、事実です。可用性を最大にすればコストが最大になり、変更の速さを最大にすれば統制が最小になります。すべての軸を同時に最大にする構成は存在せず、どの軸を優先するかを決めることが設計です。

判断を人に説明できないのは、たいてい「捨てたもの」を意識していないからです。「DynamoDB を選びました」だけでは、「RDS で得られたはずの何を捨てたのか」が伝わりません。「結合とトランザクションの柔軟さを捨てて、テーブル設計を先に固める代わりに、アクセスパターンが決まっている読み書きの性能とスケールの手間の少なさを取りました」まで言えて、初めて聞いた側は「その捨てたものは、うちの要件で許容できるか」を判断できます。

クラウドの設計で繰り返し出る3つの天秤

THREE TRADE-OFFS繰り返し出る3つの天秤

判断とは、何を得るために何を捨てるかを決めること

  1. 1.可用性 と コスト

    冗長化の段階を上げるほど、止まらなくなり、費用と手間が増える。RTO・RPO を先に置く

  2. 2.疎結合 と 複雑さ

    分けるほど独立して変えられ、部品と通信と障害の起き方が増える。分ける理由が言えるか

  3. 3.マネージド と 自由度

    任せるほど運用が減り、細かい設定の自由が減る。自由度が要る理由が具体的に言えるか

Well-Architected の6本柱は「満たす基準」ではなく「見落としを防ぐ観点の一覧」

1. 可用性とコスト

サーバーを1台から2台に、1つの AZ から2つの AZ に、1つのリージョンから2つのリージョンに。冗長化の段階を上げるほど、1か所の障害で止まらなくなり、同時にコストと運用の手間が増えます。

THE SCALE可用性とコスト

片方を上げれば、もう片方が下がる

可用性を上げる

  • 複数 AZ に置く
  • 複数リージョンに置く
  • データを同期する

コストと手間が増える

  • 台数分の料金
  • 複製の遅延
  • 切り替えの手順と訓練

支点は要件(RTO・RPO)。それを満たす最小の構成を選ぶ

構成 何に耐えるか 増えるもの
1 AZ・1台 何にも耐えない なし(学習・検証向け)
複数 AZ・複数台 1台の故障、1 AZ の障害 台数分の料金、ロードバランサ、データの同期
複数リージョン 1リージョンの障害 ほぼ2倍の料金、データの複製の遅延、切り替えの手順と訓練

「どこまで耐えるか」は、止まったときの損失で決めます。1時間止まって失うものが、複数リージョンの年間コストより小さければ、複数リージョンは過剰です。RTO(どれだけ早く戻すか)と RPO(どれだけのデータ損失を許すか)を要件として先に置き、それを満たす最小の構成を選びます。

AVAILABILITY LADDER可用性とコストの天秤

どこまで耐えるかは、止まったときの損失で決める

  1. 1 AZ

    何にも耐えない

    学習・検証向け。増えるものは無い

  2. 複数 AZ

    1台の故障・1 AZ の障害に耐える

    台数分の料金、ロードバランサ、データの同期

  3. 複数リージョン

    1リージョンの障害に耐える

    ほぼ2倍の料金、複製の遅延、切り替えの手順と訓練

RTO・RPO を要件として先に置き、それを満たす最小の構成を選ぶ

2. 疎結合と複雑さ

1つの大きなアプリを、役割ごとに分けて(マイクロサービス)、キューやイベントでつなぐ。分けるほど、1つの変更が全体に波及しにくくなり、部分ごとに拡張できます。同時に、部品の数・部品間の通信・障害の起き方が増え、「どこで遅いか」を追うのが難しくなります。

分ける理由が「独立して変更したいから」「独立して拡張したいから」なら分ける価値があります。「流行っているから」なら、複雑さだけが増えます。小さいチームなら、まず1つのアプリを丁寧に作り、分ける理由が出てきた部分から分けるのが執筆者の判断です。

3. マネージドと自由度

RDS を使えば OS とデータベースの運用を AWS が持ち、自分で EC2 に MySQL を入れれば全部を自分で持ちます。ECS か EKS かで書いた「何を自分で持ちたいか」と同じ天秤です。任せるほど運用は減り、細かい設定と特殊な構成の自由は減ります。

「自由度が要る理由」が具体的に言えないなら、マネージドを選びます。「あとで困るかもしれない」は理由になりません。困ったときに移る道(RDS → EC2 上の MySQL)は残っているからです。

CHECK 1ここまでの確認

「一番いい構成はどれですか」への、この記事の答えはどれ?

答えと解説

答え: 3. 要件による。すべての軸を同時に最大にする構成は無い

判断とは何かを得るために何かを捨てることです。どの軸を優先するかを決めることが設計で、捨てたものを言えないなら判断ではなく成り行きです。

Well-Architected の6本柱は「観点の一覧」として使う

AWS Well-Architected フレームワークは、AWS が公開している設計のベストプラクティス集で、6本の柱で構成されています。

柱 問い 引っ張り合う相手
運用上の優秀性 変更を安全に速く出し、運用から学べているか セキュリティ(承認の段階)
セキュリティ データと権限を守れているか 運用上の優秀性、パフォーマンス
信頼性 壊れても回復できるか、必要な量を出せるか コスト最適化
パフォーマンス効率 資源を要件に合わせて効率よく使えているか コスト最適化、信頼性
コスト最適化 不要な費用を避けられているか 信頼性、パフォーマンス
持続可能性 環境への影響を減らせているか パフォーマンス

6本を全部満たす設計はありません。柱同士が引っ張り合うからです。だから、フレームワークは「満たすべき基準」ではなく、「この観点を見落としていないか」を確かめる一覧として使います。設計レビューで「セキュリティの柱の観点で、この構成は何を捨てているか」と聞くと、議論が具体的になります。

各柱には「設計原則」と、それを確かめる質問が用意されています。全部に答える必要はなく、自分の要件で優先する柱の質問を先に読み、そこで「捨てている」と分かったものを判断の記録に書きます。柱が5本だった頃の資料は、持続可能性が足された 2021 年より前のものです。

「なぜそのサービスか」を説明する型

説明の型は6つの要素でできています。ECS か EKS かで使った ADR の型と同じです。

WHY THIS SERVICE「なぜそのサービスか」の型

捨てたものと見直す条件まで書いて、初めて判断

  1. 要件

    数字で書く

  2. 選択肢

    最低2つ

  3. 軸

    何で比べたか

  4. 決定

    何を選んだか

  5. 捨てたもの

    空欄なら比べていない

  6. 見直す条件

    いつ再検討するか

「なぜそのサービスか」の6要素

  • 要件 — 何を満たす必要があるか。数字で書く(RTO 1時間、月間 1億リクエスト、担当 2名)
  • 選択肢 — 検討したもの。最低2つ。1つしか無い判断は判断ではない
  • 軸 — 何で比べたか。3つの天秤のどれか、または6本柱のどれか
  • 決定 — 何を選んだか
  • 捨てたもの — 選ばなかったことで失うもの。ここが空欄なら、比べていない
  • 見直す条件 — いつ再検討するか。要件の数字が変わったとき、チームが変わったとき

この型で書くと、聞いた側は「要件の数字はうちも同じか」「捨てたものはうちで許容できるか」の2点で判断でき、説明する側は「なぜ」を毎回思い出さずに済みます。

例: ログの保管先

  • 要件: アプリのログを 90 日は検索可能に、1年は保管。月 500 GB。検索するのは障害調査のときだけ。
  • 選択肢: CloudWatch Logs のみ / CloudWatch Logs(30日)+ S3(残り) / OpenSearch。
  • 軸: コスト最適化と運用上の優秀性(調査のしやすさ)。
  • 決定: CloudWatch Logs に 30 日、その後 S3 に出して 1 年。検索は Logs Insights と Athena。
  • 捨てたもの: OpenSearch の高速な全文検索と可視化。31 日以降のログは検索に時間がかかる。
  • 見直す条件: 障害調査で 30 日より前のログを月に複数回見るようになったとき。ログ量が月 2 TB を超えたとき。

要件の数字と捨てたものが書いてあるので、半年後に別の人が「OpenSearch にすべきでは」と思ったとき、「見直す条件」に当てはまるかを確かめれば済みます。

CHECK 2ここまでの確認

Well-Architected の6本柱の正しい使い方はどれ?

答えと解説

答え: 2. 見落としを防ぐ観点の一覧として使い、どの柱を優先したかを残す

柱同士は引っ張り合うので、全部を満たす設計はありません。観点の一覧として使い、優先した柱と捨てたものを判断の記録に書きます。

判断を残し、見直す

設計判断の価値は、正解を当てることではなく、あとで見直せることにあります。要件は変わり、サービスは増え、チームは入れ替わります。当時の判断が「なぜ」ごと残っていなければ、次の人は同じ検討をゼロからやり直すか、理由を知らずに変えて壊すかのどちらかになります。

ADR は、コードと同じリポジトリに、番号を付けた短い文書として置きます。見直す条件が満たされたら、古い ADR を消すのではなく、新しい ADR を書いて「これは ADR-012 を置き換える」と記します。判断の履歴を消すと、組織は同じ失敗を繰り返します。

CHECK 3ここまでの確認

「なぜそのサービスか」の6要素で、空欄なら「比べていない」と分かるのはどれ?

答えと解説

答え: 3. 捨てたもの

選ばなかったことで失うものが書けないなら、選択肢を比べていません。「見直す条件」と合わせて書くことで、判断があとで見直せます。

まとめ

設計に全部を満たす正解はなく、判断とは何を捨てるかを決めることです。クラウドの設計では、可用性とコスト・疎結合と複雑さ・マネージドと自由度の3つの天秤が繰り返し出ます。Well-Architected の6本柱は、満たすべき基準ではなく見落としを防ぐ観点の一覧として使い、どの柱を優先したかを残します。「なぜそのサービスか」は、要件・選択肢・軸・決定・捨てたもの・見直す条件の6要素で説明し、ADR に残して置き換えていきます。この型を組織の単位に広げたものが、次のマルチアカウント設計です。

参照ソース

SCOREこの記事の確認テスト

0/3問 正解

各章の「ここまでの確認」に答えると、ここに集まります。結果はこの端末のブラウザにだけ残り、サーバには送りません。

HAND IT OVER人に渡すなら

一言で説明するなら

設計に正解はなく、「何を得て何を諦めたか」を言える構成だけが運用できます。決めた理由を残すのが設計です。

前提を持たない人にそのまま渡せる記事です。「後輩に説明する」「顧客に理由を伝える」の材料として。

FAQよくある質問

Well-Architected の6本柱を全部満たす設計はありますか?

ありません。柱同士が引っ張り合うからです。信頼性を上げれば(複数リージョン)コストが上がり、セキュリティを上げれば(承認の段階を増やす)運用上の優秀性(変更の速さ)が下がります。6本柱は「満たすべき基準」ではなく「見落としを防ぐ観点の一覧」として使い、どの柱を優先したかを判断の記録に残します。

「ベストプラクティスに従う」と「トレードオフを考える」は矛盾しませんか?

しません。ベストプラクティスは「多くの場合にうまくいく既定の選択」で、それを採らないときに理由を説明する義務が生じる、という位置づけです。既定に従うときは説明が要らず、外すときに「何を得るために外すか」を書く。この非対称が、判断の速さと質を両立させます。

判断が間違っていたと分かったらどうしますか?

ADR に「見直す条件」を書いてあれば、それが満たされた時点で新しい ADR を書き、古い ADR を「置き換えられた」状態にします。間違いを消すのではなく、なぜ当時そう判断し、何が変わったかを残します。次に同じ状況の人が、同じ検討を繰り返さずに済みます。

SAME TRACK同じ領域の記事

マルチアカウント設計|アカウントを「境界」として使い、Organizations と SCP で組織のガードレールを引く
マルチアカウント設計|アカウントを「境界」として使い、Organizations と SCP で組織のガードレールを引く 段4 設計設計