見出し画像

【AWS】Webアプリケーションを作りたいと思った場合のシステム構成図

閲覧ありがとうございます。

miyaです。

今回はAWSにてWebアプリケーションを構築したい場合、どういった構成がとれるのか、といった議題で執筆しようと思います。

VPCを構築

まずVPCを構築しましょう。VPCとは、「Virtual Private Cloud」の略でAWS上に仮想ネットワークを構築することが可能です。

AWS上にVPCを東京リージョンで構築したとすると下記図になるかと思います

画像1

サブネットを構築

次にサブネットを構築しましょう。サブネットにはインターネットとのアクセスを可能とする「パブリックサブネット」とVPC内で通信を行いインターネットとのアクセスを許可しない「プライベートサブネット」と大きく二つに分かれます。

パブリックサブネットとプライベートサブネットの違いは「インターネットゲートウェイ(IGW)」がサブネットのルートテーブルに設定しているかどうかと覚えているとよいかと思います。

では上記の図にパブリックサブネットとプライベートサブネットを構築してみます。

画像2

ここでAvaliability Zone(アベイラビリティゾーン)というのが図に記載されていますが、アベイラビリティゾーンとはデータセンターと思ってください。データセンターを跨ぐことで、例えば災害などでデータセンターが停電などになった場合、サーバーが停止あるいは故障してしまう可能性があるのを防ぐことができます。図のような構成を「マルチAZ」構成と呼びます。

基本的にAWSでサーバー構築する場合はマルチAZ構成で構築することをおすすめします。

EC2の構築

ここまで??が飛んでいるかも知れませんが、ここからが本題みたいなところです。「Webサーバー」の登場です。

WebサーバーにはEC2やECSなどコンピューティングサービスを選択するとよいでしょう。また、サーバーレスアプリケーションとしてLambdaを選択するのもよいかと思います。

今回はEC2で開発するとします。

筆者はWindows系で開発することが多いので、EC2のWindows Serverを選択し、EC2構築後は日本語設定やIISを構築した後、.NETフレームワークのインストールなどを行い、C#でのアプリケーションを構築したりします。

ではEC2の構築した後のシステム構成を下記図に記載します。

画像3

パブリックサブネットにEC2を構築しました。

ALB(アプリケーションロードバランサー)の構築

ロードバランサーの機能を持つ「ELB」を用いてそれぞれのサブネットに構築しているEC2に振り分けを行います。

インターネットから例えば「https://www.miya.com」とURLをたたくと、今後投稿予定ではありますが、ACM(AWS Certificate Manager)にてhttpsを実現し、www.miya.comはRoute53にてドメイン解決を行い、www.miya.comをALBのURLをドメイン登録しておくとALBからそれぞれのサブネットに構築しているEC2へ振り分けをしてくれます。

冗長構成としての役割ともなりますし、例えばABテストなどにも活用することが可能です。同一セッションであれば同じサーバーへルーティングする「スティッキーセッション」を用いることでアクセスしているサーバー依存のアプリケーションにも対応しています。

ではALBの構成も図に記載します。

画像4

RDSの構築

最後にデータベースの構築をしましょう。例えばショッピングサイトなどのECサイトを構築した場合、注文履歴などをデータベースに登録する必要があります。Web上で買い物した場合にDBに書き込みを行うためにRDSを用います。

AWSにはRDSのほかにも、「DynamoDB」や「Redshift」、「ElasticCache」などがあります。リレーショナルデータベースが必要な場合やSQLを利用したい場合はRDSを選択しましょう。

RDSにはOracleやPostgreSQLなど幅広いリレーショナルデータベース管理システムが対応しています。その中でもAWSでは「Amazon Aurora」を推奨しています。Auroraを利用することで性能が格段に高まるので、できる限りAuroraを利用することをおすすめします。

最終的なシステム構成図

インターネット経由で接続をした場合、下記構成になるかと思います。

画像5

上記の構成には、まだネットワークACLやセキュリティーグループなどのファイヤーウォールの設定やルートテーブルの設定、ACMやRoute53の話ができていないため、説明としては不十分ですが今後投稿していけばと思います。

ではまた。

この記事が気に入ったらサポートをしてみませんか?