Backwards Compatibility

Let's inspect some software versioning issues in a distributed system that lead to the backwards and forward compatibility properties.

As explained earlier, a defining characteristic of distributed systems is composed of multiple nodes. It is useful to allow the various nodes of such a system to operate independently for various reasons. A typical requirement for some applications in real life is to deploy new versions of the software with zero downtime.

Rolling deployments

The simplest way to deploy new versions of the software with zero downtime is to perform rolling deployments instead of deploying in lockstep the software to all the servers at the same time.

Note: In some cases, this is not just a nice-to-have but an inherent characteristic of the system.

Example

Mobile applications (e.g., Android applications), where user consent is required to perform an upgrade, imply that users are deploying the new version of the software at their own pace. As a result, the various nodes of a distributed system can run different software versions at any time.

This chapter will examine the implications of rolling deployment and some techniques that will help to manage this complication.

Get hands-on with 1200+ tech skills courses.