Live data from Hacker News

How release canaries can save your bacon

cloudplatform.googleblog.com

21–30 of 54 posts

Re: How release canaries can save your bacon

#21

What are the best practices redarding rollbacks when the database is affected. I would think a large amount of overhead would be required.

At my job the DB is backwards compatible by one release. This means we roll back code, not data. It takes a little longer to do something like delete a column, but it's worth it.

Rainforest QA had a blog post on strategies a while ago.

Re: How release canaries can save your bacon

#22

I'm less enthused about 'rollbacks' being considered 'normal'. They signify something didn't go quite right with your unit/integration/qa process. IMO there should be at least a 'mini-postmortem' to understand why it was missed even if it's in an intentional blind spot. (i.e you made an explicit decision it wasn't worth the engineering resources to get the testing fidelity needed to catch the issue earlier). It's alm…

If it was an automated rollback, a system that automatically generated either test data or other heatmap of the system when the rollback was called would be awesome.

It is amusing, because we are basically saying it would be awesome to have a coredump when the crash happens. Which... used to be standard behavior but was essentially lost in most modern development environments. (Not to mention the tooling lagged in two directions. One to help you with the coredumps, and the other to make usable core dumps.)

Re: How release canaries can save your bacon

#24
post #3

As a high traffic customer of Google, I've been this person far too many times. [...] if it breaks, real users get affected, so canarying should be the first step in your deployment process, as opposed to the last step in testing. It's a fine pattern and all, but not an excuse to throw stuff at prod and see what happens.

We don't just throw stuff at prod. Google has a culture of testing and code review, so code review, unit testing and integration tests are the first line of defense. Then we do QA testing, where a lot of problems not caught by tests are found, which then inform us where tests may be lacking. We also roll out to internal dogfood first, given Google's number of employees this is kind of like a pre-canary.

The point of the canary is it gives you one last real world test where you can limit the damage if anything goes wrong. Without it, you'll have to assume your tests are perfect, and I doubt that's ever achieved in practice in a real environment, except maybe in avionics and space control systems.

Re: How release canaries can save your bacon

#25
post #3

As a high traffic customer of Google, I've been this person far too many times. [...] if it breaks, real users get affected, so canarying should be the first step in your deployment process, as opposed to the last step in testing. It's a fine pattern and all, but not an excuse to throw stuff at prod and see what happens.

What's a high traffic customer of Google?

[disclaimer: I work at Google]

https://cloud.google.com/customers/

Spotify, SnapChat, eBay are the examples I usually give when asked that question.

I'm not sure what numbers I am allowed to provide for any of them, but there's some public information available that gives you a sense of the scale involved:

https://labs.spotify.com/2016/03/03/spotifys-event-delivery-...

https://www.itnews.com.au/news/do-not-fear-the-cloud-ebay-mi...

Re: How release canaries can save your bacon

#27
A quick rollback frees up the developer's contextual burden and makes it easy to take calculated risks. This works better in some environments, of course. You wouldn't want it in testing a medical support system, for example. LinkedIn goes a bit further and has continuous release monitoring: https://engineering.linkedin.com/blog/2015/11/monitoring-the...

Re: How release canaries can save your bacon

#28

I'm less enthused about 'rollbacks' being considered 'normal'. They signify something didn't go quite right with your unit/integration/qa process. IMO there should be at least a 'mini-postmortem' to understand why it was missed even if it's in an intentional blind spot. (i.e you made an explicit decision it wasn't worth the engineering resources to get the testing fidelity needed to catch the issue earlier). It's alm…

You are a CTO sitting atop very expensive hardware and software. Would you start removing deployment and runtime safety guards (such as a consumer-facing staging environment) because you want to "discipline coders and devops"?

Re: How release canaries can save your bacon

#29

I'm less enthused about 'rollbacks' being considered 'normal'. They signify something didn't go quite right with your unit/integration/qa process. IMO there should be at least a 'mini-postmortem' to understand why it was missed even if it's in an intentional blind spot. (i.e you made an explicit decision it wasn't worth the engineering resources to get the testing fidelity needed to catch the issue earlier). It's alm…

On the one hand, rollbacks need to be culturally normal. Finding out that an essential part of your process (essential because it keeps your mean-time-to-repair low) is undependable because the last time you ran it was a half a year so, and right now is precisely when you need it to be dependable, well, that royally sucks.

On the other hand, what you're talking about shouldn't be that hard to implement. Just hook your rollback system into your issue tracker to create a post-mortem issue whenever a rollback is necessary, and assign it to whoever initiated the deployment (or their manager). Easy.

On the third hand, you might end up finding that a lot of your post-mortems end up looking something like "we don't have reproduceable builds and we made a managerial decision not to invest in that now". And now you just created a ton of recurring paperwork for everyone with little benefit.

Re: How release canaries can save your bacon

#30

I'm less enthused about 'rollbacks' being considered 'normal'. They signify something didn't go quite right with your unit/integration/qa process. IMO there should be at least a 'mini-postmortem' to understand why it was missed even if it's in an intentional blind spot. (i.e you made an explicit decision it wasn't worth the engineering resources to get the testing fidelity needed to catch the issue earlier). It's alm…

You are a CTO sitting atop very expensive hardware and software. Would you start removing deployment and runtime safety guards (such as a consumer-facing staging environment) because you want to "discipline coders and devops"?

A post-mortem should never be about placing blame on individuals, it should be about identifying flaws in a system or a process.

There are places where post-mortems can turn into blame games, but in my experience such things are counter-productive to actually solving problems. Luckily, there are plenty of engineering organizations that do not make this mistake! :)

Post reply on HN