🚀 ニフティ’s Notion

☁️ 【AWS2024 #3】ハンズオン1: 3層アーキテクチャの説明

ざっくり

3層アーキテクチャというものを使って、Webアプリケーションを3種類の構造に分けて構築していきます。

加えて、適切なネットワーク設定と冗長化を行なった上で、自前のWordPressのサーバとDBをAWSを使って立てます。

image block

参照:

利用するAWSリソースの説明

Amazon VPC

https://aws.amazon.com/jp/vpc/

  • AWS上に、仮想のプライベートネットワークを構築することができるサービス
  • VPCを作成した上で、複数のプライベート/パブリックサブネットに分割することができる

ELB

https://aws.amazon.com/jp/elasticloadbalancing/

  • 従量課金で使うことのできるロードバランサ
  • 異なる3種類のロードバランサがある
    • ☆Application Load Balancer (ALB)
      • 今回使うのはこれ
      • レイヤ7に対応
    • Network Load Balancer (NLB)
      • レイヤ4に対応
    • Gateway Load Balancer (GWLB)
      • サードパーティのセキュリティ製品をうまいこと使えるようにするためのVPCを接続するためのロードバランサ
EC2

https://aws.amazon.com/jp/ec2/

  • 台数やスペックを柔軟に変更可能な仮想サーバ
  • 必要な時に、必要な台数を時間課金で利用可能
RDS
  • RDBMSのマネージドサービス
  • 今回はその中でもAmazon Auroraを利用します
AWS CloudShell

https://aws.amazon.com/jp/cloudshell/

  • AWSコンソールから使えるシェル
  • Bash、PowerShell、Z shellが利用可能
  • aws cliはデフォルトで利用可能
  • コンソールでログインしたユーザと同じ権限を引き継ぐ
    • IAMユーザやプロファイルの管理が不要
    • 今回はaws cliを簡単に利用するために使います
  • リソースの後片付けに、CloudShellからaws cliを使って一気に消すようにします

AWS以外の説明

  • WordPress
    • 簡単にサイトを構築できるオープンソースのCMS
    • 一番シンプルな使い方だと、ブログとか作れます

構成の説明

image block

参照:

  • リソースは全て作成するVPC内に配置
    • アベイラビリティゾーンは1aと1cを利用
    • アベイラビリティゾーンごとにパブリックサブネットとプライベートサブネットを作成
      1cのプライベートサブネットは今回は作成しますが利用しません
      • 元々の演習だと1cのプライベートサブネットにもRDSを配置して、DBをマルチAZ構成にして冗長化するという演習がありました
      • が、残念ながら今回は時間の関係上カットです…
  • ユーザはインターネットゲートウェイ経由でELBにアクセスし、パブリックサブネットに配置されたEC2のどちらかにアクセスする
    • ユーザはプライベートサブネットに配置されたRDSに直接アクセスすることはできない
    • ELBがEC2の状態を監視しているので、仮に片方のEC2が落ちていても、ユーザのアクセスは正常なEC2に振り分けられる
  • EC2はアクセスがあると、プライベートサブネットにあるRDSから情報を取得しユーザに返す
ポイント
  • 適切なネットワーク設定
    • ユーザはパブリックサブネットに配置されたEC2にしかアクセスできない
    • プライベートサブネットに配置されたRDSへ、直接外部からアクセスすることはできない
  • 冗長化
    • EC2は2台あり、ELBを通すことで冗長化している