| > I think Slack notifications are really nice to see what's going on right now but not so great to see the state of dozens of service Completely agree, that's why we instrument our releases so we can easily see what's deployed by service and environment. > Then there is the issue of linking the Git release/tag with the corresponding changes, say from a ticketing system such as Jira. That can be helpful to communicate changes to other people within the organization and to users. Each commit is related to a ticket, helps generate a changelog.
We enforce a lot of things in each of our release. We have an internal release tool heavily inspired by shipit from Shopify. We have the concept of soft/hard checker to make sure it won't break or that you aware of what could break with the current diff. > How do you define dependencies for releasing new versions to service? Likely going to happen at some point when you have non-trivial changes to services. As I said we instrument our releases and can easily track how changes affects our performance/bugs. We also try a lot not to release non-trivial changes in one big release by doing stuff like release part of the changes behind a feature flipper first or route only a part of the traffic to the new code path, ... Then we don't have dozens of different services deployed and we're still a relatively small team (~20) so I'm pretty sure I don't have the full picture just yet :) |
I like you enforce the commit/ticket relationship. Is this purely an agreed process or do you use other measures to keep things consistent? E.g. we typically add the ticket ref to each commit but at times that gets omitted.
Also, I think that (internal) release tool is something crucial as the team grows. Will check shipit a bit further.
Would you mind expanding a bit on the things you enforce for each of your releases?