Why horizontal scalability shouldn't be a focus for software startups

Validate, then scale

blue mountain supercomputer
Credit: Wikipedia

A demand or consideration we often get from clients looking for a new web application is scalability. Will the software be built in a way that will allow their company to handle millions of users in the event of a massive success? It's very important to some startup founders. In my opinion however, massive scalability should not be a concern when creating an application that you don't know for sure will have a lot of users. 

Starting a business is an exciting time. In today's reality, becoming a business owner can be as simple as creating a website. Like any startup, the founders believe in their idea enough to put some effort and money behind it to get it off the ground. It's only natural then that they expect it to succeed. For a first time founder, the level of expected success is often dramatically over estimated. In truth, explosive growth and success for startups is exceedingly rare.

bizplan Matt Mombrea

How many business plans have you seen with a forecast like this?

Building an application that can scale to a ton of users is difficult, time consuming, and expensive. It's important when it matters, but it rarely gets to that point. There are significant hardware and software choices to make and the cost and complexity of supporting a massively scalable system is daunting. If you already have a user base which necessitates such consideration, then it's a much different conversation. If your product is new and you just think you need a massively scalable system, you're probably wrong. 

Recently I've talked to several startups who thought they had to have something scalable out of the gate. To their vendor, that basically just meant using a NoSQL database like MongoDB or similar. Of course that's just a tiny piece of the puzzle, if a piece at all. The sacrifices they needed to make for the launch of their product on a 'scalable' system lead to poor user experience, technical challenges, and ultimately a failed product or a false start. 

Aside from the challenges and added time/cost to a scalable system, the main reason I don't think it should be a focus early on is that you can get really far with a normal system. A properly built web application with a relational database can usually handle hundreds of concurrent users even on modest single-server hardware. From there you can scale up your hardware to serve 1,000+ users. With the new 14 core Xenon's, it's cheap and easy to have a single server with 28 CPU cores and a terabyte of RAM. You can easily split out the database to it's own server to handle the next few thousand and so forth. 

If you outgrow what you can squeeze out of hardware, you can then start making improvements to the software to have it run more efficiently. You can implement a caching layer in front of your web server. You can restructure your software to allow for multiple web servers and load balancing. You'll be able to grow to a very successful company by growing naturally. If you do end up becoming the next Twitter, you'll have the resources available to you to become massively scalable at that time, when it makes sense. 

StackExchange is a perfect example of this. It's one of the most visited networks on the planet and they've grown over time using modest hardware and expert software development. They also have done it all using MSSQL server and .NET, a combo many would have you believe cannot scale. Back in 2010 they had just 6 basic web servers and 2 database servers powering the entire operation. Today they've grown to 25 servers and are using some very clever caching techniques but the servers run with almost no load!

More important than scalability is validation and success of your business. Before you spend unnecessary amounts of money on a massively scalable system, make sure you have something a massive amount of people are going to use. Your dollars are probably better spent gaining those users instead.

ITWorld DealPost: The best in tech deals and discounts.
Shop Tech Products at Amazon