Database Capacity Planning
Capacity planning is a very nice way to know your business. Its main goal is to make sure that your hardware and your software will still be able to enable your business to do what it wants to do in order to keep existing and succeed.
And how do you start doing that? My opinion is that you need to know two things:
• What's the natural growth rate of your resource consumption?
• What's your company's strategy for the upcoming year?
To answer the first question you have to have as many monitored metrics as possible. Get some tools out of your toolbox and put them to work. From all possible metrics, I would start with 3 of them: CPU, Memory and Storage.
Monitoring the CPU usage will give you a hint of the average usage and also if there is any peak usage that you might be worried about at any given moment. Memory usage follows the same pattern and concerns. And with Storage consumption (which usually only grows), we will be looking for the growth rate in order to determine whether (and when) we will need additional storage. Keep in mind that if we are talking about an on premise datacenter, then you might take in account that the company may take some time with all the internal processes in order to request, pay and receive the storage device you may want to purchase.
With all that, you may be prepared for a smoothier journey along the year. Buy yourself some (additional) peace of mind and put alarms on those metrics. Systems like Nagios can help you monitoring those metrics and triggering an alarm in case, for instance, your storage consumption hits a defined percentage.
Well, that covers how to keep your business doing what it has being doing so far, but what if there's a big growth opportunity for your company (like startups that have growth rates of 40% a year or more)? Are your technical resources up to the challenge?
In order to know that, you have to know your business strategy for the upcoming year (capacity planning is usually done on the beginning of the company's fiscal year). I would do the following check list:
• Understand your business strategy;
• Check whether that strategy is based upon the existing infrastructure/systems or if it will be based on new products/systems;
• With the business expectations in hands, analyze the existing/new systems/products design (Entity-Relationship Diagram, Database infrastructure, etc) and check what you will need to meet the business expectations (a new node in the cluster, a better database server, more storage space, etc);
• Validate those numbers with the Development and Business Management teams;
• Create an action plan on how to deploy the new resources to your existing infrastructure;
• PDCA over that initial plan.
I think that these actions will give you a very good start, and will make sure you will meet the business expectations in most of the cases.
There's also two tips I would like to give:
• Plan to take your databases and your infrastructure to the cloud. Both Saas (Software as a Service, in this case cloud based database solutions) and IaaS (Infrastructure as a service, cloud based virtual machines and network) can scale better than any on premise hardware. That means that, if your estimation is wrong you can easily re-scale your database or server specs, with usually minimum downtime (if there's any at all).
• Second, make sure you are open to be contacted by the development teams in order to work with them on the design of new products/systems. In this case you will always be aware of the new requirements, will be able to help designing the new systems and will prevent yourself from being caught with short pants by discovering a new big system only when it is deployed to production.
I hope you have a great time doing your capacity plan. See you next time!