
AWS_アーキテクチャ設計の基礎 #328日目
Udemyのこちらの講座で学ばせていただいた内容のアウトプットです。
アーキテクチャ設計の基礎とは、リージョン、VPC(サブネット)、AZをどのように構成するかということです。以下は最終的な構成図です。

AZ
Availability Zoneのことです。平たく言うとAWSのデータセンターです。停電や災害などへ対策して可用性を高めるには、AZは2つ(マルチAZ)が基本とされています。3つ以上にすると効率が低下すると言われています。

自身のAZでEC2インスタンスを立ち上げる場合、2つのAZに跨ってインスタンスを分散させ、ロードバランサー(ELB)でトラフィックを分散させ、両方のインスタンスを使うようにできます。

データベースも同様に分散させることができます。1つAZで立ち上げますが、マルチAZ配置を有効化する設定によって別のAZにセカンダリのDBを有することが可能です。

DBのバックアップをリージョン内に取得しておくことも可能です。バックアップはリージョンのS3に保存されます。こうするとAZが停止してもS3からのバックアップは利用できるようになります。

このような構成をすることで、1つのAZのリソース自体がダウンした際も、別AZのリソースからアクセスすることでダウンタイムを防ぐことができます。
システムの可用性を高めるための基本設計ですね。
VPC
VPCでネットワーク範囲が決まります。基本は1つのアプリに対して1つのVPCでアーキテクチャを設計します。2つ以上のVPCを使うのは利用範囲や機能を分ける場合など、構成を分けた方が良いケースです。例えば開発用と本番用にVPCを分ける等があります。ただし2つ以上のVPCを使うとネットワーク連携が必要になり複雑性が増し、非効率にもなるのでその点が注意です。

ネットワークの分割方法は以下2つがあります。
マルチVPC方式:
VPC自体でネットワーク、システムの範囲を分けていく
マルチアカウント方式:
アカウント毎にVPCを持たせて所有するシステムを分ける


VPCはサブネットをうまく分割することで安全性を高めたり、ネットワーク範囲を分割して利用します。サブネットは、インターネットアクセス範囲を定義するために利用するものです。プライベートとパブリックの2種類があり、基本はプライベートサブネットを使います。インターネットのやり取りが必要なものだけをパブリックサブネットに配置して安全な構成をすることが重要です。

サブネットサイズは「/24」以上の大きさにすることがAWSでは推奨されています。例えば「/20」だと「/24」よりサブネットサイズが大きくなります。また、プライベートサブネットの方が配置するリソースが多くなる(パブリックは最低限だけ設置)ため、より多くのIPアドレスをプライベートサブネットに配置する方が良いと言われています。

マルチリージョン
別リージョンにデータベースのリードレプリカやスナップショットを配置するなどして、データアクセスを分散することができます。グローバル展開している場合など、ユーザーが多いリージョンでのアクセス改善に繋がります。他は災害対策で、ディザスタリカバリ戦略として用いることも可能です。

最終的に冒頭の図のようになります。

図に起こすと自分の理解がかなり整理されますね。
ここまでお読みいただきありがとうございました!!