In my production environment, I have a single instance of MySQL server running on 16gig of memory that handles up to 20,000 queries an hour. The size of one my table is growing at the rate of 2 million a per month. Both these numbers are expected to go up as time passes yet I'm not sure when I need to improve the architecture.
How could one be proactive about the situation and go about future proofing the system?
Does upgrading the hardware buy much in terms of time and capital efficiency?
What would the common practice be in this instance, if we double the traffic every 3 months, would sharding be a natural progression? Or are there other alternatives?
How do I even tell if my system is reaching it's peak, what are some of the tools available for profiling the database? And what are the metrics I would use to measure it?