...
Many distributed open source systems has rolling upgrade feature, already.
We must study implemented approaches to gain some insights from them.
- Is there rolling upgrade feature?
- How it implemented?
- How it tested?
- When it tested: Each PR? Weekly? Only on release?
Apache Cassandra
...
- Rolling upgrade implemented. Guide - https://www.datastax.com/learn/whats-new-for-cassandra-4/migrating-cassandra-4x
- Server-client compatibility works similar to
...
- Ignite Thin Client protocol.
- Compatibility checked with the special test framework - https://github.com/apache/cassandra-dtest/blob/trunk/upgrade_tests/README.md
At a first glance, there are no special source code checks to ensure compatibility in day by day coding. - ???
Apache Kafka
- Rolling upgrade implemented. Guide - https://kafka.apache.org/documentation/#upgrade
- Message formats checked on PR reivew.
At a first glance, there are no special source code checks to ensure compatibility in day by day coding.
But, all machinery to code compatible implemented in code generation framework - https://github.com/apache/kafka/blob/trunk/clients/src/main/resources/common/message/AlterPartitionResponse.json - Compatibility checked with the special test framework ducktest - https://github.com/apache/kafka/blob/trunk/tests/kafkatest/tests/core/kraft_upgrade_test.py
- On release, or by request. Kafka doesn't provide public resources to run ducktests. Run done by contributors or by confluent employers on private hosts.
Yugabyte
Cockroach DB
Alternative designs
...