3層アーキテクチャのスケーラブルウェブサイトを構築してみた

3層アーキテクチャのスケーラブルウェブサイトを構築してみた

2025.09.17

はじめに

こんにちは、山本翔大です。
この記事では、AWSを使用してスケーラブルな3層アーキテクチャのウェブサイトを構築したのでその手順を画像とともに説明します。具体的な構造は以下のとおりです。

Untitled (1)

やってみた

1.VPCの作成

まずはVPCを作成します。
今回は可用性を高めるため、パブリックサブネットとプライベートサブネットを複数のAZに1つずつ配置します。

VPC1

【現在の構成】
VPCview

2.EC2インスタンスの作成

次にEC2インスタンスをパブリックサブネット1a上に作成します。
AMIとインスタンスタイプはブログ執筆時においてデフォルトのものを使用しました。

  • Amazon Linux 2023 AMI 2023.8.20250908.0 x86_64 HVM kernel-6.1
  • t3.micro
    ec2. 1

EC2のセキュリティグループは以下のように設定しています。

インバウンドルール

  • SSH TCP 22  マイIP
  • HTTP TCP 80  0.0.0.0/0

アウトバウンドルール

  • Default

ユーザーデータにはWordPressのインストールをするスクリプトを記述しました。

			
			#!/bin/bash

dnf update -y
dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel mariadb105

wget http://ja.wordpress.org/latest-ja.tar.gz -P /tmp/
tar zxvf /tmp/latest-ja.tar.gz -C /tmp
cp -r /tmp/wordpress/* /var/www/html/
chown apache:apache -R /var/www/html

systemctl enable httpd.service
systemctl start httpd.service

		

1つ目のEC2インスタンスの作成完了後、カスタムAMIを作成します。このWordPressがインストール済みカスタムAMIを使って2つ目のEC2インスタンスをパブリックサブネット1c上に作成します。
AMI 1-2

【現在の構成】
EC2view

3.ロードバランサーの作成

負荷を分散するためのロードバランサーを設定します。
先ほど作った2つのインスタンスをターゲットグループに登録します。
ELB 2025-09-11 13.39.50
ターゲットグループは

  • プロトコル : HTTP  ポート: 80
  • プロトコルバージョン : HTTP1

のDefault設定で進めてください。

ターゲットグループが作成できたらロードバランサーの作成からApplication Load Balancerを選択し、2つのパブリックサブネットを設定します。
ALBのセキュリティグループは以下のように設定しています。

インバウンドルール

  • HTTP TCP 80 Anywhere-IPv4 0.0.0.0/0

アウトバウンドルール

  • Default

ELB 2025-09-11 13.41.25

【現在の構成】
ELBview

4.RDSの作成

次にRDSを作成します。エンジンはMySQL、バージョンはデフォルトのものを選択しました。
サブネットはプライベートサブネット1aに設定します。
RDS 2025-09-11 14.01.33

RDSのセキュリティグループは以下のように設定しています。

インバウンドルール

  • MYSQL/Aurora TCP 3306  EC2 でアタッチしているSG名をソースとして選択

アウトバウンドルール

  • Default

なお、データベースの設定時のマスターユーザー名とマスターパスワードはこの後のWordPressの設定で使用するため忘れないよう保存してください。

5.RDSのマルチAZ化

次に作成したRDSをマルチAZ化します。

先ほど作成したデータベースを選択し変更をクリックします。可用性と耐久性から「スタンバイインスタンスを作成する (本稼働環境向けに推奨)」を選択するとマルチAZ配置にすることができます。

設定が完了したら続行をクリックし、変更のスケジュールを「すぐに適用」に設定してください。
スクリーンショット 2025-09-11 16.18.32

【現在の構成】
Untitled (1)

6.WordPressの初期設定

最後にWordPressの初期設定を行います。
ロードバランサーに表示されているDNS名にアクセスするとWordPressを開くことができます。
データベース名、ユーザー名、パスワードを入力する欄があるのでデータベースを作成した際に設定したものを入力してください。
スクリーンショット 2025-09-16 11.43.31

システム全体の検証

以上で構築は終了です。
設定が正常にできているかテストを行います。

EC2インスタンスの片方を停止させます。この状態でロードバランサーのDNS名にアクセスすると、自動的に稼働中のもう片方のインスタンスにルーティングされます。
停止するインスタンスを入れ替えても同様の動きになることが確認できればロードバランサーの設定ができています。

次にデータベースのテストをします。
作成したデータベースを選択し、アクションから再起動を選択します。「フェイルオーバーで再起動しますか?」というチェックボックスが出てくるのでチェックして確認を押すとデータベースの再起動が始まります。再起動が完了して10~20分ほど経過するとリージョンとAZがap-northeast-1aからap-northeast-1cに変更されます。
スクリーンショット 2025-09-16 13.37.39

参考資料

構成参考
・AWS Hands-On for Beginners スケーラブルウェブサイト構築編
ユーザーデータ参考
・スケーラブルWebサイト構築ハンズオン

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。

この記事をシェアする

FacebookHatena blogX

関連記事