51
72

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめての記事投稿

【初心者向け】AWSは怖くない!これだけ読めばAWSのアーキテクチャ図がわかるようになる〜前編〜

Last updated at Posted at 2023-07-02

どうも、プログラミングスクール受講中・実務未経験勢です。

AWSのアーキテクチャ図を見ても何も理解できなかった筆者が、最近勉強してわかったことをまとめます。

インフラ用語の説明もいれつつ、AWSの代表的なサービスを説明するので、同じような境遇の方の役に立てると嬉しいです。

※普段の使用のフレームワークがRuby on Railsなので、もしかしたらRubyやRails特有の言葉を使っているかもしれません。

ーーーーーーーーーーーーーーーーーーーー
後編はこちらからどうぞ。
【初心者向け】AWSは怖くない!これだけ読めばAWSのアーキテクチャ図がわかるようになる〜後編〜
ーーーーーーーーーーーーーーーーーーーー

読んだら幸せになる人

  • Webアプリのコードを書いてはいるが、インフラ周りがわからない人
  • AWSのアーキテクチャ図を見ても何がなんだかわからない人

▼アーキテクチャ図はこういうやつ
AWS archtecture diagram
引用元「AWS のアーキテクチャ図を描きたい ! でもどうすれば良いの ?」1

サービス名が英語で略されてるから、初見だとなんのこっちゃわからないのでは。このシリーズ記事を読むと、上の図がわかるようになります。あと、AWSはすごいぞ。怖くないよ。

先輩エンジニアの方々は誤りや誤解を招く表現があったら、ご指摘いただけると嬉しいです。また、この説明も必要では?といったご提案もいただけると喜びます。

Webアプリを動かすためにはサーバーが必要

さて、Webアプリが完成したとします。しかし、それを動かすためにはサーバーを用意する必要があります。

インフラ(インフラストラクチャー)
・「Webアプリを動かすために必要なもの」の総称
・ハードウェアもソフトウェアも含む

なぜサーバーが必要なのか?何のサーバーが必要なのか?どのように調達・設定・管理したらいいのか?このような導入の手間を限りなく減らし、簡単に必要なサーバーを使えるようにしたのがAWSです。

インフラ用語を理解しながら、アーキテクチャ図を読めるようになりましょう!

基本的にWebアプリは3層からなる

伝統的にWebアプリを3層に分離して説明する3層アーキテクチャという概念(※)があり、各層にその働きに特化したサーバーがあるのが理想的。ちなみに他の概念も存在します。2

  1. プレゼンテーション層には、Webサーバー

    • 固定のHTMLやCSS、JavaScriptを返す働きをする。
    • もしプログラムによる処理が必要だったら、APサーバーに「○○をやってください!」と依頼する。
  2. アプリケーション層には、AP(アプリケーション)サーバー

    • 依頼を受けつけたらプログラムで、HTMLやJSONを生成してWebサーバーに返す働きをする。
    • データの新規作成や取得が必要だったらDBサーバーへのアクセスも行う。
  3. データ層には、DB(データベース)サーバー

    • データを保管する働きをする。
      Alt 3-tiered Architecture

念のためにサーバーを増やそう

上記の図には3種のサーバーが1台ずつ計3台あります。

しかし、1台のサーバーをWebサーバー兼APサーバーとして使ったり、APサーバー兼DBサーバーとして使えないのでしょうか?

技術的には可能なのですが、下記の理由からそれぞれの働きに特化したサーバーに分けて使った方がいいようです。

  • なぜAPサーバーをWebサーバーとして利用しないのか3
  • DBサーバーは「高速なデータの処理」などのデータ管理に特化した機能や性能がある
  • 後からサーバーの台数を増やしたり減らしたりするのが簡単というメリットがある
  • その他のメリットもあります(割愛)

さらに、サーバーの台数を増やすと、災害時にメインのサーバーが壊れても、予備のサーバーでWebアプリを運用できるというメリットもあります。

