Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

When creating a new startup related to a web application, how to choose a hosting provider ?

Assuming the code of the web application is oriented DDDD (Distributed Domain Driven Development) to handle large deployment scenario, the idea is to avoid too much cost for hosting.

Basically, the launch of the web app, with its very users will be able to fit on a "single" box (DB + APP), maybe two for redundancy. Eventually the apps will grows progressively to more and more users (I hope:)). How can I choose wisely the hosting ?

Today, I see three options :

  • hosting ourself : not actually an option today as it requires a lot of administrative skills and related task
  • hosting on virtual/dedicated servers : maybe a good options as virtual dedicated hosting is quite cheap, but I fear this will quickly limit us in term of scalability
  • hosting on cloud (amazon or azure) : probably the best option in the long term, but with a higher cost to start (having to adapt a bit the application, cost of instances)

Does anybody have feedback/advise about such requirements ?

PS: FYI, the web apps will probably be written with ASP.NET MVC as web framework, and Ncqrs+NServiceBus to target the DDDD pattern in a CQRS style

Edit: as a backend, MongoDB is today our probable choice, as NoSQL is marrying well with event-sourcing + CQRS (no need for joins, etc.). However, finding VPS with asp.net AND mongodb can be challenging. I may have to use some traditional RDBMS found on all providers (MS SQL SErver or MySQL)

share|improve this question

closed as off topic by ChrisF Oct 21 '11 at 14:08

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

    
Maybe a cloud application platform is something to look at? –  Martin Ba Oct 21 '11 at 11:03
    
If you think finding a VPS with asp is challenging then you really dont have a server admin and you really aren't ready for setting up a cloud for your service (although i was convince its not hard when you do know how to admin linux). I actually use nginx with fastcgi, mono, xsp (its monos asp.net fastcgi IIRC) running on a debian server. You'll also need to install the debug and runtime symbols if you want meaningful exceptions. Its not very difficult although you may burn a day or two setting up and customizing a server (which is normal) –  acidzombie24 Oct 21 '11 at 12:05
    
I'd say this belongs on webmasters.stackexchange.com, but there's already dozens of hosting questions there, that it would duplicate. –  Cyclops Oct 21 '11 at 14:07
    
I've not migrated this because, as @Cyclops says, it would be massively duplicated on Webmasters. –  ChrisF Oct 21 '11 at 14:09
    
You may want to read this. It mentions how the server has a noticeable pause because of the GC marcgravell.blogspot.com/2011/10/assault-by-gc.html Like my answer mentions, with <10k per second (actually since its using fastcgi maybe it can only handle 5k a second) you can get away with one server After that you'll need something more specialized and chances are you'll add/remove things from your app so a (not full but major) rewrite is highly likely so dont bother spending that much effort. If you do you might as well write it in C++/use fastcgi which is horrible unless you must do that –  acidzombie24 Oct 27 '11 at 18:09

3 Answers 3

up vote 5 down vote accepted

Accoring to this report , the number 1 reason why startups' fail is premature scaling.

Its not a wise solution to spend a lot on scalibility until you have not reached a point where you need it. Scale your application on a 'as per needed' bases. Start small (VPS), keep costs low, monitor your growth and expand as and when you need. Its not difficult to move from a VPS to a dedicated server or into a cloud. Hosting companies help you with this. Also look at my answer here for some added tips on startups.

P.S. Read more about the report online

share|improve this answer
    
Interesting to keep it in mind. Please note I does not want to build the ideal application first, but I don't want to close doors at beginning. Moreover, frameworks I'm targeting to use are nicely build to decouple a lot of thinks. They fit well for simple web apps to large web apps by changing few things –  Steve B Oct 21 '11 at 9:23
1  
@Steve B Your flexible frameworks give you all the more flexibility to start small, keep costs low etc. You wont be really closing door as its easy as I said to move from one hosting to another. On the other hand I would suggest you double check you application architecture /implementaion before hand to make sure moving from a VPS to CLOUD / DEDICATED SERVER won't be a problem. Its smart to analyse risks beforehand. –  Imran Omar Bukhsh Oct 21 '11 at 9:27

This is just my opinion but.... How many users are you expecting? Do you expect to get 100 users hitting the site at the same moment? How about 1000users? or 10k?

nginx can handle 1k-10kusers depending on your machine with very little cpu/ram until it gets up to 10k per user at the same moment. Then cpu will be a bottleneck. Also how complex is your application? Do most pages need lots of processing power? Are you going to convert videos or sound?

I seen a person go viral and got millions of hits on his site. It was on simple VPS. He solved his problem by throwing ONE file (a rather large swf) onto amazon aws and his site coped with it.

If you have 10k users regularly then your site or app will need to be rewritten or changed which is a different ballgame. But thats IF you get that many on a regular basis... I'm pretty sure you'll be fine with a plain VPS if you have someone to set it up (the server, backups and anything you need)

share|improve this answer
    
I'm actually hoping to reach thousands of simultaneous users. I'm planning to write the app to be easily distributed over several servers (with different roles, each role potentially itself working over several boxes). As I said, at start, a single box will host all roles, but when the apps will grows, both in term of content and number of users, the roles will have to be split across different boxes (NServiceBus and eventual consistency are my friends). What I actually want to avoid, is to have high cost for hosting today, but with the ability to grows tomorrow without having to change all –  Steve B Oct 21 '11 at 9:16
    
@SteveB Lets pretend hosting cost isnt an issue. Are you sure you can develop something like this with the tools you know? Might you need to switch to NoSQL? Shard your DB? Will you be adding features as you go? You can probably get away with a server solely for SQL and another for your app(s). SE doesnt need a cloud and it has millions of users... You might want to add features as you go along so maybe you wont want to bother but i am getting to far away from your question. A friend mention cloud is 'easy' when its setup but use VPS first. I think that applies. He assures me it isnt scary. –  acidzombie24 Oct 21 '11 at 9:39
    
see my edit, I take a deep look at MongoDB as it seems to fit well with such architecture. And SE is actually a great source of inspiration (philosophy, technical choices, and some great articles form Jeff Atwood about the developer's sins). At least, I don't want to reinvent the wheel. Just use some widely use concepts, targeted to simplicity AND efficiency AND scalability –  Steve B Oct 21 '11 at 9:51

Here is how you can prevent most dramatic situations:

  • Don't choose one, but at least two.
  • Use the DNS manager of your domain registry (that should be a different company than your hosters).
  • Backup from one to another.
  • If you can afford it, load-balance, fail-over, early
  • Test support early. Don't hesitate to simulate a problem. Support is probably the most important things after reliability.
share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.