Written by: Dewire Labs Team
November 01, 2016
For low- to medium-use applications, it is often good enough to upgrade to new versions by shutting down and starting the new version. This is commonly done during night-time to avoid disrupting users. But, to be able to easily deploy several times a day while maintaining high availability and low latency around the clock – such as for an IoT service where sensor values are streaming in traffic 24/7 – the deploy process cannot result in several seconds or minutes of downtime.
Zero-downtime deploy is the idea that an application can be deployed with practically unmeasurable downtime or latency increases. To achieve this, the system needs to use load-balancer(s), signaling and other preparations in smart ways. For example; the time for application upstart and cache warmups need to be taken into account to avoid spikes in latency.
Using Docker to wrap each application (server, database, load-balancer, …) in separate containers, it is possible to have a multi-application architecture described in, and controlled by, code.
The aim of this thesis is to create an application infrastructure using linked Docker containers and other Free Open-source Software (FOSS) such that new containers can be deployed in a zero-downtime manner.
- Design and implement an application architecture capable of zero-downtime deploys using Docker and realistic example applications.
- Design and implement performance measurements and visualizations that can pinpoint the transition between versions and show relevant performance characteristics.