LoginSignup
4
3

More than 3 years have passed since last update.

【AWS/GCP/VPC】2020年07月17日時点でVPC設計する時に気をつけること

Last updated at Posted at 2020-07-18

現時点でVPC設計する時に注意したいことをいろんな資料を見ながら書いていこうと思います。

重要項目

  • 単一もしくは複数?
  • サブネットはAZ毎、ルーティング、管理特性で分離する
  • パブリックサブネットは最低限にとどめる
  • VPCのレンジはMediumくらいでどうでしょう?(自信ない。。。。)
  • デフォルトネットワークを使用しない
  • 明確な命名規則を使用する

注意事項

  • 一度作成したVPCとサブネットはリサイズする事はできない
  • 1つのサブネットが複数のAZをまたがることはできない

単一もしくは複数?

アカウントとVPC、それぞれが単一なのか、それとも複数なのかを確認します
複数のVPCを使用する場合は、VPC ピアリング接続なども検討に入り、使うサービスが若干変わってきたりするためです。
上記で書いているアカウントの概念は、GCPだとプロジェクトになりますかかね。
いまさら、AWSのネットワーク設計
VPC 設計のためのベスト プラクティスとリファレンス アーキテクチャ  |  ソリューション  |  Google Cloud

サブネットはAZ毎、ルーティング、管理特性で分離する

サブネットはAZごとに分割でき、ルーティングするごとに分けることができます。
例えば同じリージョン内で、EC2からRDSにトラフィックを飛ばすのであれば、別のサブネットを切るべきでしょう。

image.png
いまさら、AWSのネットワーク設計 より引用

管理特性

ここでいう管理特性とは、IPアドレスが増減するか、プライベートIPアドレスを指定できるかの2つを指します。
この管理特性が異なるものについてもサブネットを分けます。イメージは上記図の通りです。
以下のサービスを念頭においてサブネットは分割します。

プライベートIPアドレスを指定できる

  • EC2

プライベートIPアドレスを指定できない

  • RDS
  • NAT Gateway

IPアドレスが増減するサービス

  • ELB
  • AutoScaling(EC2)

いまさら、AWSのネットワーク設計

パブリックサブネットは最低限にとどめる

上記にように分割するとアプリケーションとDBはプライベートサブネットに入れて運用し、インターネットに接続するのは最低限のサブネットにします。
下記の例だと、インターネットに接続するのはロードバランサー(ELB)のみでそれ以外はプライベートサブネットになっています。そのため下記のように、ロードバランサーだけがインターネットに接続できるようにして、残りはプラベートサブネットに所属させるのはベースになるのかなあと思っています。またプライベートサブネットにおいて、インターネットに接続したい場合は、NATゲートウェイを利用します。

image.png
image.png
AWSのネットワーク設計入門 より引用

VPCのレンジはMediumくらいでどうでしょう?

自社プロダクトを開発するにあたっては、Mediumくらいで良いのではと思っています。
将来的にIPアドレススペースを余分に確保しておくことは重要とはわかっているのですが、そこを自分の中でまだ言語化できていません。なのではてなマークを書いています。

下記の記事で書かれている参考数値が非常に参考になります。

image.png
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エンジニアのキャリアを考える!

4
3
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
4
3