We have a set of Chef servers whose node data we integrate with data outside of Chef. Currently we use a batch sync process to read nodes out of Chef and then push the data into the data integration system. We run this every hour, and so far it works fine.
My question is whether Chef supports a more real-time mechanism for getting at this data. Ideally I'd like to get the change--such as a new node appearing or being removed--more or less immediately after it occurs, decreasing the lag and also eliminating the big batches. Does Chef server publish notifications? (I don't see anything about this here.) Or would one handle this client side (chef-client)? Are there other approaches I'm not considering?
EDIT: I'm talking specifically about node data. I do
GET /nodes
to get the node->URI hash, and then
GET /nodes/:name
to get the individual node data. It's a huge amount of data coming back though, so it would be great to take advantage of some kind of push mechanism if it exists. I'm doing this because I want to integrate this data with other service data (e.g., service dependency data, farm data, load balancer rotation states, etc.) that lives outside of Chef.