Here is my question: say you have a pet project and you would like to put it live for a couple of friends to get feedback or for a very private alpha. What solution do you use?
I’ve been thinking about this for the last couple of days and even if I don’t have an answer, here is what I’ve looked at.
Google App Engine
Considering you have already got your Google App Engine account, then it looks like for a pet project/private alpha this option will be free. But you’ll have to conform to a set of very strong constraints:
- the app must be developed in Python
- you don’t have access to a real filesystem
- you don’t have any scheduling capabilities
- your app must be developed using the framework from Google. More or less – and this is not intended to start a flamewar – your app is locked in
Now, what I think is quite limiting with Google App Engine is the lack of any scheduling capabilities. Considering you can overpass all the other constraints, this one seems to me a very important missing part.
The 2nd option I’ve been looking at is the Amazon cloud offering. The clear advantage over Google App Engine is the fact that you get a real OS where you can install everything you’d like. So, even a multi-language environment is ok.
The downside is evidently the fact that you have to take care yourself of the installation, upgrades, etc. Secondly, afaik, the Amazon EC2 is not yet offering a persistent local filesystem — it was announced for later this year — and so you’ll have to set up a custom solution for backing up your FS on Amazon S3. This is a constraint also for using normal relational databases. For dedicated persistence, Amazon has the SimpleDB, but this will also lead to have a locked-in-like app.
You can probably always go for the traditional solutions of using either a self-hosted server or use an ISP hosting. For these the pros and cons are quite clear and so I will not spend time on them.
As you can probably read between the lines, I’d prefer:
- to have an environment that would allow me to use different language environments (Java, Python, Php, Ruby, etc.)
- not be required to create a framework locked-in application
I would really appreciate if you can share what is your experience and what solution are you using.
Emphasizing the pros/cons that made you pick your choice will also help me a lot.
If you are interested in the Romanian online market (and you read in Romanian), you can follow my other blog: Koolapp: web-ul viitorului. web de calitate
4 responses to “Where do you put your web application?”
It’s pretty simple if you avoid the hype.
Get a Linux-based virtual private server at a company like Westhost. You can easily configure Apache to support hundreds of virtual hosts on such a system, so long as the overall traffic isn’t that great. Cost will be about $30 a month, amortized by all your sites. A system like that can support a site that makes 10-100 times that much in ad revenue, so you’ll be able to move to a real dedicated server when you’re ready.
I’ve got a script on my system that lets me add a new vhost in less than a minute. I just set it up on my DNS server, wait for the change to propagate, and I’ve got a new site.
I can advise you that if you’re interested in developing a number of small projects, PHP works a lot better than Ruby, Python and Java. The “shared nothing” architecture of PHP means you can start a new PHP application by just dropping .php files in a new virtual host. Ruby, Python and Java all keep global state in the application server, which often means that you need to run multiple app servers to support multiple applications.
Thanks a lot Paul. By looking at the Westhost I am seeing that they are using VPS. My question would be what do you really get for this VPS. I do see that basically you have access to different language envs, which is definitely a plus and the prices seems quite good.
I think Amazon announced their local filestore, a distributed filesystem available across any ec2 instance actually, a few weeks ago.
In fact Amazon announced it months ago, but it was released just yesterday ;-).