One other fun problem Spotify is going to tackle is how we're going to handle systemd vs. upstart if/when we transition from straight-up Debian to Ubuntu.
One other fun problem Spotify is going to tackle is how we're going to handle systemd vs. upstart if/when we transition from straight-up Debian to Ubuntu.
After two years of upstart I am wholeheartedly regretting ever touching it. It's broken by design and currently in such a bad way that you actually might have to reboot the machine to fix it.
Upstart is the main reason I'm considering dropping ubuntu for something else.
As the comments discuss, it's not really always clear all the time when to use "expect fork" vs "expect daemon" and the rules change with a `script` block. So this hits people all the time, including me.
It's these kinds of bugs in upstart that bite people all the time. I could go on about its obtuse configuration but I can declare unequivocally that upstart configurations are my least favorite part of system administration, bar none. `Start-stop-daemon` reduces some of the pain but is also difficult to debug.
1. https://bugs.launchpad.net/upstart/+bug/406397 2. https://github.com/ion1/workaround-upstart-snafu/
If we stick with Debian, we'll find ourselves back in this situation fairly soon, since Debian's security team only supports oldstable for one year after a new stable is released (approximately — there isn't a set timeline available).
Ubuntu LTS releases, on the other hand, give us predictability and five years of support. That makes me very happy from an infrastructure standpoint. And the more up-to-date packages in Ubuntu repos make our feature devs happier, versus having to maintain backports for modern software.
Will you be able to support Postgres 12 and Nginx 3 on those machines?
I find it useful to deploy the application on the same OS it was dev'd on, but in a decoupled manner. The thing I despise the most is needless upgrades of infrastructure pieces of working apps (redis,python runtime,etc). Each should get there own static version.
A couple jobs back, I would package my own JVM along with the application (in an rpm) as ops was being really slow to upgrade machines. The only thing I depend on for a box is libc.
Sure - Ops being slow to upgrade is annoying, Ops patching a security hole and you leaving it open could be devastating.
There is a really good reason Debian forbids embedded copies of other packages, and why I despise "solutions" like Chef's OmniBus. These things are live grenades moments away from taking the whole ship down.
Ha! How many copies of Lua are living in applications that Debian doesn't have control over? There are probably package maintainers excising those as we speak.
I don't want to get into a packaging philosophy war, not enough fun over text, needs to be face to face.
This is a good read, http://vagabond.github.io/rants/2013/06/21/z_packagers-dont-... on how over zealous single tree packaging can make a mess of things.
I had to bundle in my JVM because ops wouldn't allow more than ONE on a machine. I wanted
/opt/jvm/1.6.22
/opt/jvm/1.7.10
And I could symlink my apps to the one I needed. New apps could get new JVMs, old apps would continue to run just fine. But they wouldn't do this because it _broke_ Red Hat file system guidelines, for whatever definition of broke.Reuse can absolutely cause over coupling. I prefer to have tractable dependency graphs.
Take a look at
* http://www.gobolinux.org (defunct)
> more up-to-date packages ... no need to backport modern software
I get how Ubuntu gives you both of these features, but I don't get how it gives you both of them at once...
I use Debian Stable with several upstream repos, and I've never understood why people use a PPA when upstream provides a repo (e.g., nginx).
If you don't want to phase-in updates rather than depend directly on a third-party PPA, you can also setup your own PPA and copy packages to it as you wish.
One of our coders had to figure out something to fix a problem in his ubuntu desktop, and reported that he'd found a guide that showed it was done a different way in each of the four previous releases. I think they're doing fine for their original target audience - naive users - but I'm cautious about their constant change and go-it-aloneness.