冗長化 / 冗長性
・何かあった時の備えとして、サーバーの種類や台数を増やすこと

Alt Redundancy

3層アーキテクチャにMVCモデルを配置するとどうなる?

Webアプリを開発する中で、何度行き来したかわからないModelファイル・View(HTML・CSSファイル)・Controllerファイル。

MVCモデル
・上記のそれぞれのファイルに分割して開発すること
・Model、View、Controllerの頭文字でMVC

3層アーキテクチャMVCモデルを配置するとこんなかんじ。4
Alt MVC Model

ちなみに、開発環境ではAPサーバーがWebサーバーも兼ねてくれます。しかし、本番環境では大量のアクセスが発生し、APサーバーだけではリクエストを処理しきれないため、Webサーバーが必要となります。

Webアプリをリリースするにはサーバーを購入する必要がある? いいえ、そこでAWS。

Webアプリをリリースするためには、Webサーバー・APサーバー・DBサーバーが必要です。

よし、サーバー買っちゃいますか?

オンプレ(オンプレミス)
・サーバーなどのハードウェアを使用者の管理する施設で利用すること

買うとなると、サーバーの比較・検討といった導入の手間、購入費用、サーバーの設定。もしサーバーが災害や事故で故障してしまったら?などと、いろいろと考えるポイントは枚挙にいとまがありません。

しかし、AWSを使うと、インターネットを介してAmazonが提供するサーバーを使わせてくれるので、導入の手間が減ります!

これがAWS(の2023年7月2日時点で241種あるうちのサービスの一部)になります。サービスにより有料・無料とありますが、基本的に従量課金制です。

AWS
・Amazon Web Servicesの略

クラウド(クラウドサービス)
・AWSのようなインターネットを通して使えるサービスのこと

サーバーレス
・自前でサーバーの管理をする必要がないこと

サーバーの代わりにAWSのサービスを使うと?

AWSのサービスを使うといままでの図がこうなります。
Alt Servers and AWS

Amazon EC2は、AppサーバーとWebサーバーとしての働きをします。仮想サーバーインスタンス)を提供し、Webアプリのコンピューティングをクラウド上で行うことが可能になるサービスです。

Amazon EC2
・Amazon Elastic Compute Cloudの略

仮想サーバー
・物理的なハードウェア上において、分割された仮想的なサーバー環境のこと
・簡単に言うと「仮想サーバー」=「AWS上に作った自分が自由に使えるクラウド上のサーバー」

インスタンス
・AWS上で稼働する仮想サーバーのことを、AWSではインスタンスと呼んでいます。なんででしょうね?

とすると、縦に並んだEC2は図の上ではまとめてしまいましょうか。
Alt AWS EC2

Amazon RDSは、DBサーバーとしての働きをします。マネージド リレーショナルデータベースサービスで、クラウド上でデータベース(MySQL・PostgreSQLなど)を使用できます。

Amazon RDS
・Amazon Relational Database Serviceの略

マネージド
・「AWSがお客様に代わっていろいろ設定・管理・バックアップしておきますんで、お客様はあまりそのへん気にしなくて使ってもらっていいですよ!」を一言で言うとこうなる

リレーショナルデータベース
・複数のテーブルを関連付けて使えるデータベースのこと

最後に

今までの図はこちらから見れます。

では、次の記事からAWSのサービスをもっと見ていきましょう。

ーーーーーーーーーーーーーーーーーーーー
後編はこちらからどうぞ。
【初心者向け】AWSは怖くない!これだけ読めばAWSのアーキテクチャ図がわかるようになる〜後編〜
ーーーーーーーーーーーーーーーーーーーー

  1. AWS のアーキテクチャ図を描きたい ! でもどうすれば良いの ?

  2. MVC、3 層アーキテクチャから設計を学び始めるための基礎知識

  3. なぜAPサーバーをWebサーバーとして利用しないのか

  4. イラスト図解式 この一冊で全部わかるWeb技術の基本

51
72
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
72

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?