[chef-dev] Re: Re: Re: Re: Re: Re: Re: Fwd: How do I know if my application has really been "provisioned"? a suggestion


Chronological Thread 
  • From: Andrea Campi < >
  • To: Chef Dev < >
  • Subject: [chef-dev] Re: Re: Re: Re: Re: Re: Re: Fwd: How do I know if my application has really been "provisioned"? a suggestion
  • Date: Mon, 10 Dec 2012 18:49:21 +0100

I think this thread is conflating (at least) three different topics:

1) parallel execution of resources within a Chef client run;
2) synchronization between changes on different nodes;
3) dependencies within services

#1 sounds scary. Tackling it within Chef would open a big can of worms, breaking assumptions in many resources and cookbooks. This would probably take a lot of effort, and be a real "major" release (for lack of an even bigger level of granularity).
I have to second Dan's point: we would need a very strong definition of a problem before trying to solve it.
Personally I don't have this problem so I would only see the downsides of such a move. Consequently it would take me a *long* time to trust such a "make it or break it" release.

#2 is interesting, and it seems to me Flock of Chefs is well positioned to address it.
I have never felt the need for it so I'm not going to comment on it further.

#3 is probably what is needed by most people.

In simple cases, I agree with the person (sorry, long thread, I lost track) who said that init scripts can take care of this.
If service A depends on service B, that dependencies typically goes well beyond Chef: at boot you would still have to wait.

Of course some people are going to have more complex requirements.
Doing something that fits your own needs is not terribly hard: you add monitoring for the presence of a pid file; then you realize you also need to check that the process is really up. 
But then you also need to check that something else is listening over TCP.
And next thing you know, you realize that when a given process restarts, you also need to restart services that depend on it.
Jump forward a few iterations…

What you have built by now is effectively a PaaS.

Wouldn't it be more effective then to use a PaaS to begin with?


I'm not saying Chef cannot do that; it's a programmable toolkit with full access to a programming language after all, so it's Turing complete :D
I'm just saying it's not necessarily the best tool.

Personally I'm embracing more and more the "eventual consistency" model: I'd rather build architectures that can tolerate partial failures and will try to "self-heal" until they reach a steady state.


Andrea



Archive powered by MHonArc 2.6.16.

§