Also I just did a cleanup recently myself of this and migrated an account to a hub/spoke security VPC with transit gateway. AWS makes it real pain for running instances to migrate to private IP only. You have to play games with adding a second NIC/EIP to workaround this.
There should be a “wizard” type walkthrough to guide novices through creating their first VPC (they’d generally be managing AWS via “clickops” so a wizard type UI would work here).
The biggest complaint I have with it is that it doesn’t write ID values to well known SSM parameters within the region.
And then just use one of the zero-trust overlays to secure communications between nodes.
In theory those are deployed in the private address space behind a load balancer, but getting any actual information on the production deployment was like pulling teeth.
At peak times, the clusters had substantially more than 1k API instances running together; none of the the API instances ever had a public address, and not for cost reasons.
Everything was on EC2, behind a bastion; you had to jump through two jump hosts to SSH to particular boxes (containers were not a thing yet). Everything ran on private networks. Everything was exposed through load balancers (HAProxy) via 2 or 3 public IPv4 addresses; I think one of them was only to interact with an off-AWS third-party service over the public internet.
Yes, it was a startup, just very technically-minded.