Sunday, February 28, 2010

GoDaddy Shared Hosting Issues

I recently put up a site for a friend.  The site is pretty simple.  My friend has spent years developing a predictive model for volatility based on the VIX index.  Essentially it predicts spikes in volatility.  Professional traders can use this information to increase returns on investments or to adjust their portfolios.

The intent of the site is simple.  Allow a way for people to subscribe to the newsletter, and allow my friend to issue newsletters notifying the subscribers that that the algorithm has predicted a change.

Being a native Java guy, I chose to use Java to develop the site.  Since my friend had registered a domain with GoDaddy, I told him to just get the GoDaddy shared Tomcat hosting service.  I now believe that was a mistake.  Here are some of the things I've found along the way:

  • Although GoDaddy advertises that they support Java 1.5, the JSP compiler defaults to 1.4.  You have to specify an alternate compiler for your JSP files in web.xml if you want to use 1.5
  • You cannot restart your container.  The server recycles once a night, that's it.  This makes deployments of code/upgrades difficult, since changes to .jar files will only be recognized the next day.
  • While GoDaddy claims that you can use any Java library, just drop the .jar file into WEB-INF/lib/ and the changes will be picked up when the server restarts.  This is not the case.  I originally implemented the site using Hibernate, but when I deployed to the server on GoDaddy, I received an issue when trying to read in the configuration file.  When I submitted a support request, the response was simply, "We don't support Hibernate".
  • There doesn't seem to be any way to view Tomcat error files.  When I turned on error logging, it showed me the APACHE logs, but not the Tomcat logs.  I had to roll my own logging system in the end.
To be honest, the undocumented lack of support for libraries is the most disturbing thing I found.  When I pressed the support team for more information, like a list of unsupported libraries, they simply responded that it would be infeasible to keep one.  I understand that they can't list every library that isn't supported, but a list of common libraries would certainly be feasible.  In addition, they need to restate their claim that you can use any library as well, since that is misleading.

The net result of this rather poor policy is that if you use any library in your application, you will not be guaranteed that it will work until you try to deploy it.  That's a broken model to me.

In the future, I'm going to recommend that my clients do NOT use GoDaddy, especially their shared hosting.  I will be finding a way to migrate this friend off their service as well.