🙆

インフラについて学んだことを街に例えながら整理する

2021/08/31に公開

ペルソナ: インフラ初心者

概要

この記事はインフラを入門した人が新しく出てくる専門用語を理解し、インフラの概要がわかればと思い書きました。
自分は1ヶ月前にインフラに入門して最初新しく出てきた用語ばかりで全くわからず、心が折れて勉強を辞めてしまいました。
しかし、インフラを街に例えると一つ一つの専門用語の意味が分かりやすくなり、インフラ周りについてかなり理解がしやすくなったので今回はそれを紹介したいと思います!

それでは、早速AWSで街を作っていきましょう!!

VPC(土地)

まずAWSを使おうと思った時に聞く単語は「VPC」になると思います。
VPCとは、AWS上に作成できるプライベート仮想ネットワーク空間です
初めてVPCという名前を聞いた方はVPCとは土地であるとイメージしてください。
今回の記事ではインフラの概念の理解に重きを置いているので、一つ一つの用語の解説はしません。
テンポよく次に行きたいと思います!

サブネット(街)

AWSでVPCを作った後に作ることになるのがサブネットです。
サブネットとは、大規模なネットワーク(VPC)内の小さなネットワークです。
サブネットは土地(VPC)の中の街をイメージしてください。

これで次と行きたいところですが、ここで一つだけ理解しておいた方が良いと思うことがあります。(ここは一旦飛ばしてもらって良いです。)
それがサブネットを作成したときに設定するIPv4とCIDR(サイダー)です。

IPv4

IPv4とは、IPというインターネットを通して通信する際に使用される規約のことです。
これは例えると住所をイメージしてください。

CIDR

CIDRとは、IPv4を限定するための技術です。
イメージとしては、IPv4では住所の範囲が広すぎるのでCIDRを使って使える住所を制限しているというイメージです。
CIDRの詳細に関してはこちらの記事などをみてみてください。

インターネットゲートウェイ

これで土地と街を作れました。
次は土地を外の世界と繋げましょう!
ということで登場するのがインターネットゲートウェイです。
インターネットゲートウェイとはVPC とインターネットとの間の通信を可能にする技術のことです。
インターネットゲートウェイによって土地が外へとつながる道が完成しました!

ルートテーブル

ルートテーブルとはネットワークの経路を設定するためのサービスです。
ルートテーブルは外から来た人を街(サブネット)に案内するためのマップです。

EC2

EC2はAWSを使う人なら誰でも使うサービスだと思います。
EC2とは、インスタンス(仮想マシン・VM)を用意するためのサービスのことで、
土地の中にEC2という建物を作るイメージです。

Elastic IP

EC2という建物に住所を与えます。

RDS

RDSはデータベースを作成するためのサービスです。
こちらもEC2と同じく、例えるなら土地の中にRDSという建物を作るイメージです。

セキュリティグループ

建物の中にどんな人が入って良いか、どんな人は出ても良いかのルールを決めるためのものです。

これで一通りは立派な街を作ることができました。

あとは外から来る人を正しく街に案内できるようにしましょう。

Webサーバー

Webサーバーとは、パソコンやスマートフォンなどの端末からHTTP/HTTPSで送られたリクエストに対してHTML、CSS、JavaScriptなどの情報を返す役割を持ったソフトウェアのことを指します

CSSやJavaScript、画像など、頻繁に変化しないファイルへのリクエストであればwebサーバーが直接対応します。
一方で、Railsアプリケーションなどががリクエストを処理しなければならない場合はApplicationサーバーにそのリクエストは送られます。

Webサーバーは、EC2のビルへ入るための受付窓口のイメージです。
受付窓口では「自分だけで処理できる!」と判断すれば、そのままユーザーにレスポンスを返します。
逆に「自分だけじゃ無理!」と判断した場合は、アプリケーションサーバーにお願いします。

Applicationサーバー

Applicationサーバーはwebサーバーからリクエストを受け取ると、Railsアプリケーションにそのことを知らせます

ApplicationサーバーはEC2に入るための第二の受付窓口です。

まとめ

以上を踏まえるとアプリをデプロイするために必要な知識一通りを説明できたのではないかと思います。
最後にリクエストが送られてきて、レスポンスを返すまでの流れを街で例えながらまとめてみましょう。

  1. http://www.exmple.com/notes というnote一覧を取得して表示したいという訪問者がインターネットゲートウェイを通じてVPMという土地にやってきました。
  2. ルートテーブルによって、訪問者はEC2の入っているビル(サブネット)に案内されます。
  3. そして、中に入ると受付窓口(nginx)で訪問者の要件を聞きます。
  4. 受付窓口は自分だけでは処理できないと判断し、先へ通します。
  5. 次に訪問者は第二の受付窓口(unicorn)に進み、EC2のRailsアプリケーションの部屋へと案内されます。
  6. 訪問者からのリクエストを受け取ったRailsアプリケーションは、これはRDSからnoteのデータ一覧を取得する必要があると判断し、隣のビルのRDSのデータベースからnote一覧を取得するようにお願いし、取得します。
  7. note一覧を取得した訪問者は満足し、帰って行くのでした。めでたし、めでたし。

Discussion