Our experience with evolving data schemas in distributed systems has led us to realize there's a class of incompatible changes that often aren't mentioned in the documentation for technologies like Avro, Thrift, and Protocol Buffers. While those tools have good support for evolving schemas without "stop the world" migrations, there's a tricky edge case around enumerated types that can cause problems with incremental rollouts but that may not be obvious or easy to automatically catch and verify before rollout. We wanted to share some of our experiences and alternatives to enums that may be worth considering. Look forward to corrections, comments, and other feedback. |
No comments yet