I have an aspx website with many pages which accept user input, pull data from a SQL database, do some heavy data processing then finally present the data to the user.
The site is getting bigger and bigger and it is starting to put a lot of stress on the server.
What I want to do is to maybe separate things a bit:
Server-A will host the website, the site will accept input from users and pass those parameters to applications running on Server-B
Server-B will fetch data from SQL, do the heavy data processing, then pass a dataset or datatable object back to the website.
Is this possible?
Sure, this is called an N-Tier Architecture.
The most obvious thing to separate is one database server, tuned to meet the demands of a database (fast disks, lots of RAM) and one or more separate web servers.
You can expand on that by placing an application tier between the web server and the database server. The application tier can accept the user input that was collected in the web tier, interact with the database, do the heavy crunching, and return the result to the web tier. Most typically, you would use Windows Communication Foundation (WCF) to expose the functionality of the application tier to the web server(s). Application servers might often be tuned to have very fast CPU’s and might have slower disks and possibly less memory than database servers, depending on exactly what they need to do. The beauty of this solution is that you can just add more and more identical application servers as the load on your application grows.