We are a central team, responsible for around 10 services. Other parts of our company depend on these 10 services to write their applications, and we often have to collaborate on new features before they're ready for production.
I'm wondering how to accomplish CD with this sort of situation. I'm sure it's been explained somewhere, I just haven't found it. Currently our process is:
[production]
|
[stable] <--> {internal partner}
|
[dev]
My concern with CD is how do we coordinate new features that aren't necessarily ready for production with our internal partners who depend on those features to finish their integration?
An Example:
We want our online environment to support awesome_matchmaking_feature_xyz
for our gameteam. The gameteam wants to start development on their game using this awesome_matchmaking_feature_xyz
. We need a way to provide that feature to them, but it's not considered "releasable" work yet. Additionally, we have 7 other awesome_x_feature
projects that need to be integrated against by different gameteams (or even different groups within the same gameteam).
In my mind, the only way to accomplish this is to have a dedicated environment for this feature, separate from the main dev-stable-prod
streams. But what happens when we have 7 of these initiatives going on at once? Do we spin up 7 dedicated environments for each test? That could get expensive pretty quickly. What happens when these features are ready to be merged into our primary streams, and the other feature development doesn't have them yet because they're working on their feature streams? I'm curious what the proposed CD best practice for this sort of thing is.