AWS TRAINING COURSE
---LESSON 15---
Web 3階層のシステムを
AWSのサービスを
組み合わせて作ってみよう
これまでの本連載ではAWSで提供されているさまざまなサービスについて紹介してきました。AWSではこれらのサービスをブロックのように組み合わせて実際のシステムを作り上げていきます。今回はWebアプリケーションの典型的な構成であるWeb 3階層システムの構築について解説します。
Web 3階層システムの構成で
考慮すべきポイント
Web 3階層システムとはWebアプリケーションの典型的な構成です。ブラウザーから接続することで、ブラウザーに対してHTMLコンテンツを返す「プレゼンテーション層」とユーザーからのリクエストを受け付けてアプリケーションが動作する「アプリケーション層」、そしてユーザー情報やアプリケーションの実行結果などを保管する「データ層」の三つで構成されています。
システムによっては、プレゼンテーション層とアプリケーション層が一体となっているものや、アプリケーションが複数に分散したより複雑な構成になっているものありますが、基本的な考え方はWeb 3階層システムと同じです。
ではWeb 3階層システムをオンプレミスで実現する際はどうなるのでしょうか。ユーザーからの注文を受け付けるシステムを例にして説明します。
まずユーザーが接続するWebサイトを提供するWebサーバーが必要です。そしてWebサーバー上のフォームに入力された注文を処理するためのアプリケーションサーバーが必要となります。その注文情報や商品のマスター情報が格納されるデータベースサーバーも必要です。
では3台のサーバーを並べるだけでWeb 3階層システムは完成するのでしょうか。実際には、万が一のサーバー障害に備えるためのバックアップサーバーや、より多くの注文があったときに対応できるようにロードバランサーの設置、データベースのように機密情報が含まれているサーバーは、インターネットから直接アクセスできないようにファイアウォールの設置などが必要となってきます。
このようにWeb 3階層システムをオンプレミスで実現すると、より複雑で大規模なシステムとなり、コストも大きくなってしまいます。
AWSのマネージドサービスを使った
Web 3階層システム
それではWeb 3階層システムをAWSクラウドで実現する方法を見ていきましょう。まずユーザーが接続するWebサーバーとして「Amazon EC2」を使用します。可用性を高めることを考慮するのであれば、2台以上のAmazon EC2 インスタンスを設置することを検討します。複数のEC2インスタンスにユーザーからのリクエストを分散するための仕組みとして、ロードバランサーの機能を持つ「Elastic Load Balancing(ELB)」も設置します。
次にアプリケーションサーバーの機能を持つ「Amazon EC2」を用意します。こちらも可用性を高めることを考慮して、2台以上のアプリケーションサーバーを用意します。Webサーバーと同様に、アプリケーションサーバーの手前にELBを設置することで、アプリケーションサーバーに対しても負荷分散の機能を提供できます。
注文情報などを格納するためのデータベースとして、AWSのマネージドサービスである「Amazon Relational Database Service(Amazon RDS)」を利用します。これによってデータベースの設定やバックアップ、データベースエンジンへのパッチ適用など、データベースに対するメンテナンス作業を軽減できます。さらに待機系となるセカンダリデータベースの構築も簡単に行えます。
AWSではこれら複数のサーバーを、複数のアベイラビリティゾーンに分散して配置することができます。これによって万が一いずれかのアベイラビリティゾーンで障害が発生し、システムが利用できなくなってしまっても、もう別のアベイラビリティゾーンに設置されたインスタンスを使用して継続して処理を行うことができます。
オンプレミスで同様のシステム構成を実現するには、2カ所のデータセンターを準備して、両方のデータセンター間の通信で高速なネットワークを構成し、データセンターをまたいだ高可用構成を設計する必要があります。
実際のサイト運営ではユーザー認証や運用管理などの機能も必要になりますが、これらの機能もAWSのマネージドサービスを使用することで、簡単に構築することができます。