Search the forum, lots of great detailed discussions on this already.
Don't recommend having a dedicated server for DB, as an outage can result in higher % of clients downtime, plus the additional latency overhead. Better to stick App + DB roles on a server together, then if one of your servers goes downs it's just that one node, which you can then easily restore to another node, smaller % of customers affected.
For a starter setup, you'd probably want to get:
1 server: control panel.
1 server: app + db.
1 server: backups
Optionally, you can add the DNS role to a couple servers if you want to run your own custom dns servers. I use Cloudflare 100%, so don't need dns servers, makes things simpler for my setup.
Ideally you'd put your backups server with a different provider in a different datacenter. So if your main server provider ever shuts you down or has a fire or something, then your backup server is good to go for restoring your setup. It's a good practice for added protection.
There's no mechanism to restore your control panel server yet, so make sure your provider has good block level backups available, backups you can use to restore your control panel server to a new VPS if the old one was ever to die for whatever reason. A backup control panel role is in the roadmap to add redundancy for this soon.
Check old forum threads for optimization tips. There are things you'll want to do to optimize your webserver, php, and db.
This forum is an excellent source of info, but be sure to check the docs too which have many good nuggets of info. Welcome to enhance 🙂