I can't seem to find any specific guidance on what constitutes good practice with regards to the use of one VPC vs. many for application hosting. This link touches on the subject, but is quite old and doesn't really provide an answer.
I'm currently working on a migration of a traditionally hosted environment that consists of around 50 apps plus two database farms (SQL Server and Oracle) to AWS; total estate is around 250 Windows servers. Currently each app essentially sits on its own /24 subnet.
I've been given a steer that each app and database farm should sit both within its own AWS account and VPC, and I'm not sure of the wisdom of this approach; especially the part of seperating the apps from their databases.
The accounts I'm less worried about, as that is more of a billing question. But as far as the VPCs are concerned I'm trying to understand the difference between say:
- Replicating the whole environment within 1 VPC, vs.
- Introducing 50 VPCs to host the same number of apps / servers.
What should be taken into consideration when deciding between (1) and (2), or some compromise in the middle. I've looked at the AWS docs and can't really find any clear advice on this topic.
The key differences, as I see it, is between the network traffic all being intra-VPC vs. inter-VPC. This means:
- there is now an additional cost because inter-VPC traffic costs and intra-VPC traffic doesn't.
- There is some additional complexity in that an Inter-VPC mechanism such as Peering or Transit Gateways need to be selected, set-up and managed.
But neither of the above are a clear reason to do things one way or the other; while 50 VPCs is quite a lot, the numbers in question are well within the limits of Peering, for example.
Is there anything else I should be taking into consideration?
- What about the performance characteristics for Intra vs. Inter VPC traffic, etc.?
Other considerations:
- CIDR blocks have to be managed across the VPCs to avoid a clash.
- Peering's max MTU is 1500 bytes
- by default Inter-VPC traffic is not encrypted.
- DNS complications.
Thanks for any help.