I’m going to develop high-available WCF service that should serving client with 99.9% uptime. As you probably guess I need as more information as possible.
So I know here, on stackoverflow, a lot of professionals helping newbies like me 🙂 So it would be so good for me if you point me at good experience on making .NET WCF services.
This service will work with a lot of geographically remoted databases and will provide clients data from them.
Any articles, links, blog/forum posts and personal memories will be very appreciated.
Thanks in advance!
I’m going to develop high-available WCF service that should serving client with 99.9% uptime.
Share
There is not one relevant aspect but several… just some points to consider/keep in mind:
Redundancy
Be it multiple machines running the service in parallel, be it some DNS-based mechanism to help when one machine is down/not reachable… be it different physical locations (Data centers) for the different machines, be it different Backbone connections (ISP)… be it a redundant DB backend (like an Oracle RAC setup) etc.
Security
This must be part of your design from the beginning… you need strong security in the service itself (basic things like checkng all incoming data thoroughly aside) and the runtime environment (like firewalls etc.)
Backup
This part must be well thought through and tested to the fullest extent… there are different technologies which differ for example in how fast you are back up and running etc. – sometimes you need to combine multilple techniques… again: test your worstcase scenario
Monitoring
To be sure what goes on and to react as early as possible you need a good monitoring implementation… this starts from the iron upwards and end inside the service… it should no only check availability but also things like load etc. and configurable alarming… it need to allow for history too… which in turn gives you enough data to know when are the peak hours and/or when to add new machines etc.
Testing
Check your service with any tool available really hard… be it a memory profiler, be it load testing with realisitc scenarios, even with extreme ones…
Scalability
Stateless services usually are better in terms of scalability…
Plans
Very important and usually forgotten or not up2date in my experience… make plans for deployment, rollout/updates, desaster recovery etc. AND most important: test them thoroughly and document them!