Upgrading your service to a new golang major release is supposed to be a painless process thanks to the  Go 1 promise of compatibility. However, there

Go upgrade checklist - by Hakan Koklu - Trial and error

submited by
Style Pass
2025-01-02 19:30:05

Upgrading your service to a new golang major release is supposed to be a painless process thanks to the Go 1 promise of compatibility. However, there can always be small issues around security updates, packages, tools, linters, etc. If you have an uncritical standalone service, it is probably best to upgrade and see if everything works as expected. However, if you are responsible for upgrading a whole bunch of critical services, it is best to have a plan that minimizes any issues or downtime you might face. I wanted to share how it is done in a fairly large company as a sanity check for smaller teams out there.

I will start with a concise list of steps that are preferable to take and then I will talk about them in more detail based on my experience at Lyft. In my last role, I was responsible for the golang ecosystem at Lyft and conducted the upgrade to 1.19 (from 1.17) and 1.20 (from 1.19) for all the Go services.

Little disclaimer; I am no longer affiliated with Lyft, therefore I don't have access to the engineering docs that I wrote myself on this anymore. I am writing from memory based on the state of the world in early 2023. I don't think I am disclosing any sensitive information but if anyone from Lyft is reading this and disagrees, please let me know.

Leave a Comment