Seamless dynamic software upgrade using four different upgrade mechanisms:
Instant upgrade - immediate upgrade to the latest version of an application
Session upgrade - upgrading only new sessions to the latest version of an application
Gradual upgrade - gradual upgrade of clients to the latest version of an application
Concurrent upgrade - routing requests to multiple versions of an application simultaneously and returning the response from the latest version of the application that is behaving correctly
Automatic rollback when an upgraded version does not behave correctly.
Two mechanisms to manage software versions:
Distinct TCP sockets for each version of an application. The proxy is configured to communicate with each application version on a separate IP and port combination.
Distinct Docker images for each version of an application. The proxy manages a Docker container based on each application version using a different image or image tag.
Two mechanisms to configure the proxy:
File base API in JSON format which is parsed when the proxy loads. All features of the TCP based application version configuration and Docker image based configuration are supported.
A REST API in JSON / HTTP format which can be used to query, add or remove application versions. All features of the TCP based application version configuration and Docker image based configuration are supported.