Chapter 6. Capacity Planning

Capacity planning is the art of predicting the future. It is the process of figuring out how you take your view of the past as metrics and apply it to future planning. As a field, capacity planning has significantly changed over the years. It has been around for centuries, because as long as humans have been able to, we have planned for the future. Where does our food come from? Where are we sleeping tonight? How much food do we trade and how much do we keep for our family? How do I surround myself with people who respect me? Can my tribe survive by hunting this herd? Where has the best jobs? Even today, we are constantly evaluating how our current situation will change and whether we can survive within it.

Capacity planning grew throughout the industrial age, as people learned that they had to hire workers based on demand, their output speed, and how many materials they had. This is how things stayed for a long time and it is still accurate today, whether we are building data centers or making products such as chairs. In terms of data centers, something I learned from Google is that filling a data center is easy but finding the space for one and building it is not.

Starting in 2012, it took Google around three-to-five years to find a plot of land to build a data center, persuade the local government to sell it the energy it needed, and get all of the appropriate paperwork signed. It would then take 18 months to build the building and wire it up. Finally, it would take six months to fill it with servers and be online and working. These long timelines require Google to always be planning for growth. If it will take five years to make a significant growth in capacity happen, careful planning is needed.

These sorts of timelines used to be more common in the engineering world. Imagine how long it might take to build a bridge or look at the release cycle of Apple laptops. With software, though, we are quickly moving away from long timelines. Now, we have moved to a world where you can create servers almost immediately. Software-defined networks are becoming the norm. Often, you are running on other people's computers in the cloud or are in the process of building a platform for other people to run on top of.

Capacity Planning

Figure 1: Our current position in the hierarchy

Capacity planning is incredibly valuable, because growing capacity can be a slow and expensive process, even given the advent of modern technology. As we continue to move up our hierarchy of reliability, we are now talking about the future. How do we plan for it, shape what it may look like, and assess the risks and problems that may appear? In this chapter, we will be talking about how to plan for growth, some basics of finance, how software architecture changes affect capacity planning, and how to communicate within your business about growth.

A quick introduction to business finance

Often, engineers think about things such as software performance, metrics, servers, hard drives and network bandwidth. Instead, we will first dive into some business finance. I have found that many software developers are interested in finance (see cryptocurrencies, flash trading, gambling, and so on), but it took me a long time to be turned on to it. As such, people would speak finance jargon and I would smile and nod. Frequently, I did not realize what was being implied about how the business thought about my team or about how our CEO viewed economics. I bring this up now because one of the most significant aspects of capacity planning is figuring out money: discovering how your business deals with money and how to acquire it for your team. Can you ask your CEO to approve a $50,000 purchase or do you need to work with the finance department? Does your company have a budget for increases in infrastructure costs? Often, you will interact with someone who will use terms you have never heard of, which will make discussing money difficult. Knowing jargon and language is vital to working with people. It sets a baseline to start discussions.

Note

This is not legal, investment, or financial advice, as I am just an engineer. Talk to your accountant, bank teller, financial planner, lawyer, CFO, or anyone who has a degree in these things before making financial decisions.

Here is a list of some economics jargon that I have found useful when thinking about businesses:

  • Cash flow: This is how you describe how much money you have, where it comes from, and where it goes. It consists of revenue, which is incoming money, and expenditures, which is outgoing money.
  • P&L: Profits and losses or P&L is a description of how much money you have and how it changes, usually on a quarterly basis. You get these figures by subtracting your expenditures from your revenue. If the result is greater than zero, you have profits. If the result is less than zero, you have losses.
  • Balance sheet: A balance sheet is a list of assets, liabilities, and equity. Basically, it is what the company owns, whom it owes money to, and who is investing in it. The backing equation for the sheet is Assets = Liabilities + Equity. The money you have spent (your assets) is equal to the money you have borrowed from the bank (liabilities) and equity (money you got from investors).
  • Capex and Opex: Capex is capital expenditures and Opex is operational expenditures. Capital is a term used to define the value of stuff or assets that an organization owns. Capital could be money, intellectual property, real estate, physical goods, and so on. Capital expenditures are investments made to increase the amount of capital you have. Often, it is said that Capex is money spent directly correlated to bringing in more revenue. Opex is everything else.

    These are investments that you will not get back, such as insurance, labor, people costs, infrastructure, and so on. If you were a gardening service, purchasing the lawn mower would be Capex, while its fuel would be Opex.

  • Return on investment: This is also called ROI. In the finance world, this is usually a percentage. To calculate that percentage, you take the money you made, subtract the initial money you invested, and divide that number by the initial money invested. This is the same as saying ROI = Net Money / Initial Investment. It is also often used to ask, "Why are we doing this and what do we expect to get in return?" The answer to that is not always money: sometimes it is opportunities or physical goods.
  • Cost center versus profit center: Cost centers and profit centers are usually split similarly to Opex and Capex. Both cost centers and profit centers are groups of people. Investment into a profit center translates to the product we sell. Inversely, a cost center is everything else. So human resources (HR) is often a cost center, because it is necessary for the business but not for the creation of the product. Depending on the company, software developers may be considered either a cost or profit center.

Public companies on the New York Stock Exchange are required to share a lot of this financial information with the public every year. Specifically, in the US, they must file a P&L statement, a cash flow statement, and a balance sheet. Some companies also share the information quarterly. Unlike many educational systems (which often have arbitrary periods to define quarters and semesters), businesses usually have financial quarters that are exactly three months long. That means that if your company's fiscal year lines up with the US tax year (which is January 1 to December 31, although tax periods are different depending on the country), then your quarters will end on March 31, June 30, September 30, and December 31.

Private companies can do whatever they want fiscally, but it is pretty standard for private companies to have quarterly board meetings where they discuss their finances with their board. Some companies share board meeting notes with their employees, which is where this data may come up. Note that every company is different, and every country is different, so depending on where you live and where the company you work for is based, all of this may be very different. I have mainly worked for US companies, so my explanations may be imperfect or biased based on that fact.

You should figure out how your organization operates as a business. To do that, you need to understand the flow of money and how to talk to the people who deal with making sure your business has balanced books. While you do that, you can start planning how your software will operate inside that world. Capacity planning is a never-ending task, so you will have to create plans and then adjust them based on how information changes.

Businesses often have a business continuity plan. This is a plan for how the company will deal with significant change. If a business is taking a large risk, this may be written up so the company has a plan for how to recover after a tragedy. This is similar to capacity planning but is designed for the business heads to deal with unforeseen actions. Some businesses and governments even run Business Continuity Plan (BCP) as if it is an incident response team. There is constant evaluation of the plan and practice table-top sessions to make sure it would work and people know their roles. All of this is to hedge against the risks that a company constantly faces.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.17.174.156