You won't beat a good self-managed VPS with some docker containers unless you start adding criteria like SLAs and whatnot.
Then you'll still not beat a good self-managed VPS but you'll have someone else to blame
Then you'll still not beat a good self-managed VPS but you'll have someone else to blame
1) Creating and restoring backups
2) Unoptimized disk access for db usage (can't be done from docker?)
3) Disk failure due to non-standard use-case
4) Sharding is quite difficult to set up
5) Monitoring is quite different from normal server monitoring
But surely, for a small app that can run one big server for the DB is probably still much cheaper. I just wonder how hard it really is and how often you actually run into problems.
But to answer your question: running your own DB is hard if you don't want to lose or corrupt your data. AWS is reliable and relatively cheap, at least during the bootstrapping and scaling stages.