Build Your Web Application on Scalable Foundations
When you are launching a startup you hear the word “scalability” a lot. Your tech team talks about it, investors love it. Sometime they can’t get a good night sleep without it and they are right to worry. At the end of the day you want to build a business that can serve tens of thousands or even millions of customers, right?
But what is scalability from a technical point of view and why should you worry about it from day one?
What is Scalability?
First of all let’s talk about the meaning of the word “scalability” in the tech world.
Your web application is scalable if adding more resources to it (read “hardware”) would linearly translate to being able to respond to more requests (read “serve more customers”).
A thing to pay attention to here:
Linearly Scalable: you don’t want your costs to go up higher and higher when you acquire new customers. Being linearly scalable means that on large scales your cost of serving a new customer is relatively constant and that’s a great news for your revenue model.
Be able to respond to more requests: The technical term is “Response Time” and it means the time that it takes for your web application to respond to a request sent to it. If your app response time is higher than expected, then your app is in a “degraded” state. Your performant web application should have low response times for every scale.
Scale up vs Scale out
You might hear these terms in technical groups. What do they mean?
Scaling up means adding more resources to the server you host your app on in order to have more capacity. For example going from 1 CPU to 2 CPUs is a scale up.
Scale out means having more servers hosting your app in order to have more capacity. If you have 2 servers, adding the 3rd server is a scale out.
With the expansion of cloud computing platforms like Amazon AWS or Google Cloud, the cost of having access to servers are now lower than ever before. The cost of having more resources on a single server is not as low as having more servers, and there is a limit to it. That’s why in the startup community the focus is on ability to scale out. If your web application can’t scale out you are in trouble!
Why should I worry about Scalability now?
As mentioned above, you want to build a business that can serve tens of thousands or even millions of customers. The emphasis here is on the word can.
When starting a new business it’s easy to discard the notion that you need to build a scalable web application for your business. There is a good chance you are not going to have a ton of customers on day one, or in the first few months. So why should you worry about scalability from day one?
Answer is simple: If you don’t, you will likely incur a much longer and more painful process of making your app scalable. You will introduce bugs to your platform that are related to scalability as well as regressions (You can learn more on preventing regressions here). Not only will it slow down your progress, you may lose customers in the process.
Losing Customers is Bad
Imagine you start your company today without having scalability in mind. A possible scenario is this: You build up a customer base, promote your product on social media and run a marketing campaign. You use every tool you have to attract customers to your web app. You are getting traction and that’s awesome. You hit 100, 500,1000 and then, all of a sudden it happens. Your web application is behaving strangely during peak hours. The customers you spent so much effort and money on attracting are now experiencing a degraded performance and one by one, they start to leave. You jump on fixing the issue but by then the damage is done, you have lost the precious customers you worked so hard to get.
Scalability from Day 1
Similar to my argument for the value of having test automation for startups, when you have scalability built into your app from day one, it saves you time and money down the road. That decision can guide you through hurdles forcing you to choose wiser when having to decide between different technologies.
You might be laser focused on your goal of building an amazing solution to relieve the pain points of your potential customers, but at the end of the day your customers want a solution that is bug-free and performant. You can’t guarantee performance if you don’t have the scalability as a priority of your development process.