What is most important for creating the architecture of a Web Application? Scalability, Maintainability or Perfomance?

921 Views Asked by At

I am currently about to redesign a running, special purpose and German language social networking web application. The current version is so messed up that we decided to start from scratch. I don't want to run into all the problems again so I have been thinking and reading a lot about:

  1. Scalability
  2. Maintainability of the code
  3. Performance

I argued in a blogpost that for the architecture of our system I would use exactly the order of importance like posted above meaning:

scalability >> maintainability >> performance

Those results where kind of surprising to me since I always thought performance is key essential for creating scalable systems.

  1. What are your thoughts on the importance of these three factors?
  2. I also argued that for achieving them one needs to do careful planning and design beforehead. Do you have any other must have advices?
2

There are 2 best solutions below

0
On

I believe it should be

maintainability >> scalability >> performance

Scalability / Performance

For me scalability is a special kind of performance problem. Performance also include response time. But I would rate scalability as more important as response time. Especially for a social network. But both are kind of close together in this compare.

In general performance problems are something you best deal with if they appear. If you try to optimize your code for a problem you did not encounter you most likely will just waste your time. What you could do, is to simulate user traffic on the page to force performance problems to appear.

Maintainability

Most important for me is maintainability because it is more expensive. There was a post on the stackoverflow blog about that but I can not find it right now. Performance problems can mostly be solved if you just buy better/more hardware and throw it at the problem. Hardware is relatively cheap and constantly dropping in price. Really expensive is coding time of programmers.

0
On

Scalability is a different beast than performance.

Performance is usually measured in how fast an individual request executes. On my local machine with one other user on it, my requests are usually very fast, 10ms or below. Now put that on an externally-facing Internet server with 50,000 concurrent users, and you won't see anywhere near the speeds like that.

Scalability is performance in the aggregate--how well you can support a large number of concurrent requests and still have the system respond in a reasonable amount of time. It's probably going to be the foremost concern in your mind because what good is a social-networking site if only a handful of users can use it at any given time? Your user growth is also probably going to end up exponential, so you need to be in a position where you can easily scale out to more hardware (either in the cloud or your local data center).

If it's a social networking site, I'd rank the items as:

Scalability > Performance > Maintenance