Each time someone talks about the 12 Factor Application a weird feeling overcomes me .. Because I like the concept .. but it feels awkward .. it feels as if someone with 0 operational experience wrote it. And this devil is in a really small detail.
And that is Part III. Config … For me (and a lot of other folks I’ve talked to about this topic) , using environment variables (as in real environment variables) are just one of the worst ideas ever. Environment variables are typically set manually , or from a script that is being executed and there’s little or trace to see fast how a specific config is set.
Imagine I launch an app with an env variable X=foo , then your collegue stops that app, and launches it with X=bar. The systems integrity has not changed, no config or binaries have been changed, but the application behaviour could have completely changed.
Sure I can go in to /proc/pid/environ to find the params it was launched with … But I want to know what state the system is supposed to be in .. and have tooling around that verified that the system indeed is in that state.
Read more at Kris Buytaert’s blog