Scalable Windows services

Hi,

We have a WIndows Services app with the following layers:
1. DAL
2. BLL
3.Windows Service

To give maximumscalability,availability andperformance for this application, what are steps that we would need to take?

Is it recommended that the Windows Service application be load balanced?

Thanks.
Lakshmi


[408 byte] By [Lakshmi] at [2007-12-25]
# 1
loadbalancing is an option you can consider when you want scalability and performance, this is a nice whitepaper about it: Load-Balanced Cluster. Using MSMQ in a loadbalanced way is also an option, but I don't know if it wil fit your solution.
ClemensReijnen at 2007-9-3 > top of Msdn Tech,Architecture,Architecture General...
# 2

It depends more on what the windows service is doing and how frequently it is starting the process whatever it is intended to do and how long each process take... you also mentioned that it is using DAL and BLL... where is the database? Is it running on the same server (or computer) where the windows service is running or making a connection to the database on a remote computer on the LAN or WAN?

From the windows standpoint, you can use threading for performance and scalability and tune your database (if it is not already tuned)... actually there are a lot of other interdependent components on the windows service worth looking at and not merely the windows service itself.

SVadali at 2007-9-3 > top of Msdn Tech,Architecture,Architecture General...
# 3

There is no one solution to give you "maximum" scalability, availability and performance

it all depends on your usage scenarios - what are your specific goals? in order for load balancing to work your logic sould be context-free (a.k.a. "stateless") and get all its context either on the call or from a database - is your application like that?

Arnon

ArnonRotemGalOz at 2007-9-3 > top of Msdn Tech,Architecture,Architecture General...
# 4

HI,

Thanks for all the replies.

The Windows Services application in reference takes data from DB every 10 minutes and posts to an external Website through a Web service. The amount of data may be very large during peak hours of the day, and the system must perform well even during these hours.

This was the reason for considering Load balancing for the application. Please let me know if there is any other better way of architecting the application.

Thanks.

Lakshmi at 2007-9-3 > top of Msdn Tech,Architecture,Architecture General...
# 5
Lakshmi wrote:

The Windows Services application in reference takes data from DB every 10 minutes and posts to an external Website through a Web service. The amount of data may be very large during peak hours of the day, and the system must perform well even during these hours.

Can you break the data into smaller pieces? do you have enough network bandwidth if you do break it up an transmit in parallel?

What system should perform well? the one that sends database data or other applications that hit the same DB? - in case of the latter if you are using SQL 2005 you can create a database snapshot, this way the service that just reads the data will have its own "private" which wouldn't lock other applications (see this article for example http://www.databasejournal.com/features/mssql/article.php/3524431)

Arnon

ArnonRotemGalOz at 2007-9-3 > top of Msdn Tech,Architecture,Architecture General...
# 6

Also, what do you mean when you say a system should perform well? Should the service complete it's task fast? Or should the website it is posting to have a fast response time? Or should your database have fast response time?

And what is 'good'? What is an acceptable level of performance in any of the above cases?

Performance is realy depending on what you call it.

JonathanvandeVeen at 2007-9-3 > top of Msdn Tech,Architecture,Architecture General...