🧩 疎結合(Loose Coupling)の設計原理

【疎結合の役割(設計のベストプラクティス)】

目次

🔍 1. 結論

💎 一言でいうと 疎結合(Loose Coupling)は、システムの一部が故障しても、他の部分が影響を受けずに稼働し続けるようにする 設計原理です。コンポーネント間に「緩衝材」を挟むことで、独立したスケーリングや非同期処理が可能になります。

  • SAAで「疎結合」という単語が出たら、真っ先に SQS / SNS / ELB を探す。
  • 同期処理(直接呼び出し)から 非同期処理(キュー経由など) への変更が定番。

📈 2. SAAで出やすいポイント

  • キューイングによるバッファリング: 処理能力を超えるリクエスト(スパイク)が来た際、間に Amazon SQS を挟むことでリクエストを一時保存し、バックエンドが自分のペースで処理できるようにする。
  • Pub/Subメッセージング: 1つのイベントを複数のシステムに同時に通知したい場合、直接呼び出すのではなく Amazon SNS や EventBridge を挟む(ファンアウト構成)。
  • ロードバランサーの活用: ELB を挟むことで、クライアントはバックエンドの具体的なIPや台数を意識する必要がなくなり(名前解決の分離)、EC2の増減が自由になる。
graph LR
    subgraph "❌ 密結合(Tightly Coupled)"
        A[Web Server] -->|直接API呼出| B[Worker Server]
    end
    subgraph "✅ 疎結合(Loosely Coupled)"
        C[Web Server] -->|メッセージ送信| D((SQS Queue))
        D -->|ポーリング| E[Worker Server]
    end
    style D fill:#f96,stroke:#333

🗝 3. キーワードでの判断

問題文のキーワード 疑うサービス・構成
🧩 「コンポーネントの分離」「疎結合化」 Amazon SQS, Amazon SNS
🛡️ 「スパイクの吸収」「ピーク負荷の緩和」 Amazon SQS (キューイング)
📢 「複数のシステムへ同時に通知」 Amazon SNS (Fan-out), EventBridge
🚪 「バックエンドの変更を隠蔽したい」 API Gateway, ELB

⚠️ 4. ひっかけポイント

🚫 よくある誤答パターン – 「EC2のスペックを上げる(垂直スケーリング)」 → 負荷対策にはなるが「疎結合化」にはならない。 – 「処理を同期的に待つ」 → SAAでは、ユーザーを待たせないために 非同期処理(SQSに投げてすぐ返す) が推奨される。


💡 5. 覚え方

🧠 暗記ショートカット – 密結合 = 「手渡し」 → 相手が不在だと渡せない。相手が遅いと自分も待つハメになる。 – 疎結合 = 「郵便ポスト(SQS)」 → ポストに入れておけば完了。相手は好きな時に取り出せる。 – 疎結合の三銃士: SQS(キュー), SNS(通知), ELB(負荷分散)。


📚 6. 関連サービス

アイコン サービス名 役割
📨 Amazon SQS システム間にキュー(待ち行列)を挟み、非同期・疎結合を実現
📢 Amazon SNS 1つのメッセージを複数ターゲットへ配信(Pub/Sub)
🚪 API Gateway フロントとバックエンドを分離するAPIのエンドポイント
⚖️ ELB トラフィックの窓口となり、背後のサーバー群を抽象化

🗒️ 7. Obsidian管理メモ

  • 見返すタイミング: アプリケーション統合(SQS/SNS)の学習時
  • 関連ノート候補: AWS_SAA_SQS, AWS_SAA_SNS

8. HTMLファイル名: AWS_設計原理_疎結合.html

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次