In the corporate world the money in software projects has largely been in the licenses. However, in the Open Source world there are no licenses. What a cost saving! I can just get my project built, put it in the cloud and there’s no more money down.
A customer called today and told me their hosting provider was shutting down tomorrow. To their credit they had initiated their migration plan three weeks ago. The only problem was that their future hosting company dropped the ball yesterday and said they were stuck. The real problem was that they tried to solve the problem thinking like a PHP expert rather than a Rails one.
One of the problems with Open Source Software is that there is as much fragmentation in the Open Source world as there is in the proprietary world. The big difference though is that it only costs you time to get an understanding of a specific Open Source technology. In our story above the operations people had well understood what it took to deploy a PHP application. PHP was the replacement language for Perl on the internet and powers web applications such as Wordpress and Drupal, and a form of PHP even still exists in Facebook. Stack Overflow recently conducted a survey of 50,000 developers and 35% were using PHP as their main tool. While PHP is still very popular, there are other languages and frameworks out there, so if your hosting team don’t know about a specific language and framework they need to deploy you will save a lot of pain by calling in the experts.
The second thing to understand is that the operating system and supporting technologies on your servers are continually being improved and patched (by patched I mean a security flaw has been discovered and rectified). If you were to develop your application and leave it running unattended for a couple of years, then one day when you need to deploy your application onto upgraded servers you will find that many parts of your application will break and code will need to be changed. In addition, the resources to upgrade your servers often become harder to find as time goes by so it is better to upgrade your code and infrastructure continually rather than once every few years. The cost would be in the hundreds if not thousands to upgrade an application that hasn’t been receiving regular maintenance for longer than two years.
Lastly, my final piece of advice would be to host with the large server companies. Amazon AWS currently has the majority of the cloud server industry but there are some other large companies that offer “Platform as a Service”; a couple of examples in the Ruby on Rails space would be Heroku and Engine Yard. “Platform as a Service” means that someone other than yourself provides the infrastructure for you (for a fee) and that you can control your servers and databases using a graphical interface rather than typing in complex commands. There are however a lot of things that the Platform as a Service companies can’t help you with, especially where your application interfaces with the platform itself. reinteractive has a solution for Ruby on Rails but I can’t comment on other open source frameworks.
Conclusion
There are a number of things that you can do to prevent your application from rotting on the servers it was first built for:
- Understand that every Open Source technology has its own ecosystem and you can have experts help you out if you have a short timeline, rather than relying on the hosting provider.
- Keep your supporting software that helps to run your application up-to-date and regularly patched to prevent a huge cost when it inevitably comes time to migrate to newer servers.
- Lastly, please don’t host your app with small players if your business relies on your application working and performing well.