We started off on a pipeline system but have since implemented an in-house layer that is now part of our product.
The problem here is there aren't a whole lot of good options out there. Most systems assume a static production and do not react to changes happening independent of the deployment.
That makes sense. I'm not necessarily arguing for continuous intelligence in this post, just that declarative configs enable it. Even the initial conversion of a destination to a set of directions is a compilation of declarative to imperative. Imagine if Google Maps was truly imperative and asks you to input the individual roads you want ahead of time - then it would not be useful.
Oh totally that declarative can and will often compile down to imperative. The question is what do you ask the user for? My take is Google maps is declarative in the sense that you ask for your destination, your constraints (e.g. no highway), and time to leave, and it dynamically generates the underlying imperative steps like you said (but continuously adapt if you go off course, which you cannot do unless the initial input was declarative).
Yep the idea of declarative winning out over imperative is nothing new. Yet for some reason, most deployment systems make you go through an imperative flow if you want to orchestrate releases.
I know deciding on the right thing to do here for your company can be a painful experience. I am founder and CTO at Prodvana (https://prodvana.io). We are building a platform that makes running things in production simpler, and we actually have a customer who is working with us, coming from Beanstalk. Shoot me an email at [email protected]. We can help.