Time for an engineering update! At Transloadit, we have been long-time Ubuntu aficionados. To back that statement up - look what I found during a recent move to a new apartment in Amsterdam:
"My first Ubuntu" . This was in 2005, when Canonical still made funds available to ship Ubuntu CDs all over the world to whoever requested one - for free. It was an ideological thing, I believe. People with slow internet, which was pretty much everyone back then, should be able to enjoy Linux for Human Beings.
It was my first non-Windows desktop and I loved it. So much so that I even tried to push for Ubuntu on the servers of the hosting company where I worked at the time. This was of course considered crazy-talk. Ubuntu was a "Desktop OS" and nothing serious like Slackware, Gentoo or Debian, the server-side distros that were favored at the time. We didn't take the plunge until Feisty came along, around two years later. But after that, we never looked back. Datacenters with thousands of servers humming on Feisty/Gutsy/Hardy - Ubuntu was practically never the cause of problems and always a bringer of joy. Apt was usable and there was no more compiling!
When we bootstrapped Transloadit, I didn't think twice and we started off with Ubuntu's latest release, Jaunty, in early 2009. Later in that same year, we moved to Karmic. After that, we decided that we only had so much time to spend on OS upgrades, so we switched to Long Term Support (LTS) release cycles, starting with Lucid in 2010.
Even though Ubuntu LTS releases are supported for five years, we immediately upgraded Lucid to its LTS successor Precise, as soon as it was released in 2012. We made that switch because of compatibility issues with the Kernel on EC2 at the time.
Since then we have been happily running on Precise. Because our stack is compiled from scratch and nearly OS independent, we could always perform upgrades to our encoding software, without this version of Ubuntu getting in our way.
Until now, that is.
Conflicting Libraries in Our Stack
We have been able to run several versions of FFmpeg alongside each other, but Imagemagick, the open source tool that lies at the heart of many of the image operations that we support, has proven much harder to compile in a feature-rich and isolated manner.
We do really need isolation in order to avoid breaking backwards compatibility, so that we can opt-in upgrade paths to our customers.
This calls for containers . With Linux containers, we would have the freedom to deploy new versions of our encoding tools without interfering with existing installs. Once we have this in place, it will be much easier for us to roll out upgrades of any kind.
However, in order to have container capabilities, we first needed to upgrade to Ubuntu's latest LTS release: Trusty!
Canonical's leader Mark Shuttleworth indicated that the focus during this development cycle would be a release characterized by
"performance, refinement, maintainability, technical debt"
and encouraged the developers to make "conservative choices".
So, boring and conservative. Exactly what we are looking for in an LTS release.
I am glad to share with you today that we have successfully rolled out this upgrade and that it has already seen some serious traffic.
Here are 368 Trusty machines eating away at a 2.7 TB encoding queue
Since we will now be able to utilize containers, you can expect us to release more cool conversion options and tools - at a faster pace - without breaking backwards compatibility.
We will first focus on pushing out a new ImageMagick version, work on this project has already started.
As we are moving towards a container-based architecture, we will also be keeping a close eye on Hashicorp's Nomad and CoreOS. We might find ourselves faced with a difficult decision when Ubuntu's next LTS is released. We will certainly share our findings with you!