Scaling out MySQL & Redundancy-Speed tradeoff?
As you grow, keep an eye on the slowlog -- it will help you find the queries that need better indexes and/or reformulation.
No sharding for those small specs.
Clustering (eg, Galera or Innodb Cluster) give a high level of HA, plus some scaling.
Do not fear JOINs.  On the other hand, don't &quot;over-normalize&quot;.
If the monthly reports run to slowly, &quot;Summary tables&quot; can fix that.
No PARTITIONing unless you plan to purge &quot;old&quot; data.