A basic three-tier app is wired up wrong: the load balancer isn't reachable, while the app servers and database are exposed to the public internet. That's backwards and dangerous.
Get the VPC layout right:
- the ALB should be internet-facing (users must reach it),
- the app servers and database belong in private subnets,
- the database must not be reachable from the internet, and
- private subnets need a NAT gateway for outbound updates.