【初心者向け】AWSでWEBアプリのインフラを構築する方法(EC2 + ELB + RDS + ACM + Route53)
ともはろ@Goal-Path代...
このプランでは、拡張性・耐久性・セキュリティに対応したサーバーから配信するWEBアプリのインフラを、AWSを使用して構築する方法を提供します。また、このプランを利用することで、初心者・独学でも、確実に短期間で、WEBアプリのインフラの構築を経験して、スキル・と知識として身につけることができます。
結論:初心者でもAWSでアプリのインフラ構築を確実にやり切るアクションプランです
このプランはこんな方におすすめ
- AWSでサーバーから配信するWEBアプリを構築するのに必要な一連のスキルを身につけたい方
- AWSの無料利用枠内で出来る、拡張性、耐久性、セキュリティ対策を身につけたい方
※このプランは、下記のプランによって作成したWEBアプリを公開している前提となっております。そのため、下記のプラン実施後に本プランを取り組むことを強く推奨します。
【初心者向け】WEBアプリを作成して公開する方法(Django + Nginx + MySQL + docker + AWS)
おすすめ人数
- 一人
このプランの概要
AWS内のサービス構成
AWSの無料枠内で、下記図のサービス構成でインフラを構築します。
WEBアプリ本体はEC2インスタンスによるサーバーで動作させます。WEBアプリのサーバーに対して、拡張性、堅牢性、セキュリティへ対策するために、以下のようにインフラを構築します。
- 拡張性:ロードバランシング機能をもつELBを設置、各サービスに複数のAZを配置
- 堅牢性:データベースサーバーとしてRDSを使用、各サービスに複数のAZを配置
- セキュリティ:IAMユーザーの使用、プライベートサブネット内にRDSを構築、セキュリティグループの設定、ACMによるSSL証明書の発行
WEBアプリのネットワーク構成
WEBアプリのネットワーク構成は、下記図のように各サービスに設定したポート間での通信で行います。
EC2インスタンスではDockerコンテナを起動してWEBアプリを実行します。Dockerコンテナは、WEBサーバー(Nginx)のwebコンテナ、アプリ本体を動かすappコンテナの構成となります。データベースサーバーとしてはRDSを使用してEC2と接続します。また、外部からのアクセスはELBで受けて、ELBはEC2のポート80と接続します。
このプランを購入するメリット
WEBアプリのインフラ構築スキルが身につく
このプランを実施することで、AWSを使用して、拡張性、堅牢性、セキュリティへの対策を施したWEBアプリのインフラを構築するスキルや知識を身につけることが出来ます。また、AWSによるインフラ構築の知識やスキルを身につけることで、以下のようなメリットがあります。
- サービスにおける利用ユーザーの拡大に対応できる
- エンジニアとしてのスキルの幅を広げられる
- AWSエンジニアとしての求人案件を獲得できる
初心者でも最後まで確実にやり切れる
AWSはWEBアプリのインフラを構築する上で非常に便利なサービスである一方で、初心者にとっては難しいと感じる方も多いサービスです。理由としては、以下のようなことが挙げられます。
- サービスが多すぎてどれを使用したらいいか分からない
- 各サービスの設定方法や手順が分からない
- IT、インフラ、プログラミングの知識が必要
これに対して本プランは、以下のように計画と解説を提供することで、初心者でも確実にAWSでインフラを構築できるようにサポートをします。
- 拡張性、堅牢性、セキュリティへ対応する最小限のサービスを選抜したインフラ構築の方法を提供
- プランは手順を細分された一連のアクションで構成し、アクションを着実に実行するだけでインフラ構築が可能
- 知識がなくても出来るように、各アクションに説明や図を入れた解説を記載
短期間でスキルが身につく
AWS初心者の方の学習方法として、テキストを読む、解説動画を観る、問題集を解く、などの方法が挙げられます。しかしこれらの方法では、基礎的なWEBアプリのインフラを構築するだけでも、およそ50〜60時間程度の学習時間が必要となります。
AWS初心者におすすめな方法は実際に手を動かすことです。一方でこのプランでは、アクションを実行していく中で実際に手を動かしながして体験をしながら学習していくことで、短期間で一連のインフラ構築スキルを身につけるサポートをします。
具体的には、7時間程度でイチからWEBアプリを作成しインターネットに公開するまでのベースとなる部分をすべて経験することが可能です。期間の目安としては、おおよそ以下の通りです。
- 1日1時間の作業 ⇒ 7日間で完了
- 1日7時間の作業 ⇒ 1日で完了
プランの内容
身につくスキル
IAM
IAM(Identity and Access Management)とは、AWSのサービスで「認証」と「認可」の設定を行うことができるサービスです。「認証」「認可」を正しく設定することで、AWSの利用者や、AWSのサービスがアクセスできる範囲を制御することができます。AWSで最初に作成するユーザーはルートユーザーとなります。ルートユーザーは利用権限が大きすぎるため、第三者の悪用などのセキュリティ観点から日常使いは推奨できません。そのため、IAMによって日常使いするIAMユーザーを設定することでAWSアカウントのセキュリティを確保することが可能となります。
【参考】:【AWS IAMとは?】初心者にもわかりやすく解説
VPC・サブネット
VPC(Virtual Private Cloud)とは、AWSのクラウド環境を提供するサービスのことで、サブネットとはVPCを分割したネットワーク群でのことです。AWSのサービスはVPCのサブネット上に構築していきます。VPCとサブネットを適切に設定することで、アプリの利用増に対する拡張性や、障害発生に対する堅牢性のあるインフラを構築することが可能となります。
【参考】:【初心者向け】AWS VPCとは?7つの特徴と設定例を解説!
EC2
EC2(Elastic Compute Cloud)とは、仮想サーバー構築サービスです。EC2を利用することで、OSを乗せた仮想環境をクラウド上にすばやく作ることができます。また、OSを搭載しているため、EC2を使用することでWEBアプリケーションを起動することが可能となります。
【参考】AmazonのAWS EC2とは?はじめての人向けに解説
ELB
ELB(Elastic Load Balancing)とは、サーバー負荷(load)を低減させるために、外部からのリクエストを複数のサーバーに振り分け負荷分散するロードバランサーのサービスです。このロードバランサー機能によって、ユーザー数が増加してアクセスが増えた際に、サーバーを増やすことでアクセスの集中を他のサーバーに振り分けることが可能になるなど、WEBアプリのの拡張性に対応することが出来ます。
【参考】:【AWS入門】AWSのELBとは?ロードバランサーの種類、特徴、料金を紹介
RDS
RDS(Relational Database Service)はAWSが提供しているデータベースサービスの一つです。データベースサーバーとしてRDSを使用することで、データ通信の高速化、障害発生に対する耐久性の確保、容易なサーバー追加による拡張が可能となります。
【参考】:【初心者】AWS RDSとは?知っておくべき6つの利点と使い方
ACM
ACM(AWS Certificate Manager)とはSSL証明書発行サービスを指します。SSL証明書は、セキュリティ対策としてほぼ必須となるインターネット上でデータを暗号化して送受信するhttps通信に必要となります。ACMを使うことで、簡単にSSLに対応することが出来ます。またACMでは無料でSSL証明書を発行することも可能です。
参考AWSのACMとは?ACMを利用するメリット5つとポイントを解説
インフラ構築の流れ
【AWS】アカウントセキュリティ設定
ルートユーザーのセキュリティ強化設定のための2要素認証の設定と、IAMユーザーの作成をします。
【Docker X Nginx X Django】アプリケーション書き換え
AWSでの構成変更により、下記の変化点があります
- ELBでhttps通信を受けるため、NginxでのSSL認証とhttps通信での受信が不要となる
- データベースサーバーとしてRDSを使用するため、 Dockerでのdbサーバーが不要となる
これに対応して、アプリのコードを書き換え、最後にgithubで更新していきます。
【AWS】VPC・サブネット構築
VPCを作成し、プライベートサブネット、パブリックサブネットを作成、それぞれにAZ(アベイラビリティゾーン)、IPブロックを設定します。さらにVPCに対してインターネットゲートウェイを設定、サブネットのデータの流れを制御するルートテーブルを設定します。
【AWS】EC2インスタンス作成
アプリケーションを動作させるEC2インスタンスの作成と、アプリケーションをインターネットに公開するために必要となるEC2周りの設定を行います。
【AWS】RDSインスタンス作成
データベースサーバーとなるRDSインスタンスと、そのベースの環境となるサブネットグループ、セキュリティグループを作成し、EC2との接続設定を行います。
【AWS】ACMでのSSL認証取得とELB設定
ACMでのSSL認証を取得、お名前.comでの設定、Route53での設定を実施していきます。そしてELBにおいてACMとRoute53に紐付いたロードバランサーを作成して、外部リクエストの受け入れ口とします。さらに、EC2とELBの間にターゲットグループを設定することで、アプリケーションとの通信を可能にします。
【AWS】アプリケーション公開
EC2インスタンスに、githubからソースコードをデプロイして、アプリケーションをインターネットに公開します。
注意点
※パソコンがあることが必須です(OSは問いません)
※このプランは、下記のプランによって作成したWEBアプリを公開している前提となっております。そのため、下記のプラン実施後に本プランを取り組むことを強く推奨します。
【初心者向け】WEBアプリを作成して公開する方法(Django + Nginx + MySQL + docker + AWS)
※AWSの設定について、一つでも間違っていると思ったように動作しない可能性があるので、その場合は再チェック、場合によってはアクションのやり直しをしてみてください
※ソースコードの書き換えについて、一文字、スペースなどでも間違っているとプログラミングが動作しない可能があるので、その場合は再チェックしてみてください
さいごに
当商品は現在特別価格の2980円で販売しています。今が一番お買得です。
今後の値上げしていく予定なので、検討されてる方は今のうちにご購入ください。