はじめに
プログラミング未経験の筆者がRailsアプリをAWSにあげるのに、必要となった最低限の知識をざっくりとまとめました。
まとめた内容は以下の通りです。
・AWS
・VPC
・EC2
・RDS
AWSのネットワークサービス
まずはじめにAWSのネットワークについてです。
AWSを使うときにはじめに触れるのがリージョンと**アベイラビリティーゾーン(AZ)**です。
リージョン
リージョンはAWSがサービスを提供している拠点(国と地域)のことを指しています。
遠いリージョンをを使うとネットワーク遅延が発生してしまう可能性があるので、基本的には東京リージョンを使いましょう。
アベイラビリティーゾーン(AZ)
**アベイラビリティーゾーン(AZ)**はデータセンター(サーバー機などのIT機器を設置・収容する場所を提供し、安定的に運用できるようさまざまなサービスを提供する施設)とほぼ一緒です。
AZはリージョンごとに用意されていて、東京リージョンでは4つのAZが用意されています。
AWSでは複数のAZを利用すること(マルチAZ構成)が推奨されています。
マルチAZ構成であれば、もし一つのAZに障害が起きても、別のAZを利用することでネットワーク障害を回避できるからです。
続いてAWSのサービスについて説明していきます。
VPC(Virtual Private Cloud)
参照:VPC とサブネット
VPCはネットワークを作成するサービスです。
上図の通りAWSのネットワークの中にVPCのネットワークを作成します。
そしてVPCはサブネットを作成することで分割できます。
ざっくり言うと
大きな箱(AWS)の中にそこそこ大きい箱(VPC)があって、その中に小さな箱(サブネット)があるイメージですね。
そして、この小さな箱(サブネット)の中にこれから説明するEC2やRDSが入っていきます。
EC2(Elastic Compute Cloud)
参照:インスタンスの開始方法
EC2は仮想サーバ(インスタンス)、**ファイアウォール(セキュリティグループ)**などを利用できるサービスです。
知らない単語が出てきましたね...
ざっくり説明していきます。
インスタンス
インスタンスは従来のオンプレミス環境上のサーバに相当します。
インスタンスはOS、CPU、メモリ等の情報を持っています。
つまり「インスタンスを作成する」というのは
**「OS、CPU、メモリ等の条件を選択し、自分が求めるサーバーを作成する」**ことです。
###セキュリティグループ
セキュリティグループはAWS標準のファイアウォール機能です。
EC2インスタンスへのアクセスを許可したり、トラフィックを制御することができます。
デフォルトでは全ての通信が遮断してあります。(重要)
そのため特定の通信を許可する必要があります。
アクセスの許可は通信の方向で分けられ、インバウンドとアウトバウンドに分けられています。
インバウンド: 外部からインスタンスへの通信を許可(外側→インスタンス)
アウトバウンド: インスタンスから外部への通信許可(インスタンス→外側)
初心者がAWSを扱う上で一番エラーが発生しやすい部分がこのセキュリティグループだと思います。
複数のサービスを紐づけるためにセキュリティグループは必須なのでよく理解しておきましょう。
RDS(Relational Datebase Service)
RDSはクラウド上でリレーショナルデータベース(RDBMS)を利用できるサービスです。
AWS上でRDBMSを利用する方法は2種類あります。(重要)
1. EC2インスタンスにRDBMSをインストールする方法
2. RDSを利用する方法
RDSではデータベース用のインスタンス(仮想サーバー)が作成され、その上にOSやデータベースエンジンが構築されます。そのため、利用者はサーバやミドルウェアのメンテナンスが不要となります。
基本的にはRDSを利用した方が構築・運用のコスト削減できるため、RDBMSを運用する場合はRDSを選択されることが多いです。
まとめ
かなりざっくりですがAWSに関する知識をまとめました。
以下の記事を参考にしながら実際にAWSを触れば、詳細についての理解も深まると思います。
参照
・世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで
・【画像付きで丁寧に解説】AWS(EC2)にRailsアプリをイチから上げる方法【その1〜ネットワーク,RDS環境設定編〜】