Availability Groups allow you to have readable secondaries, provided you have licenses for those. You'll need to describe your environment more in order for us to help.
Here is how we had one system designed at a previous job:
3 servers at primary site: 1 for write, 1 for reads, 1 as a failover server
3 servers at DR site: 2 for async reads, 1 as a cold standby since this was SQL 2012 that only allowed 4 secondaries
Most of the apps that connected to it were using drivers that could make use of the ApplicationIntent and MultiSubnetFailover connection parameters. The ones that couldn't had to point to the underlying SQL instance where we wanted it to connect to and had to be changed if we did a failover.
Describe your environment in more detail. Need to know your HA and DR requirements, plus database drivers, reads vs writes, etc.