While we’re talking about schema changes and generated code, here’s some more advice: don’t add any generated code into shared libraries. These libraries will change less frequently than the schema the code is generated from, and when you include such libraries in services that also generate code from these schemas, you’ll get namespace conflicts.

The generated code should only exist in the service that contains the build targets to generate them. That’ll mean duplicated code across the code base, but that’s not a big deal. After all, it’s not like you’re hand-rolling this code.