<@U83S3MLQ0> - regarding blue/green question in th...
# general
i
@colossal-beach-47527 - regarding blue/green question in the webinar: we have an integration tested set of images for services/pods that run behind traefik for routing. Given that these images are tested together, it would be preferable to stand them up as a group vs let individual services come on-line and have a heterogeneous set of versioned services for some amount of time. The thought for blue/green would be (assuming
blue
is currently running): 1. stand up a new set of integration tested images as
green
2. smoke test 3. apply update to the traefik service to route to the
green
stack 4. tear down the
blue
stack Am I overthinking this? In all likelihood the heterogeneous set of services will be fine but I am just trying to identify all potential points of failure for CD. Any thoughts welcome with regards to strategy and pulumi usage
c
Before joining Pulumi I worked at Google, and at least based on how much effort went into rollout strategies and things, you definitely are not over thinking this. Ultimately there isn’t a single right answer, as any sort of rollout strategy is making tradeoffs.
For example, you could optimize for time to start serving the new version, i.e. start the second pod and let elements come “online” as normal, and merge them into the existing system. That works well.
Another thing to optimize for is time to “revert” the new version if there is a problem. For example, if you start draining traffic from the “older version” as soon as “new nodes” come online, then it’s possible it would take a while to revert/back those new versions out. (And need to wait for the older version to start being served again.)
And then, there is the question of resource utilization. If you wait for “all of green” to be up and running and “all of blue” to continue being running, before removing those resources, then that not only takes a long time, but it also means you need to provision 2x the capacity for your service.
… this is all a long way to say I don’t have a single recommendation for you. But I would hope that one day we can put all of this logic/tradeoff into a reusable package, so that someone such as yourself can evaluate the different options/tradeoffs, and easily configure the strategy being used.
👍 1