Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

blue / green deployment #8

Open
jelmstrom opened this issue Nov 23, 2014 · 4 comments
Open

blue / green deployment #8

jelmstrom opened this issue Nov 23, 2014 · 4 comments

Comments

@jelmstrom
Copy link
Contributor

Something to test at sonen point..

http://nic.ferrier.me.uk/blog/2014_08/deploying-blue-green-with-docker

Start a new docker container on a node, add it to the proxy, Rhen shut down the old one..

@FredrikWendt
Copy link
Contributor

I'm doing a workshop similar to this with AWS Route53+EC2+ELB with Go on
Friday. I'd be happy to demo that setup for anyone interested.

I'm not using Docker for the go-agents in the live environment, as they
would not then be able to touch what's needed outside their containers.
You could of course argue that the app itself should be dockerized, but
then I'd have to address orchestration of docker containers and the days
just aren't long enough. :-)

If you don't poke around too much (read-only please), you can look at
http://build.cd-vader.link - build, deploy on "staging" (orange),
smoketest, manual promotion, manual triggering of automated deployment
(blue and/or green), manual deregistration from loadbalancer
http://orange.cd-vader.link - staging
http://blue.cd-vader.link - blue!
http://green.cd-vader.link - green!
http://app.cd-vader.link - the "public" address for the app

http://metrics.cd-vader.link - graphite (not there yet, targets my
personal instance right now), showing requests/s, etc - dashboard to see
whether new "new" backend is performing as expected
http://gitlab.cd-value.link - gitlab (not there yet, uses my personal
instance right now)

The people attending the workshop will have their own accounts and
environments available.

The point: Demonstrate how to - with Go - manage a pipe all the way into
operations, being able to deploy a new backend (and frontend if I have
time) without the visitor noticing.

One thing I'm struggling with, is a good way to rollback to a previous
installation. What I mean is this: say blue is "live" and we deploy a
new version on green. When we discover that new version is moot, how do
I rollback to a previous version on green - easily. I can of course
manually find the previous run of the pipeline that deployed the old
good version on green, but I doubt that's how Flickr rolls their stuff
out. :-)

I'd like to be able to demonstrate a system that supports flicking
feature toggles/switches on/off without having to restart or redeploy.
Etcd, ZooKeeper or something similar (an easy way is to use Redis with a
queue/list per environment and push changes out that way).

/ Fredrik

@sennerholm
Copy link
Member

Would be greate to hear more about your workshop on friday.

About Blue/green, why do you need to install an old version on the green environment, we are never going to use it?

/Mikael

@FredrikWendt
Copy link
Contributor

Well, there's absolutely no need for rolling back in order to have
Blue/Green Deployment. Rolling out an old version "again" to stop a bug
which after some time was found to pollute data - that would be a
justified case though.

"Build/Version 10 was good but 11, 12, and 13 which have been in
production for some time, all contains the same bug we just recently
discovered. We need to stop it from destroying our data NOW. Let's roll
out version 10 again."

Bugs happens, we're humans.

/ Fredrik

@sennerholm
Copy link
Member

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants