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.
By the end, users need to be able to reach the ALB, but the app servers and database should not be directly reachable from the internet — and outbound updates still need to work from wherever they end up.