« Washington State Quarter | Main | Watson and Dr. Watson »

February 26, 2007

Ease of Deploying Web Applications

Microsoft recently had a planning forum for the next version of Windows, where various people came and talked to the team about issues they should keep an eye on. I'm not actually in Windows, but I went to many of the sessions, looking for free eats (which come to think of it, there weren't any of).

In one of the talks, someone was comparing traditional standalone application development with web development, and listing the pros and cons of each. One of the items he listed as an advantage for web development was "ease of deployment".

Now, I think I know what he meant; he meant that IF you already have a website all set up, it's pretty easy to roll out your new application, and pretty easy to do updates. And you don't have to worry about old buggy or incompatible versions floating around out there.

BUT, to me there seems to be a big hurdle to get over first. If I write a standalone .exe, sure I may not be able to get anyone to use it, but I can pretty easily slap it up on a server somewhere and invite people to download it. If I want to deploy a web app, I need a public web server to deploy it on; not just a place to store a binary, which I can find easily, but a place that will actually let me run the database I need, and run the web server and application, and debug the thing when it crashes, and restart it when it needs to be restarted.

So then I was wondering, are there places out there that will do that for you? Let's say I get my little web app working perfectly on my development machine, running the database/web server/etc on the same box I am running the browser on. Now I want to slap it up in public. Can I do this easily/cheaply? I asked this question of the speaker, and he admitted (ba-rump) that he wasn't a developer, then proceeded to misunderstand the question as relating to the development of the app, not the deployment. He pointed me at dev.live.com, but this seems more like MSDN for the web set.

I basically don't know the answer to this; maybe one of my readers (or both of them) do. Someone said they thought you could develop a web app under Visual Studio and then click a button to publish it to some magic place in the cloud that Microsoft maintains. In my personal case, I already have a website (this one) which runs a database-backed Perl web app (Movable Type), and I know the place that hosts it has all kinds of Perl extensions loaded, so I could at least hack up my own Perl web app. But is there some general free solution out there?

Posted by AdamBa at February 26, 2007 10:36 PM

Trackback Pings

TrackBack URL for this entry:
http://proudlyserving.com/cgi-bin/mt-tb.cgi/558

Comments

Adam - I think you're mixing easy of development with easy of 'end-user' deployment. I agree with you that developing an .exe and publishing it for download is easy, thanks to the excellent dev tools we have for app development, but deploying the .exe to the end user is still difficult. The end user has find your download location, click on a link, get past the warning dialogs displayed by their browser and OS and then download the .exe and run it. It will run assuming that they have all the libraries you used, are running an OS you supported and have adequate privilages on the machine they're trying to run this on.
Compare this to the web app experience where they only need to get to the URL you pointed them to and the app is ready to use.

Posted by: UmeshU at February 27, 2007 09:58 AM

That is certainly true. But before your users can get to that, there is a hump that the developer has to get over, which is making it *possible* for the end user to deploy it. This seems harder for a web application. Even writing a proper setup for a standalone app (to handle libraries, OS checks, privileges, dependencies, etc) seems simpler than the web site setup because it is something you can just code up on your machine and be done.

- adam

Posted by: Adam Barr at February 27, 2007 01:43 PM

I think that the 'ease of deployment' advantage relates more to departmental or enterprise applications comparing 1st gen Client server with n-tier web apps.

To massively over-generalise, if a departmental or enterprise c/s app is upgraded the IT Dept upgrades the database, and all end users MUST upgrade their client modules. Although there is central network admin software available that can do this, I have seen situations where it is an end user task, and even worse where some unlucky Tech Support guy(s) install the patch manually on each client PC. Bit of a job for 100's or 1000's of users.

If it is a Web App then IT just upgrades the DB and App server, and the users just turn on their PC's and browse to the new version of the App.

Posted by: Chris H at March 1, 2007 03:59 AM

There are a fairly large number of inexpensive web hosting servers available. Each offers different 'stacks' of web app tools - databases, scripting languages, hosting operating systems and so on. As an example see:
Rack Space
Neospire
or 1 & 1
So yes, I can put a web application up fairly quickly and cheaply - without requiring the client PC to install additional software. Is this what you are talking about?

Posted by: Ed Dale at March 1, 2007 02:45 PM

I just did this a few months ago. I bought a domain name, bought a hosting package with Network Solutions, wrote an ASP.NET app in Visual Studio 2005, and chose the 'Website => Copy website' menu item. I entered the FTP information given me by the hosting plan and copied it up. It took a couple of days for the DNS to get set up, but my actual work to get the site running was only a few hours. I was surprised at how straightforward it was.

Posted by: Tom at March 3, 2007 11:42 PM