views:

964

answers:

16

(I'll begin by making it clear, I am not a .NET developer and am not tied to any other environment.)

Recently, I heard that the London Stock Exchange went down for an entire day. I've also heard that the software was written in .NET. Up to this point they would experience performance hits on busy days. People seem to be blaming .NET.

I don't want to debate the story, but it brought to mind the question of just how does .NET scale? How big is too big for .NET?

+11  A: 

Unfortunately, there are so many other issues that could cause a project to go down as it scales, that you have a lot to wade through before you can get down to a framework to blame. And unless you can see and thoroughly analyze the source code, it would be difficult to say what the root cause was. I'd be willing to bet it wasn't the framework.

And no, I don't work with .NET on a daily basis.

Brian Warshaw
A: 

Why would .NET have any limitations on size that other platforms wouldn't have? I cannot imagine any situation where you are going to get 'too big' for .NET. However, you should really specify whether you are talking about a .NET winforms application or ASP.NET as well as other relevant factors. This question is just too vague to ever answer in detail.

The fact your name is 'Dr Unix' does imply some bias, btw.

Geoffrey Chetwood
The fact that his name is 'Dr Unix' should imply, if anything at all, that he is well experienced in Unix, but its a stretch to think that implies any bias for or against .NET. Just my 2 cents.
Brian Ensink
Dr.UNix asking about scalability of the .NET providing a negative exemple is a biased thing. No matter how you put it, Brian.
Andrei Rinea
@Andrei: Agreed. Thanks.
Geoffrey Chetwood
+6  A: 

Many big sites like MySpace, Dell.com runs on asp.net. Also, check out this MSDN article which gives a good perspective from experts.

Gulzar
A: 

Done right, the architecture offloads most transient state onto the client which makes clustering easier, which makes it surprisingly scalable. So it's an issue of the System as a whole as opposed to ASP.NET directly at that point.

My 2 cents.

Allain Lalonde
A: 

Well I think this site is on a .net framework. As well the Microsoft site(s) are built on it. So I think that if done properly then a .net site will scale. Look at some of the comments Jeff has made about this site and the issues tend to come to coding error or architecture problems.

osp70
+19  A: 

Honestly, I think it boils down to code optimization, apart from just the infrastructure.

In StackOverflow Podcast 19, Jeff discussed about how they had to tweak SQL Server to handle the kinds of loads StackOverflow has; notice that it was not .NET that needed tweaking here.

One also has to note that MySpace.com, one of the most massive social networks out there, runs on ASP.NET.

The MySpace use of ASP.NET alone is a testament to its scalability. It will boil down to how developers will write their applications in such a way that best leverages that capability.

Jon Limjap
*Cough* I am not sure I would defend anything using MySpace as an example.
Geoffrey Chetwood
*Cough* MySpace may suck as a place for social networking (as they say, it is the trailer park of social networks), but it *does* have a lot of traffic and seems to handle it quite well, regardless of what you think of it.
Jason Bunting
@RichB, I'm using MySpace just for the sake of its sheer traffic, and nothing else :p Get some cough syrup!
Jon Limjap
A: 

Perhaps it was the transaction volume that brought down the exchange.

While many examples given thus far are good, they are just large websites. (You hate me for saying "just") They dole out pages and the occasional application (ie. scrabulous) to users. A stock exchange processes buys/sells and matches buyers/sellers. That would be a few orders of magnitude more work for app servers.

I could see the database(s) falling down though.

Dr. UNIX
MySpace has people adding and reading rapidly all day long. It isn't just a "serve pages and scrabulous" application.
Brian Warshaw
Well, .NET is well suited for HTP environments. The reason why the exchange went down should not be blamed on .NET... rather blame it on the architecture. However from my knowledge the architecture is messaging based so it should scale well when adding more nodes.
flalar
+2  A: 

Dot Net scales well. We have clusters of servers running IIS server and asp.net web sites and applications and when our user load increases we can add servers (easily) to increase capacity. This happens during certain events and the .net architecture scalability has not let us down.

I would hazard a guess (as the others have) that this was not a .net issue.

Guy
+2  A: 

Here's a big fat book for you to read on this topic:

Improving .NET Application Performance and Scalability (Microsoft Press)

Sameer Alibhai
This is a really good book. It ought to be taught at university.
Peter Wone
+3  A: 

You can write bad code that fails to scale in any language.

.Net is quite capable at scaling to any size of system but, like with any other tech stack, you have to build the system with scaling in mind.

The LSE went down on the worst possible day, but whatever the reason I doubt it was the underlying stack that was the issue. I suspect this is a case of poor workmen blaming their tools.

Keith
+5  A: 

Actually the downtime at the LSE had absolutely nothing to do with it's .NET trading platform:

The LSE said the system had been hit by a "connectivity issue" and insisted that the problem did not lie with its flagship TradElect trading platform.

http://www.itworld.com/networking/54760/london-stock-exchange-trading-stops-network-fails

matt b
So someone literally pulled a wire? In that case any technology would have "failed".
Andrei Rinea
+1  A: 

It all boils down to 3 things:

  • How well is the application planned
  • What was the initial scale goal of the person who built it
  • Ongoing work in the pits to improve and scale a solution.

MySpace was mentioned before, it is a know fact they've rewritten their application a few times when they hit a new scaling step (# of users / pageviews / etc). If they've chosen to build the last version to begin with, it would have been too expensive to maintain and wasn't cost effective - scalability should be based on current position and the next scale goal.

One last thing - although it's often considered evasive, solid stress testing can give you a good picture on how your application deals with load you're aiming at before your users experience it and disaster strikes.

joeysim
A: 

As other people said -- it is not a matter of platform.

What matters is architecture of your application - load balancing, state management, partitioning etc... These are not platform specific.

LeJeune
A: 

It really bothers me when people say .NET is a platform of choice because 'its scalable', its no more or less scalable than any other platform: PHP, ColdFusion, JSP or native compiled apps with C++/Delphi etc... Scalability isn't a feature of the framework, it's a feature of the application design.

MySpace is certainly no advocate for scalability, instead look at the technology behind Google search, or the SETI@home project.

.NET is actually my least favorite platform to work with because its gone too far in trying to simplify software, so much so that there are things that I want to do that it can't, and so trying to overcome .NET limitations wastes time where it would have been easily and quickly achieved with C++ or PHP. .NET is to software development what duplo bricks are to mechanical engineering - no self respecting mechanical engineer would want to be constrained to using only inch wide square blocks.

If an application needs to be scalable you need to think about what data needs to be shared between servers, and what is the minimum data required for the application to run and serve its purpose. The need to scale an application can often be avoided by having super-efficient code in the first place (eg. not .NET or Java), but this generally requires a basic understanding of assembly at least and how your chosen language is translated to machine code.

John W
I somewhat disagree on scalability being a feature of the framework versus a feature of the application design. A compiled language is going to scale better(well - at least use less resources) than a scripting language, such as PHP. Ruby is super popular right now, but also has some *potential* scalability issues as it is single threaded. I'm sure I'll get jumped on for this one, as there are of course ways to deal with this.
NickAtuShip
A framework may provide features which permit scalable applications to be developed - or it may omit such features, and prevent such applications from being developed.
John Saunders
I think you'll find that PHP (despite being scripted) can outperform ASP.NET in achieving the same output because ASP.NET has a very expensive overhead of generating a server-side DOM for every page rendered. Unbiased benchmarks are hard to come across so I can only suggest you test it for yourself for hard evidence - I did. Don't get me wrong, my language of choice is always C++ for performance, PHP has it's place and so does .NET. The point is that many people advocate .NET on false beliefs; that .NET is more scalable, or better performing than anyting else.
John W
A: 

I run a relatively large asp.net website, and have found it to scale excellently. Of course much of this I attribute to having some great tools to diagnose and fix bottlenecks in the code. I'd venture to guess that coding issues cause 99.99% of issues that people have in any framework.

NickAtuShip
A: 

Later news...

"TradElect, the group’s trading platform technology that is set to be replaced later this year by software developed by MillenniumIT, the Sri Lankan technology vendor owned by the LSE." ...

http://www.efinancialnews.com/story/2010-09-13/ex-lse-tech-chief-joins-green-investment-company

“This transaction enables the Group to implement a new, more agile, innovative and efficient IT capability for our future business development, as well as running a new cash trading platform which will provide substantially lower latency, significantly higher capacity and improved scalability.” ...

http://www.computerworlduk.com/news/it-business/16590/london-stock-exchange-buys-millennium-it-trading-platform-supplier/

SteJav