AWSでWeb3層アーキテクチャを構築するポイントを分かりやすく解説!

現在では、ほとんどの企業がWebサイト(Webシステム)を運営・運用している。オンプレミスでWebシステムを運用している企業は、オンプレミスからパブリッククラウドへの移行するケースが増えている。
ITエンジニアにとって、Web3層アーキテクチャやパブリッククラウドの知識は、必要不可欠なものだ。
まずは、Web3層アーキテクチャの基礎について説明する。その後、Amazon Web Services(以降、AWSと略す)にWeb3層アーキテクチャを構築する際の設計ポイントを紹介していこう。

オンプレミス
企業が自社で管理するインフラ(サーバやネットワーク機器など)を自社またはデータセンターに設置して運用することを指す。

スモールスタート
企業が新しい事業やプロジェクトを開始する際に、最小限の規模やコストでスタートする手法。

パブリッククラウド
AmazonのAmazon Web ServicesやMicrosoftのMicrosoft Azure、GoogleのGoogle Cloud Platformのクラウドサービスのことを示す。

用語説明




1.Web3層アーキテクチャとは

Web3層アーキテクチャとは、Webサーバ、アプリケーションサーバ、データベースサーバで構成されたことを言う。
先に述べたサーバは、物理サーバや仮想化ソフトウェアのVMware上に仮想マシンを用意して構築する。

1-1.各サーバの役割

Webサーバ、アプリケーションサーバ、データベースサーバの役割を示す。

Webサーバ
ユーザーがWebページへアクセスしたときに表示される静的コンテンツ(テキスト、画像、HTMLファイルなど)を提供する。

アプリケーションサーバ(APサーバ)
ユーザーがWebページ上で操作を行ったとき、Webアプリケーションが実行され、ユーザーのリクエストに応じてデータベースとの連携が行われる。

データベースサーバ(DBサーバ)
アプリケーションサーバからの要求に応じて、データの参照や追加・修正・削除を行う。

1-2.ミドルウェア

Webサーバには、ApacheやNginxなどのWebサーバソフトが使われている。Nginxは、企業でよく利用されており軽量で高いスケーラビリティを誇るHTTPサーバである。主にテキストや画像といった静的コンテンツの配信に適している。

物理サーバ
物理的なハードウェアとして存在するサーバを指す。

仮想化ソフトウェア
仮想マシンを実行する仮想化ソフトウェア。代表的なソフトウェアは、VMwareなど。仮想化ソフトウェアの上で仮想マシンが動作している環境全体を仮想基盤と呼ぶ。

仮想マシン
仮想マシンは、仮想化ソフトウェアの上で動作しているもの。仮想マシンの中でWindowsやLinuxなどのOSが動作している。

Webアプリケーション
WebサーバからAPサーバ(Webアプリケーション)の要求を受け取る。APサーバ(Webアプリケーション)は、必要に応じてDBサーバに対してクエリを実行し、処理した上でWebサーバに結果を返すアプリケーションである。

用語説明


2.AWSのWeb3層アーキテクチャを設計するポイント

Web3層アーキテクチャをAWSに構築するケースとして次のことが考えられる。本記事では、スモールスタートでAWSに構築する場合に焦点を当てて説明する。
・オンプレミスからAWSへ移行
・スモールスタートでAWSに構築(小規模な開発環境を想定)

2-1.スモールスタートでAWSに設計するポイント

スモールスタートでAWSに構築する場合、Webサーバは「Amazon EC2」、データベースサーバは「Amazon RDS」で構築する。アプリケーションサーバは、Webサーバと同居させることでコストを抑えられる。
スモールスタートでAWSに構築したイメージを下図に示す。

スモールスタートのイメージ図

リージョン

・リージョンは、特別な理由がない限り比較的近い場所(例えば、東京もしくは大阪)を選択することでレイテンシを低減できる

Amazon Virtual Private Cloud (Amazon VPC)

・Amazon VPCのCIDRブロックは、オンプレミスのネットワークと重複しないように設定
・サブネットは、パブリックサブネットとプラベートサブネットに分けて作成
・パブリックサブネットは、将来トラフィックの増加に対応できるように複数のAvailability Zone(以降、AZと略す)にまたがって作成
・Amazon RDSのサブネットグループで、最低2つのAZにまたがっている必要があるため、プライベートサブネットも2つ以上必要
・ネットワークACLは、要件がなければ設定は不要。例えば、インターネットからのアクセス(DDoS攻撃など)で特定のIPアドレスを拒否する必要がある場合に設定する

Amazon Elastic Compute Cloud(Amazon EC2)

・インスタンスタイプは、小規模な開発環境であることとWebサーバで利用するため「汎用」を選択
・セキュリティグループについて、インバウンドは必要最低限のもの(例えば、HTTP/HTTPS)を許可する。アウトバウンドは、全てのトラフィックを許可し、必要に応じて制限する
・パブリックIPアドレスを固定するため、Amazon EC2にElastic IPアドレスをアタッチ

Amazon Relational Database Service(Amazon RDS)

