High availability application RRS feed

  • Question

  • Hi Everybody!

                  We are starting a project to develop a mission-critical web application (therefore, availability,reliability and scalability are major concerns). We are thinking about using a SOA approach, using WCF services hosted on IIS (using a cluster in order to provide the required availability, scalability and reliability).

                  My questions are?

                  1) I've seen that WCF can be hosted on IIS or as Windows Services. I'd like to know the advantages and disatvantages of each approach (considering specially performance and development/deploy effort issues)

                  2) Is there any reference we could use in order to estimate the hardware requirements to support the solution (the information we can use to estimate it are ammount of data/time (based on the number of new entities generated by the system/month, the estimated size of each entity and number of access/entity) and number of simultaneous accesses).


    Thanks a lot!




    Wednesday, January 24, 2007 9:41 PM

All replies


    A windows cluster delivers availability but not scaleability. I would expect with IIS that you would use a load balanced farm set up.

    Thursday, January 25, 2007 2:57 PM
  • Hi Ben,

          When you talk about clustering are you refering to a Failover cluster? Sorry if I've used the wrong terminology.

          We are thinking about using the following approach: a set of servers using a NLB cluster (is that the farm you referred to?) as the "web/presentation" cluster (where the presentation layer shall be hosted) another cluster for application layer (the WCF services - that one we are considering using a CLB or NLB cluster ) and a last one for data storage (DB servers running SQLServer). Maybe we need to merge the application and web ones due to customer budget limitations.

             Is it a good approach? If so, how could I estimate the hardware requirements needed (processor, memory, disc etc.)?


    Thanks a lot,








    Thursday, January 25, 2007 5:41 PM

    I think you want a NLB Farm for the Web and App tier and Cluster for the DB tier.

    Obviously I don't know what your business volumes are, but unless there are security constraints I would tend to merge Web and App physcial tiers, but keep them logically seperate.  That way you minimise the amout of effort that is going into 'marshalling' data between the tiers.  It also reduces your cost to scale out - you only need to add one box not two.  Sometime people don't like this because it means you front end web server has the security privelges and network access to the main database, but if you can live with that go for merged.

    Every app is different in performance terms. So you need to test it and to do that you will need Volumes i.e. how many people are expected to hit your servers, at what times of the day, and what will they be doing and you will also need a system wide Performance Non-Functional requirement and function specific Quality Attributes.  If the business can't tell you what the volumes are then you can't tell them if the system will run the required load!

    e.g. Performance NFR "When the solution is receiving 38 request per second, the solution will, 98% of the time, respond within 5 seconds from the last bytes of request received to the first byte of response" - note this is measurable by looking at your web logs!  This usually ends up as part of the support contract so its important to make it a SMART deliverable. Never say 100% to anything!

    Quality Attributes would be listed along side specific functions "When the users adds a product to their basket the basket will be visibly updated within 3 seconds".

    You need to define a Performance Assurance Strategy, which says what you are going to do to ensure you hit the Performance NFR. - i.e. what testing etc you have done to ensure compliance, and how you used the testing to select the H/W.

    So set up some test servers, 1 web/app and one DB and chuck some loads at them (theres and Add in to VS to do this or Load Runner is very good http://www.mercury.com/us/products/performance-center/loadrunner/ ) see how they perform, and scale up from there.  All in all its alot of work!

    Monday, January 29, 2007 11:23 AM