Is there trouble brewing in the land of DevOps?
blog.gardeviance.org
blog.gardeviance.org
A concrete example is that even before containers I saw plenty of binaries that were magical black boxes that no one knew how to re-create from source anymore, well not without some human intervention anyway by poking and prodding things at certain points during the compilation process. So to say containers and microservices are making things worse or better misses the mark. Things are the same as they've ever been and the more disciplined software shops are still doing just fine. The less disciplined software shops are still finding plenty of ways to blow off their feet (referencing a quote about C++). DevOps, agile, lean, six sigma, or any other methodology has nothing to do with it.
The core of configuration management is a) how you express the state of the world and b) how you move from state to state safely, with potentially hundreds of changes in flight at once. For the former I'm excited about projects like https://github.com/apmasell/flabbergast, and the latter is mostly a matter of breaking rollouts into individually rollbackable changes combined with good policy.
If you're building a container cloud, consisting of 'immutable' servers and a scheduler like kubernetes, then there's not much of a role left for one. You might use the lightweight versions (e.g. chef-solo) to bootstrap the servers, bake an AMI (or god forbid a container image). And you'll use something like cloudformation or terraform to configure the cloud. But if I'm going to toe the immutable infrastructure line I'm not going to use a config mgmt tool to update the state of my existing servers.
https://github.com/apmasell/flabbergast/blob/master/flabberg...
(I'm not arguing that they solve the same problem - I really have no idea - but readability matters and choosing a JSON syntax over YAML or similar when humans are meant to be parsing it seems like a mistake)
I'm a fan of Ansible, but it isn't really suitable for expressing multi-dimensional and multiple-levels of exceptions, from experience it works for about 2.
How that state is actually rolled out is the job of something else (which could be Ansible or the update portion of your cluster scheduler).
IMO it's not tools that are the problem but a lack of deep understanding. A lot of people practicing "DevOps" lack the raw knowledge.
However, with respect to technology, some technologies do not lend themselves to these processes. .Net I'm looking at you here; you're a tangled build nightmare, a deployment clusterfuck, require too many resources to lift light tasks and most of your core as API is a mess of obsolete ideas,impossible to test abstractions and a bunch of dubious hand grenades (ReaderWriterLockSlim for example which has deadlocked on me numerous times and is the basis for concurrent collections).
I talk a little about this here:
https://www.youtube.com/watch?v=zVUPmmUU3yY
Doing it, though, requires attention to exactly those things you outline. But the technology can make it a more tractable problem, solve-able in this case by three people working in their spare time.
I'm definitely going to give ShutIt a try because my next gig is a Python shop and I'm not really interested in writing another custom tool.
You should definitely evangelize this tool more because every single shop builds something like this but it never ends up being open sourced. That's a lot of wasted effort across the board.
Or perhaps one can liken it to the old story about the turtle and the hare. With programmers as the hare...
"some IT landscapes contain components that people don't know how to recreate especially since the person that created the component has left the company" , "if we consider multiple layers of microservices then it can be quite disconcerting that some of those lower order component layers maybe in a position that we cannot recreate".
The knowledge transfer problem between the devs and ops is not really a technical problem. It's a human communication problem. With the new tools (like containers and microservices) it manifests itself in a slightly different way allowing you to deal with the communication problems further down the line (because you can deploy a black box container without breaking other things running on the same machine/VM), but you still need to transfer that knowledge.
I'm curious if there's a market for tools and products that automate this knowledge transfer...
Culture: Inertia vs Fluid / Gameable Corporate Focus: Profit / Disruption
I'm sorry, someone has been reading far too many startup articles, it's like a parody.