こんばんは
現在、 AWS Certified Solutions Architect – Associate (SAA) の勉強をしています。
サービスやアーキテクチャについての理解は進んできたのですが、実際に手を動かして構築する経験がまだ足りていないと感じました。
そこで今回は、AWSの基本的なWebアプリケーション構成を自分で設計し、実際に構築してみました。
この記事では、構築したアーキテクチャと各サービスの役割について整理していきます。
構成概要
今回作成した構成は以下の通りです。
いわゆる AWSの典型的な3層Webアーキテクチャを意識した構成にしています。
Route53
DNSサービスで、ユーザーがドメインにアクセスすると、Route53がDNS解決を行い、CloudFrontのエンドポイントへルーティングします。
今回はすでにドメインを所有していたため、ホストゾーンの管理で使用しました。
【役割】
- ドメイン管理
- DNS解決
- ルーティング
Aレコードでは、CloudFrontのドメインをエイリアスとして設定しています。
CloudFront
CDN(Content Delivery Network)サービスです。
【主な役割】
- コンテンツキャッシュ
- レイテンシー削減
- オリジンサーバの負荷軽減
また、CloudFrontには WAF を関連付けることができます。
今回の構成では、オリジンとしてALBを指定しています。
WAF
Webアプリケーションファイアウォールです。
主にWebアプリケーションに対する攻撃を防ぐことができます。
【防げる攻撃の例】
- SQLインジェクション
- XSS(クロスサイトスクリプティング)
- Botアクセス
- 悪意のあるトラフィック
今回はCloudFrontに関連付ける形で設定しました。
ACM
SSL/TLS証明書を管理するサービスです。
ALBに証明書をアタッチすることで、HTTPS通信を実現します。
ALB
Application Load Balancerです。
【役割】
- トラフィックの分散
- Auto Scalingとの連携
- 高可用性の確保
ALBは Public Subnet に配置しています。
また、ターゲットグループを作成し、EC2インスタンスを登録しています。
EC2(Auto Scaling)
WebアプリケーションサーバとしてEC2を利用しています。
Auto Scalingを利用することで、以下のようなメリットがあります。
- トラフィック増加時に自動スケール
- インスタンス障害時の自動復旧
↓
EC2は Private Subnet に配置しています。
RDS
マネージド型のデータベースサービスです。
今回は Multi-AZ構成 を採用しています。
AZ1 : Primary
AZ2 : Standby
【特徴】
- 同期レプリケーション
- 自動フェイルオーバー
- 高可用性
これにより、AZ障害が発生した場合でもサービス継続が可能になります。
S3
オブジェクトストレージサービスです。
【用途例】
- 画像保存
- 静的ファイル
- バックアップ
S3は VPCの外に存在するリージョンサービスであり、EC2からはAPI経由でアクセスします。
構築してみて
今回の構築では、以下のようなAWSの基本的なインフラ構成について理解を深めることができました。
- VPCの作成
- サブネット(Public / Private)の分離
- Internet Gatewayの設定
- ALBとAuto Scalingの連携
- RDSのMulti-AZ構成
実際に手を動かして構築してみることで、
SAAの学習内容の理解がかなり深まったと感じています。
まとめ
AWSのサービスは個別に学習していると理解しにくい部分もありますが、実際に構成を作ってみることで、サービス同士の関係性が理解しやすくなりました。
しかし、まだまだ学習中の身ではありますが、誤っている点や改善点などありましたら、ぜひご指摘いただけますと幸いです。









