AWSで基本的なサービスをデプロイするときの全体構造を整理するため、及び、これらの知見をシェアできたらと思い。ここにまとめようと思います。
上記画像のアーキテクチャーは、私が基本的なサービスを構築するときにやっている一般的なスキームです。
ネットワークの上位概念VPC
図を見てもらうとわかるように、AWSのネットワークはVPCという箱を一つの塊として構築されています。
Virtual Private Cloudの略で、AWSアカウント専用のネットワークを指します。
VPC内部を物理的に分割するアベイラビリティーゾーン
図では見やすさの観点からアベイラビリティーゾーンは一つしか記載してないが、3つほどに分割できる。
東京リージョンには3つのアベイラビリティーゾーンがあり、例えばアベイラビリティーゾーンの1拠点で地震が起きてしまい、データがすっ飛んだという事態になっても、別のアベイラビリティーゾーンに分散している設計にしておけば、サービスを落とさずに済むということです。
VPCのネットワークをIP的に分割するサブネット
サブネットとはVPCのIPの範囲だ。
上図の構成ではpublic subnetとprivate subnetをIP的に分割している。
主に分ける理由としては文字のごとく、WEBサーバーはパブリックに公開したいが、DBはインターネットから接続させたくないという場合にIP的に切り分ける必要があるから。
VPCとインターネットをつなぐインターネットゲートウェイ
VPCがインターネットと触れ合うためにはインターネットに対して門戸を開かねばならない。
その門戸に当たる部分がインターネットゲートウェイである。
インターネットゲートウェイからサーバーへの道筋、ルーター
インターネットゲートウェイがVPCとインターネットをつなぐ門戸のようなものだとすれば、ルーティングとは門戸から敷地内部のどこの入り口につなぐかを決める役割。
上図の場合は、VPCという城壁の敷地内に、Public SubnetとPrivate Subnetという建物があり、インターネットゲートウェイへはPublic Subnetにしか繋いでいない。
こうすることでインターネットからはWebサーバーにしかアクセスできず、DBへのアクセスはWebサーバー経由でしか行えないようになります。
それぞれのサブネットにEC2やRDSが入る。
AWSの勉強を始めるとき、なぜだかEC2から学び始める教材が多い。
しかし、インフラ構築においてEC2は結構深めのレイヤーの話しで実際には上記で記したようなVPC、サブネットなどにラップされてる形で体を成している。
おそらく、AWSがなんとかく理解はできるが、いまいちピンとこないといった理由はここにあります。
今回は全体像を示し、次の記事からはそれぞれの深堀りという形で記していきます。