現時点でVPC設計する時に注意したいことをいろんな資料を見ながら書いていこうと思います。
重要項目
- 単一もしくは複数?
- サブネットはAZ毎、ルーティング、管理特性で分離する
- パブリックサブネットは最低限にとどめる
- VPCのレンジはMediumくらいでどうでしょう?(自信ない。。。。)
- デフォルトネットワークを使用しない
- 明確な命名規則を使用する
注意事項
- 一度作成したVPCとサブネットはリサイズする事はできない
- 1つのサブネットが複数のAZをまたがることはできない
単一もしくは複数?
アカウントとVPC、それぞれが単一なのか、それとも複数なのかを確認します
複数のVPCを使用する場合は、VPC ピアリング接続なども検討に入り、使うサービスが若干変わってきたりするためです。
上記で書いているアカウントの概念は、GCPだとプロジェクトになりますかかね。
いまさら、AWSのネットワーク設計
VPC 設計のためのベスト プラクティスとリファレンス アーキテクチャ | ソリューション | Google Cloud
サブネットはAZ毎、ルーティング、管理特性で分離する
サブネットはAZごとに分割でき、ルーティングするごとに分けることができます。
例えば同じリージョン内で、EC2からRDSにトラフィックを飛ばすのであれば、別のサブネットを切るべきでしょう。
いまさら、AWSのネットワーク設計 より引用
管理特性
ここでいう管理特性とは、IPアドレスが増減するか、プライベートIPアドレスを指定できるかの2つを指します。
この管理特性が異なるものについてもサブネットを分けます。イメージは上記図の通りです。
以下のサービスを念頭においてサブネットは分割します。
プライベートIPアドレスを指定できる
- EC2
プライベートIPアドレスを指定できない
- RDS
- NAT Gateway
IPアドレスが増減するサービス
- ELB
- AutoScaling(EC2)
パブリックサブネットは最低限にとどめる
上記にように分割するとアプリケーションとDBはプライベートサブネットに入れて運用し、インターネットに接続するのは最低限のサブネットにします。
下記の例だと、インターネットに接続するのはロードバランサー(ELB)のみでそれ以外はプライベートサブネットになっています。そのため下記のように、ロードバランサーだけがインターネットに接続できるようにして、残りはプラベートサブネットに所属させるのはベースになるのかなあと思っています。またプライベートサブネットにおいて、インターネットに接続したい場合は、NATゲートウェイを利用します。
AWSのネットワーク設計入門 より引用
VPCのレンジはMediumくらいでどうでしょう?
自社プロダクトを開発するにあたっては、Mediumくらいで良いのではと思っています。
将来的にIPアドレススペースを余分に確保しておくことは重要とはわかっているのですが、そこを自分の中でまだ言語化できていません。なのではてなマークを書いています。
下記の記事で書かれている参考数値が非常に参考になります。
AWSネットワーク設計思想(VPC、サブネット)とベストプラクティス | Tamanyan.me | たまにゃんのエンジニアブログ より引用
役立つサイト
またIPアドレスの計算は下記サイトが役立ちます。
192.168.0.0/21 を /24 でサブネット分割 - IPアドレス計算
デフォルトネットワークを使用しない
理由
- オンプレミス環境のネットワークに接続した際、IPが重複することがある
- サブネットに自分たちでつけた命名規則を運用することで、ネットワークの把握と保守が容易になる
- 自分たちで作成しているので、時にどのような設定になっているか明確
VPC 設計のためのベスト プラクティスとリファレンス アーキテクチャ
VPC ネットワークの概要 | Google Cloud
あとGCPだと、新しいリージョンが導入された時に、自動モードネットワークに新しいサブネットが自動的に作成されるようです。
アドレスの重複とか考えると、VPCを作成し、デフォルトを早めに削除した方が良さそうです。
明確な命名規則を使用する
実装してる時は気をつけるのに、VPCになるとなんとなくつけてしまっていることがありました。大いに反省。
ということで命名規則は気をつけたいところです。
下記の例はそのまま使えそうです。
会社名: Acme Company: acmeco
ビジネス ユニット: 人事部: hr
アプリケーション コード: 給与システム: comp
リージョン コード: northamerica-northeast1: na-ne1、europe-west1: eu-we1
環境コード: dev、test、uat、stage、prod
VPC 設計のためのベスト プラクティスとリファレンス アーキテクチャ より引用
その他参考になる記事
設計サンプルで学ぶ、AWS構築の原則 - Webアプリ アーキテクチャのベストプラクティスを理解する - エンジニアHub|若手Webエンジニアのキャリアを考える!
AWSのネットワーク設計入門
AWSに関するありがちミスとその対策〜EC2、S3、RDS、Lambda、CloudFrontの場合 - エンジニアHub|若手Webエンジニアのキャリアを考える!