I want to set up a MySQL database that is easy to scale. Traditional, off-cloud scaling means (1) upgrading the hardware, (2) sharding, or (3) replicating.
Option 1 is easy but is limited. Option 2 (I hear) is very complicated, and I don't want to waste limited manpower on maintenance/administration. Option 3 appears suitable only for high-read, low-write cases, which won't fit my use case, and there are issues with consistency as well.
I am contemplating setting up a private OpenStack cloud and deploying a VM that hosts the database. It would be easy to scale vertically (just assign more vCPU, vRAM, HDD), and I can add more physical nodes to the cloud as needed. Then, I would just have a single, huge MySQL instance on the cloud.
1) Does this make practical sense? I don't mind a small overhead hit (I'd rather spend more on hardware than on maintenance/administration), but if the overhead is too large it may not make sense.
2) How scalable would this solution be? Can I just keep adding physical nodes to the cloud and scaling up the vCPUs, vRAM to arbitrarily high amounts?
The application is not very demanding on latency. I just need an easy-to-scale solution.