SaaS Website Development

david-bann

Active Member
Joined
Aug 11, 2008
Messages
31
Reaction score
8
I am looking at developing a SaaS type of website to serve corporate customers around the world. It will need to be designed as a high availability service, so we can't afford downtime. So my questions are:

Will .Net suffice as the programming language?
Will Windows Server work well?
Which database should I use? (will need to be cluster capable)

Where could I find a software development house that has experience with designing high availability sites?
 
What type of load will the site be under? Most setup's will have a high availability until the load starts getting to much.

I would look at a Linux based option rather as it's clearly going to be dominating the future markets. Also I would expect a local Internet connection to be the bottle neck in the system and failing before you would be able to overload a decent server box..

MYSQL has the ability to be "clustered"
 
Just my opinion, but using something like MySQL is a better option, which even the community or open source edition has a cluster version. I have worked with the MySQL cluster version and its great, relatively simple to setup and configure. Also, if you are planning on developing a complex application that requires some kind of speed, stay away from PHP, its not bad for doing stuff, but if you want decent performance without having to re-write PHP (as facebook have done) then use something like Java.
Also, application servers like Tomcat have built in clustering ability, so if one server goes down, the others stay up. It also has great features like version deployment, so you can deploy new versions with zero downtime.

Disclaimer: Tomcat and MySQL is what we use for our clients, and we have successfully run some pretty large deployments.
 
nosql e.g. couch db... served with node.js

can scale infinitly... ask twitter.
 
It does not matter what language or platform you use, stick to what you know best, unless you want to spend a considerable amount of time mastering something new.
 
High availability is for for all intensive purposes an exercise in architecture - your technology stack is language/OS/data store agnostic. The development house you pick is also irrelevant - if you're really concerned with 100% uptime you need to monitor and administer your architecture in-house. Tools like Rightscale etc. can help, but you still need an engineer on call 24/7. In my opinion, finding good 3rd party support is next to impossible - and very expensive.

MySQL, Postgres, SQL Server, Oracle, etc. all offer replication. Oracle and MS obviously come with support. Postgres and MySQL both have aftermarket support offerings. All have decent tooling.

High availability is an expensive endeavor, but fortunately with the plethora of cloud offerings out there, anyone can have high availability for a fraction of what it used to cost. You can easily (and cheaply) achieve high availability on AWS by deploying on RDS (Oracle, SQL Server or MySQL) with multi-AZ and a couple of EC2 instances running in different AZ's with an Elastic Load Balancer sitting in front. (If you're reliant on session state, you'll need another instance).

If for some reason you are unable to host on AWS, Rackspace or some other cloud provider you'll need a fair sum of money to have redundant hardware setups as well as redundancy across multiple datacentres.

Good luck


I am looking at developing a SaaS type of website to serve corporate customers around the world. It will need to be designed as a high availability service, so we can't afford downtime. So my questions are:

Will .Net suffice as the programming language?
Will Windows Server work well?
Which database should I use? (will need to be cluster capable)

Where could I find a software development house that has experience with designing high availability sites?
 
Also, IMO, there's nothing wrong with using interpreted launguages like PHP as inferred above. As I said, high availability is language agnostic. In terms of performance, you should never do any heavy lifting in an interpreted language - that doesn't mean they shouldn't be used in web development. Facebook uses HipHop primarliy to free up memory on their webservers and maximize the effiency of their webservers (which are memory-bound). The heavy lifting is still written in C - not cross-compiled PHP.
 
Also, application servers like Tomcat have built in clustering ability, so if one server goes down, the others stay up. It also has great features like version deployment, so you can deploy new versions with zero downtime.

tomcat 7's hot deploy is a great feature in theory, but in reality you WILL get OOM permgen errors
 
Top
Sign up to the MyBroadband newsletter
X