Hi Param
1. I forgot to mention I do have a standby database server for failover. The
only thing is that it is a cold standby. We are running Standard Edition.
Currently we cannot afford EE.
Hidden secret: if you can get your hands on the SQL Server SDK from SQL
Server 6.5, there is a little utility in there for "log shipping." It
continues to work under Windows 2000, and it will work just fine for
Standard Edition. This gives you an ability to have a "warm" standby
(manual effort to restart, but restart within 5 minutes). Log Shipping is
built in to SQL Server 2000 EE... basically the same stuff but with much
better U/I... but if you are on the cheap, this will do.
2. We use Windows Load Balancing between the 2 webservers. They are single
CPU with 1GB RAM. I am planning on adding 1GB more of RAM. Unfortunately I
do not have a budget for a 3rd box and a load balancer.
Depending on how political your organization is, it is often better to ask
for hardware and get the request shot down... that way when it turns out
that your hardware is not sufficient, you can say "not my fault."
Regardless, the cost of one more web server and a load balancer is not that
high. (under 30K total). You could lose customers if the site isn't fast
enough, right? What's the value of those customers? Anyway: you probably
already know the arguments.
4. I can get away with realtime modifications after 10, so I can keep it
simple for now.
Then you can simply stage a change on your test machine and when it is time
to go live, make the change in the middle of the night. No need for
pluggable bits (good for you... time is of the essence).
5. I know the cost of marshalling is high. I was coming from a "code
re-usability" / plug-n-play standpoint. If tomorrow I need to expose an
interface to an external partner I can simply write a web service layer over
the business logic/data layer to exchange data? OR if the growth is
tremendous then I can go get servers that will just run the middle tier?
That depends on the amount of use that interface will get. If your design
is scalable, you can put your app, with DLLs, on any web server without
regard to other web servers. If so, then there will be no problem with
putting the same DLLs on another machine with a different interface (web
services as opposed to ASP.NET). If the interface is not being widely used,
put it on BOTH web servers and balance it, just like a regular web site.
I come from the good old days of COM/COM+ where MS was pushing the whole
n-tier philosophy. Does the same apply to .net 1.1 and the upcoming 2.0?
Still applies, but there will be much more work done in Longhorn to bring
this to a much tighter reality. For now, you don't gain anything from that
approach, so simply distribute your DLLs to each machine. You can still run
them in Enterprise Services if you want to manage security more tightly, or
if you want better transactional support for SQL.
6. Talking about server 2003, we just recently upgraded a few of our apps
from 2000 to 2003 and have begun to see significant slow page load &
response times. Most of our sites run over SSL and we cant seem to find the
problem. Same hardware. Our network guys are working on it but havent struck
gold as yet. From reading various posts on these NGs it seems 2003 has some
inherent performance issues with IIS
Most common reason is running IIS 6 in IIS 5 Compatibility mode. Some of
your apps will stop working when you switch this off, so be prepared for the
possibility that you may need to rewrite some bits, but when you switch to
full IIS 6, it should run much faster.
Hope this helps,
--- Nick