・データベースエンジンは、リレーショナルデータベースの「MySQL」を選択
・インスタンスタイプは、小規模な開発環境を想定しているため「汎用」を選択
・セキュリティグループについて、インバウンドはWebサーバからDBサーバに対しての通信のみを許可する。アウトバウンドは、DBサーバからWebサーバに発信する通信に対しては全てのトラフィックを許可し、必要に応じて制限する
・マルチAZ構成による可用性の向上は、コストが高いため実施しないこととする。ただし、RDSの自動バックアップやDBスナップショットを利用してバックアップを行う。マルチAZ構成については、「5.AWSのWeb3層アーキテクチャをさらに成長させるには」を参照。

レイテンシ
データが送信元から目的地まで伝送されるまでの遅延時間を示し、レイテンシが低いほどデータが速く目的地に到達する。

パブリック/プライベートサブネット
パブリックサブネットは、インターネットからアクセスできるサブネット。
一方、プライベートサブネットはインターネットから直接アクセスできないサブネット。

ネットワークACL
サブネットのインバウンドおよびアウトバウンドのトラフィックに対して、許可ルールと拒否ルールを設定できるネットワークセキュリティ機能。ステートレスであるため、戻りの通信に対しても適切なルールを設定する必要がある。設定できるのは、IPアドレス、ポート番号、そしてプロトコル(TCP、UDP、ICMPなど)。

セキュリティグループ
インスタンスのインバウンドおよびアウトバウンドのトラフィックに対して、許可ルールのみを設定できるネットワークセキュリティ機能。ステートフルであるため、インバウンドのトラフィックに対するルールを設定すると、それに対応するアウトバウンドトラフィックは自動的に許可される。
設定できるのは、IPアドレス、セキュリティグループID、そしてポート、プロトコル(TCP、UDP、ICMPなど)。

用語説明

5.AWSのWeb3層アーキテクチャをさらに成長させるには

システムをスモールスタートから成長させていくには、主にセキュリティの向上やデータベースサーバの可用性向上、Webサーバのスケーラビリティ向上になる。クラウド環境に最適化した(クラウドネイティブ化)したイメージを下図に示す。

クラウドネイティブのイメージ図

Elastic Load Balancing(ELB)

・Webサーバの前段にElastic Load Balancing(以降、ELBと略す)を導入することで、インターネットから直接Webサーバにアクセスができなくなるため、セキュリティの向上になる
・Amazon Certificate Manager(以降、ACMと略す)で発行したSSL証明書をELBに導入することで、インターネットからELB間はHTTPS通信となる
・ELBでSSLを終端させるため、ELBとWebサーバ間の通信はHTTP通信

Amazon Route53

・Route53やお名前.comなどで独自ドメインを取得し、Route53にDNSレコードを登録する。これにより、インターネットからELBを介してWebサーバにドメイン名でアクセスができるようになる

Amazon Certificate Manager(ACM)

・Route53やお名前.comなどで取得した独自ドメインを使ってSSL証明書を発行する

Amazon S3

・静的コンテンツをS3に保存することで、データの容量を気にせずにWeb配信することができる
・Webサーバ(Webアプリケーション)からS3にアクセスする際に、インターネットゲートウェイ経由でS3へアクセスできるようにする
・バケットポリシーを使用して、Webサーバからのみのアクセスを許可できるようにする

Amazon Auto Scaling

・Webサーバのトラフィック急増や負荷のピーク時に応じてスケールアウト(水平スケーリング)することができる
・スケーリングポリシーで、スケーリングするトリガーを設定。例えば、CPU使用率が90%を超えた場合にスケールアウトさせて、一方CPU使用率が30%を下回った場合はスケールインする

Amazon RDS マルチAZ

・RDSインスタンスをマルチAZ構成にすることで可用性が向上し、ミッションクリティカルなシステムにおいてダウンタイムを最小限に抑えることができる
・マルチAZ構成にすることで、RDSインスタンス(プライマリ)で障害が発生した場合、異なるAZに配置されたRDSインスタンス(スタンバイ)に自動でフェイルオーバーする

SSL証明書
ブラウザとウェブサーバ間の通信を暗号化しデータの盗聴や改ざんを防ぐためのデジタル証明書。

インターネットゲートウェイ(IGW)
AWS上でVPCにインターネットゲートウェイをアタッチすると、VPC内(パブリックサブネット)のリソースからインターネットへアクセスができる。

バケットポリシー
S3バケットとその中のオブジェクト(ファイルやフォルダーなど)へのアクセス許可を制御するためのポリシー。

用語説明

6.まとめ

オンプレミスでのWeb3層アーキテクチャの基本的な構成や各サーバの役割を説明しました。さらに、AWS上でスモールスタートで構築する場合の各サービスの構成や要点についても述べてきました。
今後、システムの成長に伴い柔軟でスケーラブルな要素が求められるため、クラウド環境に最適化する(クラウドネイティブ化)ために必要なAWSサービスを抜粋して紹介しているので参考になれば幸いである。

いいなと思ったら応援しよう!