AWS SAA-C03試験対策|アーキテクチャについて、まとめています。自分のアウトプットです!
ここでは、試験で頻出するアーキテクチャの重要概念と、それに関連するAWSサービスをまとめます。
1. 疎結合 (Decoupling)
疎結合とは、システム内のコンポーネントが互いに独立して機能し、変更や障害が他のコンポーネントに影響を与えにくい状態のことです。これにより、システムの可用性と柔軟性が向上します。
- 主要サービス:
- Amazon SQS (Simple Queue Service): メッセージキューサービス。生産者(Producer)と消費者(Consumer)を切り離し、非同期処理を可能にします。
- スタンダードキュー: 無制限のスループットを持つデフォルトのキュー。メッセージの順序は保証されません。
- FIFOキュー (First-In, First-Out): メッセージの厳密な順序を保証し、重複を排除します。トランザクションの順序が重要な場合に利用されます。
- Amazon SNS (Simple Notification Service): メッセージングサービス。メッセージを複数のサブスクライバー(SNSトピック)に同時に配信します。
- AWS Lambda: イベント駆動型のサーバーレスコンピューティングサービス。イベント(例:S3へのファイルアップロード)をトリガーに処理を実行することで、コンポーネントを疎結合にできます。
- Amazon SQS (Simple Queue Service): メッセージキューサービス。生産者(Producer)と消費者(Consumer)を切り離し、非同期処理を可能にします。
2. 高可用性 (High Availability) と フォールトトレラント (Fault Tolerance)
- 高可用性: サービスが継続して利用できる状態を維持することです。
- フォールトトレラント: コンポーネントに障害が発生しても、システム全体が機能を維持することです。
これらの概念を実現するために、AWSでは複数のアベイラビリティゾーン (AZ) を利用することが基本となります。
- 主要サービス:
- 複数AZの利用: EC2インスタンス、RDS、ElastiCacheなどを異なるAZに配置することで、AZレベルの障害に備えます。
- Auto Scaling: アプリケーションの負荷に応じてEC2インスタンス数を自動調整し、キャパシティを最適化します。
- Elastic Load Balancing (ELB): 複数のターゲット(EC2インスタンスなど)にトラフィックを分散し、単一障害点を排除します。
- Amazon Route 53: AWSのDNSサービスです。ドメイン名をWebサイトやアプリケーションにルーティングします。
- ルーティングポリシー:
- シンプルルーティング: 単一のリソースにトラフィックをルーティングします。
- フェイルオーバールーティング: アクティブ/パッシブ構成で高可用性を実現します。
- レイテンシールーティング: ユーザーのレイテンシーが最も低いリージョンにトラフィックをルーティングします。
- 加重ラウンドロビンルーティング: 複数のリソース間で指定した重みに応じてトラフィックを分散します。
- ルーティングポリシー:
3. パフォーマンス (Performance) と アクセラレーション (Acceleration)
- 主要サービス:
- Amazon CloudFront: グローバルなCDN(コンテンツデリバリーネットワーク)です。ウェブコンテンツをユーザーに近いエッジロケーションにキャッシュし、レイテンシーを削減します。
- AWS Global Accelerator: AWSのグローバルネットワークを活用し、ユーザーからアプリケーションへのネットワークパフォーマンスを向上させます。
- CloudFront と Global Accelerator の違い:
- CloudFront: 主にHTTP/HTTPSプロトコルを使用する静的コンテンツや動的コンテンツの配信に最適。
- Global Accelerator: 主に静的IPアドレスを提供し、TCP/UDPトラフィックのパフォーマンスを向上させることに特化しています。APIやゲームサーバーなど非HTTPワークロードに最適です。
- S3 Transfer Acceleration: Amazon S3バケットへのファイルアップロードを、エッジロケーション経由で行うことで高速化します。
4. 耐久性 (Durability)
耐久性とは、データの損失を防ぎ、長期間にわたってデータを安全に保存できる特性のことです。
- 主要サービス:
- Amazon S3 (Simple Storage Service): 非常に高い耐久性(99.999999999%)を持つオブジェクトストレージサービスです。データを自動的に複数AZに冗長化して保存します。
- RDS & DynamoDB: これらのデータベースサービスも、データを冗長的に保存することで高い耐久性を実現します。
5. 災害復旧 (Disaster Recovery: DR)
大規模な障害(リージョンレベルの障害など)が発生した場合に、サービスを迅速に復旧するための計画とプロセスです。
- 主なDR戦略:
- バックアップ&リストア (Backup & Restore): 最も低コストな方法。RPO(目標復旧時点)とRTO(目標復旧時間)が長くなります。
- パイロットライト (Pilot Light): 最小限のリソースを別のリージョンで起動しておき、本番環境のデータのみを同期します。
- ウォームスタンバイ (Warm Standby): パイロットライトより多くのリソースを起動しておき、本番環境の複製を低スケールで運用します。
- ホットスタンバイ (Hot Standby): 別のリージョンでも本番環境と同じ構成で常に稼働させます。最も高コストですが、最も低いRTO/RPOを実現します。
6. 効率的なデプロイ (Efficient Deployment)
アプリケーションのデプロイとインフラのプロビジョニングを自動化することで、人的ミスを減らし、効率性を高めます。
- 主要サービス:
- AWS Elastic Beanstalk: アプリケーションコードをアップロードするだけで、インフラ(EC2, ELB, Auto Scalingなど)を自動でプロビジョニングし、デプロイします。
- AWS CloudFormation: インフラストラクチャをコードとして定義し、テンプレートから一貫した環境を自動でプロビジョニングします。
- テンプレートのセクション: CloudFormationテンプレートは、
Resources
(プロビジョニングするAWSリソース) が必須です。その他にParameters
,Mappings
,Conditions
,Outputs
などがあります。 - CloudFormation スタック: テンプレートから作成されたAWSリソースの集合体です。スタックを更新、削除することで、リソース全体をまとめて管理できます。
- テンプレートのセクション: CloudFormationテンプレートは、
まとめ
- 疎結合: SQS(FIFOを含む)、SNS、Lambdaでコンポーネントを分離。
- 高可用性: ELB、Auto Scaling、Route 53のルーティングポリシーを活用。
- パフォーマンス: CloudFront、Global Accelerator、S3 Transfer Accelerationでレイテンシーを改善。
- 耐久性: S3などのサービスでデータの安全性を確保。
- 災害復旧: 4つのDR戦略からRTO/RPOの要件に応じて選択。
- 効率的なデプロイ: Elastic BeanstalkやCloudFormationでインフラ管理を自動化。