A security review flagged the database: it's in a public subnet, its security group allows ingress from the internet, and it has no encryption at rest or in transit.
By the end, the database must be unreachable from the internet and accept traffic only from the app tier, with encryption on at rest and in transit. The app tier stays private too, with the ALB as the only public entry point and NAT still providing egress.