Thursday, May 22, 2008

Little Brothers Website Launches

As I blogged about a few months ago, I was a part of a local development competition called the F1 Web Challenge. The competition was held back in March and was a 24 hour competition where 10 teams of 8 technologists worked together to build a website for a different non-profit. Our team was Ruby.MN and our non-profit was Little Brother's Friends of the Elderly.

After the 24 hours was completed, we did have a "functioning website". However, there were still some things that had yet to be completed in terms of bugs, a few minor features and the "D" word.. deployment. I ended up taking on this task of working with Kathleen from Little Brother's.

Tasks

1. Setup and configure the website on a place that would host if for them.
2. Work on fixing any bugs that we outstanding in the code.
3. Working with other developers on the team to complete the implementation of some of the features.
4. Keep a central point of communication for people at the non-profit to deal with the changes on the website until we went live.

Well, I'm safe to say that we've finally made it!

http://www.littlebrothersmn.org


Over the past 2+ months, it's been a little slow going as I've been the main person taking on the responsibility along with running my software business. As it's been for a non-profit, this has all been work that doesn't pay me anything. I do wish to say that I tremendously appreciate the help that I have gotten since the competition from a few of the members of our team. Even though I took on most of the work, launching the site myself, there is no way I would have been able to get it completed without help from a few key people. Thank you.

Configuration/Deployment

A few things I wanted to note in my configuration and deployment.

Setting up the hosting was not a trivial as one would think. First, LBFE had an existing website that we could not take down as it's accepting online donations. It was hosted on GoDaddy and actually involved an SSL certificate, so the new site had to support SSL for online donations. GoDaddy likes to say that they support Ruby on Rails, but at last check that support Rails 1.1. That was not going to work for us.

VISI.com offered to host the site for 1 year for free as being part of the competition. After communicating with their support staff however, I got the feeling that they had never hosted a Ruby on Rails application. Hosting Rails is actually very easy, but we decided maybe we shouldn't be the guinea pig for VISI. Also, we had no information as to how expensive the costs might be next year. I think VISI is a great company for large companies, hosting large applications. They do good work, but they are not cheap. Thus, I would assume they would be out of the price range for your typical non-profit.

I have used RailsPlayground before in development and it was suggested by another person on the team that we look at using them. For ease of use and expertise on running Rails, we decided to go with RailsPlayground. I setup a "test" subdomain for us to use to test, since their "www" site should not be disturbed, get a new SSL certificate created at RailsPlayground (you can't transfer SSL certificates), and configure their DNS to make this all work, while not upsetting their email and existing website. Pretty basic stuff that I have done in my business, so it wasn't technically difficult, just time consuming.

Hosting Specifics

1. RailsPlayground supports using Mongrel, so we setup Mongrel to serve the site through Apache proxy.
2. RailsPlayground offers shell access, so I setup capistrano for the deployments.
3. Setup TRAC if needed for the bug repository and WIKI if in the future LBFE needs to submit bugs or create documentation.
4. I setup Subversion to manage all of our source code.
5. Created a nightly cron job to dump the database and backup all of the binary resources for the site.
6. Using Montastic to monitor the uptime of the website.
7. Made all of the DNS changes and worked with support to get the SSL certificate installed and working properly.

Just one note on RailsPlayground: I was a little weary of using them since I have actually used their services for a few years now for quick development applications on public facing sites that I didn't want to setup on my own Linux Virtual Server. To be honest, from my past experience I would not host a large scale production application with them. Their servers seem bogged down and run slow (even using mongrel and a few users) and I have had issues with major outages in the past. However, as it is with all virtual hosts, it depends on the machine you site is on. or more importantly who is bogging down the server. I can say though I have been pleasantly surprised running the LBFE site through them. In the past few months, the site has responded well and I been very happy with their lack of downtime.

Overall, this has been a great experience I think for everyone involved and I'm very happy with the outcome. I think it's a win/win for everyone. I've made some new friends through the process, learned more about Ruby on Rails development while working with some very bright teammates and a non-profit got a great looking new website out of the deal. Not a bad deal!