This post originated from an RSS feed registered with .NET Buzz
by Udi Dahan.
Original Post: Ultra scalability for the web
Feed Title: Udi Dahan - The Software Simplist
Feed URL: http://feeds.feedburner.com/UdiDahan-TheSoftwareSimplist
Feed Description: I am a software simplist. I make this beast of architecting, analysing, designing, developing, testing, managing, deploying software systems simple.
This blog is about how I do it.
On one of the discussion lists I linger in, the following question was raised:
I have a client who wants me to use nHibernate for a ASP.NET Portal we are creating with Visual Basic 2005. Approx. 250,000 users, as many as 40,000 actives at the same time. Does nHibernate introduce significant overhead? Are there known issues?
I figure that the answer I gave there would be valuable to a larger audience, so here it is:
1. No, NHibernate does not introduce significant overhead.
2. Not that that will make any difference for the load described above.
Unless you architect for that level of load, any data access strategy will require very expensive hardware. For example, what better way to handle load than preventing the users from hitting your servers at all? This can be done by generating xml files for data, which are referenced by html pages statically. Look and feel should be done by separate css files. Thereâs nothing better than using the entire internet as your cache. Manage the expiration of these xml files from the caches of ISPs all over the web. This kind of solution will also enable you to expand your site to Akamai networks much easier, further increasing scalability.
NHibernate gives you the ability to write object oriented business logic in a persistent environment. If your site is light on logic, you might not get much benefit from using an O/R mapper. This has nothing to do with handling very high levels of load.
--
While the internet places inherent constraints on our ability to develop certain solutions, at the same time we can take advantage of "the rules of the net" - how content is transferred, to handle the highest levels of load. You would be hard pressed to come up with a better, more resilient solution if you were to architect it from scratch.