I am a big Chef fanboy. It's not something I hide very well or attempt to hide. Chef was a huge part of my role within a release engineering team for a few hours and I think that using it has made lots of positive impacts to the organisation I work for as we strive towards continuous delivery.
You can imagine my giddy excitement then when the current Release Engineering team managed to snag a few Chef employees to come into our office to talk about their new product habitat. Also I'm really struggling to get out to events this year and that's probably one of the career resolutions I've struggled with the most.
Nathen Hervey and Thom May gave us a an overview of the solution and it was great. They have a fantastic interactive demo you can walk through in your browser on their site as well so go and take a look at that.
I'll try to give a brief thought on why Habitat is so exciting. Chef has a node orientated view of the world. That's where the rubber hits the road and things like runlists and recipes get applied and attributes get levelled out and that's brilliant for a lot of applications that people run or for infrastructure servers but it does muddy the waters a little when it comes to distributed services and the clusters that offer that service. That's where Habitat comes in with it's gossip protocol to spread config updates and the supervisor to manage the processes you are getting considerable value add over Chef.
There was of course ways to try and bend Chef to work with these services. We had for example many clusters of couchbase servers that fulfill different behaviours within the same environment and so we used the Role concept in Chef to manage that. That was because for the most part the install was the same but there was some config (other cluster members) that was what differentiated one cluster from another. Using roles allowed us to dynamically discover other servers that existed in the cluster but sadly didn't alllow for us to update all of them at once like Habitat is built for.
The one question I have is how this is going to interact with Chef and other stores in terms of forming an open source toolchain that will allow for you to manage and deploy modern distributed services. Most of the demo we saw involved manually pushing messages in using the gossip protocol (which is used in Ubers RingPop) and so I'm guessing you could probably have Chef Providers or similar which would allow you to do that. I would guess you want to have your config that you've just pushed to your production cluster stored somewhere... Also the attribute precedence setting and levelling in Chef is GOLD so you would really want to be able to hook back into that.
I am feeling pretty excited about the opportunities that habitat.sh can bring to us so much so I've started learning Rust so I can attempt to contribute something to the product.
No comments:
Post a Comment