views:

112

answers:

4

Hi,

I am planning to start a new web application from scratch, but I wonder if I am not obsessing too much over scalability. Should I worry about this since the beginning or is it better to focus on the application itself first and scale later if I happen to be really successful?

+4  A: 

Generally speaking, its premature and distracting to worry about scalability to begin with for several reasons.

Solve a problem when you have a problem.

Worrying about scalability too early tends to delay you doing something for not much gain. Often you don't really understand the performance implications until something is used in the real world.

cletus
"premature optimization" and all that jazz, yeah. Though there is no such thing as "premature security", mind you.
jae
@jae: security != scalability though.
cletus
But poor architectural decisions can inhibit scalability. Thus it's important to at least have it in mind and understand the implications of the decisions you make.
Kent Boogaart
@Kent: the danger, particularly when starting a new project, is that you spend all your time designing and developing for functionality, performance "problems" and scenarios that don't and won't exist. You can also spend a lot of time on code that you're just going to throw away anyway once you better understand the problem.
cletus
Even poor architectural decisions which limit scalability, should not be addressed if there is no reason to address them.
MarkR
+3  A: 

Define yourself some goals such as for example the number of users per second you would like your application to be able to serve in the beginning. Then develop the application and perform load testing to make sure your goal is met. If it is, you could launch it to public and see what happens.

Darin Dimitrov
Exactly. Why make wild guesses when you can estimate, and why estimate when you can measure? The "premature optimization" argument only applies when the optimization is not necessary. Figure out how much you need it to scale, and then design for that scale.
Aaronaught
I like this answer as well. Focus on launching and see if you can float at all before you make it perfect. Set up a test environment to check that you can handle a sensible load and forget 1000x scalability for now.
Christian
A: 

For a web application that doesn't have an existing large user base, functionality is definitely more important than scalability at the beginning. It's not that you shouldn't use best practices that also help scalability -- it's just that you shouldn't make exceptions to some best practices because they hurt scalability. You can just concentrate on correctness and proper programming, then if your app begins to show issues with scalability, you can fix these as necessary.

Now if you're Google, and your coming out with Gmail or Google Maps, I think scalability should be a top priority from the start. If you're almost positive sure that millions of people are going to use it, you should design (and definitely test) with that in mind.

Kaleb Brasee
+2  A: 

Right now you should be focussing on the presentation, functionality and security of your application. Scalability comes when you need it -- but do yourself a favor and write clean code to make it easier to scale your application in the future. Instead of thinking about your design in terms of scalability, think of it in terms of modularity and reuseability so that when the time comes it won't be horribly difficult to scale the busy portions of your app.

Carson Myers