Start with a private subnet. Keep workloads invisible from outside traffic. Place the application servers here. No inbound routes from the public internet. Security groups restricted to only what the system needs.
Next, deploy a proxy in a public subnet or attached via a NAT gateway. This proxy handles outbound requests and inbound connections from specific, allowed endpoints. Use modern lightweight proxies—HAProxy, Envoy, or Nginx—to maintain throughput without adding heavy infrastructure.
Route traffic through the proxy using internal DNS. All requests from private workloads pass through the proxy before hitting external APIs or services. This isolates the internal network while still enabling necessary communication. Combined with VPC route tables and IAM rules, the setup gives precise control over what moves in and out.