Perhaps one of the best features of AWS is Virtual Private Cloud (VPC).
In essence, VPC is a virtual network that you can divide into subnets. Some subnets can be public (with access to the internet), and some are private. You can define routing between subnets, and by default, they can freely access each other. You can also create VPN to your VPC, add NAT gateways, manage DHCP options, and define ACLs for your networks. VPC is a complex service with many subtools and options. For our purpose, we will use only a subset of them though.