I Keep Returning to Debian
April 15, 2011
I have been trying out many different distributions recently (6-12 months). The purposes have been from curious exploration to putting things in enterprise-level production. I have tried, amongst others, RHEL, CentOS, Debian, Ubuntu, Fedora, Mint, and ScientificLinux. And I keep returning to Debian; here’s why.
RHEL, although used at my work for production VoIP telephony systems, costs license and support fees to keep updated. The kinds of systems we run, we need a lot of servers and at some point RHEL becomes cost-prohibitive for a small shop. But we do need RHEL because our application provider only supports RHEL. So we are stuck with no place to go.
Unless, of course, there’s a project like CentOS out there. So we solve the problem of large license costs by using a freely available alternative. Our application provider is happy and our management is happy. But when the need arises to build a home-grown application, say a Django-based web portal, CentOS falls short on the latest and greatest. Of course, we don’t expect RHEL or CentOS to be a fit for all projects. So now the search continues.
In a bid to remain consistent, we tried using Fedora. It does give us the latest and greatest so we can build our shiny new applications and deploy on it. This works great for now but we want some semblance of stability once the application is deployed. We cannot afford to keep updating Fedora to the latest and greatest. The dilemma, then, is that during development we need the latest versions of everything but once we put this in production, we don’t want to have to keep pace with the changes.
How about Ubuntu LTS? Of course, we are now diverging from the RHEL platform into new territories. We get the latest and greatest during development and stability during deployment. And once again there’s a roadblock. If you start with the latest LTS release, it is already a year old. So any project you start now is not exactly using the latest stuff. By the time you are ready to deploy, it might be six or eight months from now, closer to the next LTS release. Of course, things are not always perfect and this might be good enough for applications that need to maintained as-is for the mid-term, say 2-3 years.
I, on the other hand, wanted to explore Debian. One thing I learned is that no matter what time you start a project, you will always have two options: either to start with the last stable release for any applications not requiring the latest and greatest, or start with the current testing releases. I opt for the testing releases because by the time I am done, I will be closer to the next stable release and further from the last stable release. When I deploy, there is a period of uncertainty where there are changes still being made.
To counter this, create a dev/test platform to keep pace with the latest updates (called dev1), a dev/test platform matching the current versions running on production system (called dev2), and a production system. Test your application on dev1 after updating your OS, etc., and fix all broken things. Then deploy your application on dev2 and test. Update OS, etc., as required and test again. If everything is fine, upgrade production and deploy your application.
By not using RHEL, CentOS, Fedora, and Ubuntu, I get, for my projects, a little bit of future-proofing while also getting great stability during deployment. Another thing I love about Debian is the number and variety of pre-packaged libraries and applications available. I don’t need to add third-party repositories for stuff I expect my distribution to provide.
Of course, this post deals with the enterprise server computing aspect of Linux. If you need to deploy desktops, there are other considerations. For me, though, if it’s something I am creating, I prefer Debian. If it’s something someone else created and only supports RHEL, then I always go to CentOS. (psst… I have also recently started exploring ScientificLinux).