Minimizing Downtime during System Upgrades using Microservices
Abstract
Reduction in the time taken to upgrade a software directly affects its sales figures in a subscription-based environment. While bug free feature packed software is independent of updates, most software sold today come with updates in the forms of downloadable content that are installed by the user. When using services deployed over web applications such as those that follow the Software as a Service (SAAS) paradigm, updates are performed only at the server side during which the application cannot be used. This paper discusses a means of reducing the time taken to upgrade software over such a cloud-based architecture using Apache Maven to build projects along with their internal dependencies. The approach proposed brings down the build time by a factor of four. Further, the use of Microservices with Docker based Windows Server containers attempts and making lossless or zero downtime system upgrades by simply replacing a container with a newer version of the same. The paper further discusses an approach to minimize the number of virtual machines that need to run concurrently using mathematical modelling while hosting these containers in a production environment.