こんにちは、jjj0331です。
今回はAWSでWordPressを構築しました。その過程で学んだAWSやネットワークについての知識をまとめたいと思います。
AWSについて
AWSとは
AWS(Amazon Web Services)はクラウドサービスの一つです。クラウドサービスとは、サーバーやネットワークなどのインフラ環境を提供するサービスのことを指します。
※クラウドサービスの対義語として、「オンプレミス」があります。これは物理的なサーバーやネットワークを自前で構築することを指します。
※AWS以外のクラウドサービスとして、「Microsoft Azure」や「Google Cloud」なども存在します。
AWSのサービス
VPC
VPC(Virtual Private Cloud)は、ネットワークを仮想的に構築できるサービスです。これを使用して、あとで記載するEC2やRDSを作成したネットワーク内に配置することができます。また、VPC内にサブネットを作成することができ、例えば一つのVPC内に2つのサブネットを作成し、インターネットアクセスが可能なものと不可能なものに分けることができます。よくある例として、RDSはインターネットアクセスを不可にするため、インターネット不可のサブネットに関連付けます。
VPCの中には「Elastic IP」というサービスもあり、IPアドレスを取得することで、EC2を再起動した際にIPアドレスが変化してもElastic IPが変わらないため、ドメイン設定などを変更する必要がありません。
EC2
EC2(Elastic Compute Cloud)は、AWSで作成できる仮想的なサーバーのことを指します。サーバーのOSやスペックなどを決めることができるため、自分に合ったサーバーを作成することができ、料金も使用した分だけ支払う仕組みになっています。
EC2を起動すると自動的にIPアドレスが振られ、再起動すると別のIPアドレスが振り直されます。OSやスペックなどの初期設定後は、サーバーには何もソフトがインストールされていないため、サーバーにSSH接続で接続し、コマンドによるソフトウェアのインストール作業が必要となります。
EC2にはセキュリティグループという設定があり、どのサーバーや通信をサーバー内に許可するかなどの詳細を決定できます。通信する際にサーバー側へアクセスする(インバウンド)だけでなく、サーバーから通信する(アウトバウンド)際にどのポート番号を許可するかなどの設定も行うことができます。
RDB
RDSは、AWSが提供するリレーショナルデータベースの管理サービスです。MySQL、PostgreSQL、MariaDB、Oracle、SQL Serverなどのデータベースエンジンを簡単に設定、運用、スケールできます。これにより、データベースのバックアップ、リカバリ、パッチ適用、スケーリングなどの管理作業を自動化できます。
各サービスのまとめ
AWSでRailsを用いたWebアプリを作成したと仮定して、
各AWSのサービスの関係性をまとめます。
前提条件:
EC2を作成して、Elastic IPより固定のIPアドレスをEC2に紐づけることでサーバーが再起動されてもドメイン名などに影響を及ぼさない。
また、EC2にWebサーバー(Apache)、アプリケーションサーバー(Rails)をインストールしておく。
VPCはパブリックサブネット、プライベートサブネットを用意
パブリックサブネット: インターネットゲートウェイを通じてインターネットにアクセスできるサブネット。このサブネットにEC2インスタンスを配置します。
プライベートサブネット: インターネットから直接アクセスできないサブネット。このサブネットにRDSインスタンスを配置します。
この状態で、
ユーザーがブラウザにURLを打ち込みリクエストを投げると
パブリックサブネットに配置されたEC2インスタンス上のApacheがリスエストを受け取り
WebサーバーはリクエストをRailsアプリケーションに転送します。
Railsアプリケーションがリクエストを受け取り、必要なビジネスロジックを実行します。
データベースアクセスが必要な場合、Railsアプリケーションはプライベートサブネット内のRDSインスタンスに接続します。
この際のRialsとRDSの通信は
VPC内での通信のためセキュリティー面でも安全な通信となります。
RailsアプリケーションがRDSからのクエリの結果をもとにレスポンスをユーザーに返します。