In microservice architecture, there is a constant need for upgrading. Due to the characteristics of the distributed system, upgrades pose a risk that a new version of the microservice will cause an error in the existing communication or system instability. Reducing the risk of errors is especially important for systems that require high availability. With the proposed method, we want to meet the requirement for high availability and reduce the number as well as the impact of errors during upgrades. We have approached the problem by defining the properties of the method for the progressive upgrade and we have established a conceptual deployment solution that supports such an upgrade. The deployment was performed in the Kubernetes environment using the Istio service mesh. Flagger tool was used to automate the upgrades. We compared the proposed method with the classic upgrade method in different upgrade scenarios. The proposed method shows a smaller proportion of errors entering the system and allows automatic progressive upgrades. The method also allows us to upgrade microservices that are not backward compatible, and it allows a gradual transition of the microservice clients to a new backward incompatible version.
|