【初心者向け】AWSは怖くない!これだけ読めばAWSのアーキテクチャ図がわかるようになる〜前編〜
どうも、プログラミングスクール受講中・実務未経験勢です。
AWSのアーキテクチャ図を見ても何も理解できなかった筆者が、最近勉強してわかったことをまとめます。
インフラ用語の説明もいれつつ、AWSの代表的なサービスを説明するので、同じような境遇の方の役に立てると嬉しいです。
※普段の使用のフレームワークがRuby on Railsなので、もしかしたらRubyやRails特有の言葉を使っているかもしれません。
ーーーーーーーーーーーーーーーーーーーー
後編はこちらからどうぞ。
【初心者向け】AWSは怖くない!これだけ読めばAWSのアーキテクチャ図がわかるようになる〜後編〜
ーーーーーーーーーーーーーーーーーーーー
読んだら幸せになる人
- Webアプリのコードを書いてはいるが、インフラ周りがわからない人
- AWSのアーキテクチャ図を見ても何がなんだかわからない人
▼アーキテクチャ図はこういうやつ
引用元「AWS のアーキテクチャ図を描きたい ! でもどうすれば良いの ?」[1]
サービス名が英語で略されてるから、初見だとなんのこっちゃわからないのでは。このシリーズ記事を読むと、上の図がわかるようになります。あと、AWSはすごいぞ。怖くないよ。
先輩エンジニアの方々は誤りや誤解を招く表現があったら、ご指摘いただけると嬉しいです。また、この説明も必要では?といったご提案もいただけると喜びます。
Webアプリを動かすためにはサーバーが必要
さて、Webアプリが完成したとします。しかし、それを動かすためにはサーバーを用意する必要があります。
なぜサーバーが必要なのか?何のサーバーが必要なのか?どのように調達・設定・管理したらいいのか?このような導入の手間を限りなく減らし、簡単に必要なサーバーを使えるようにしたのがAWSです。
インフラ用語を理解しながら、アーキテクチャ図を読めるようになりましょう!
基本的にWebアプリは3層からなる
伝統的にWebアプリを3層に分離して説明する3層アーキテクチャ
という概念(※)があり、各層にその働きに特化したサーバーがあるのが理想的。ちなみに他の概念も存在します。[2]
-
プレゼンテーション層には、Webサーバー
- 固定のHTMLやCSS、JavaScriptを返す働きをする。
- もしプログラムによる処理が必要だったら、APサーバーに「○○をやってください!」と依頼する。
-
アプリケーション層には、AP(アプリケーション)サーバー
- 依頼を受けつけたらプログラムで、HTMLやJSONを生成してWebサーバーに返す働きをする。
- データの新規作成や取得が必要だったらDBサーバーへのアクセスも行う。
-
データ層には、DB(データベース)サーバー
- データを保管する働きをする。
- データを保管する働きをする。
念のためにサーバーを増やそう
上記の図にはサーバーが3種のサーバーが1台ずつ計3台あります。
しかし、1台のサーバーをWebサーバー兼APサーバーとして使ったり、APサーバー兼DBサーバーとして使えないのでしょうか?
技術的には可能なのですが、下記の理由からそれぞれの働きに特化したサーバーに分けて使った方がいいようです。
- なぜAPサーバーをWebサーバーとして利用しないのか[3]
- DBサーバーは「高速なデータの処理」などのデータ管理に特化した機能や性能がある
- 後からサーバーの台数を増やしたり減らしたりするのが簡単というメリットがある
- その他のメリットもあります(割愛)
さらに、サーバーの台数を増やすと、災害時にメインのサーバーが壊れても、予備のサーバーでWebアプリを運用できるというメリットもあります。
3層アーキテクチャにMVCモデルを配置するとどうなる?
Webアプリを開発する中で、何度行き来したかわからないModelファイル・View(HTML・CSSファイル)・Controllerファイル。
3層アーキテクチャ
にMVCモデル
を配置するとこんなかんじ。[4]
ちなみに、開発環境ではAPサーバーがWebサーバーも兼ねてくれます。しかし、本番環境では大量のアクセスが発生し、APサーバーだけではリクエストを処理しきれないため、Webサーバーが必要となります。
Webアプリをリリースするにはサーバーを購入する必要がある? いいえ、そこでAWS。
Webアプリをリリースするためには、Webサーバー・APサーバー・DBサーバーが必要です。
よし、サーバー買っちゃいますか?
買うとなると、サーバーの比較・検討といった導入の手間、購入費用、サーバーの設定。もしサーバーが災害や事故で故障してしまったら?などと、いろいろと考えるポイントは枚挙にいとまがありません。
しかし、AWSを使うと、インターネットを介してAmazonが提供するサーバーを使わせてくれるので、導入の手間が減ります!
これがAWS(の2023年7月2日時点で241種あるうちのサービスの一部)になります。サービスにより有料・無料とありますが、基本的に従量課金制です。
サーバーの代わりにAWSのサービスを使うと?
AWSのサービスを使うといままでの図がこうなります。
Amazon EC2
は、AppサーバーとWebサーバーとしての働きをします。仮想サーバー
(インスタンス
)を提供し、Webアプリのコンピューティングをクラウド上で行うことが可能になるサービスです。
とすると、縦に並んだEC2は図の上ではまとめてしまいましょうか。
Amazon RDS
は、DBサーバーとしての働きをします。マネージド
リレーショナルデータベース
サービスで、クラウド上でデータベース(MySQL・PostgreSQLなど)を使用できます。
最後に
今までの図はこちらから見れます。
では、次の記事からAWSのサービスをもっと見ていきましょう。
ーーーーーーーーーーーーーーーーーーーー
後編はこちらからどうぞ。
【初心者向け】AWSは怖くない!これだけ読めばAWSのアーキテクチャ図がわかるようになる〜後編〜
ーーーーーーーーーーーーーーーーーーーー
Discussion