IsaacLevon
IsaacLevon

Reputation: 2570

How to achieve rolling release updates / rollback without docker?

Due to some limitations I cannot use docker, let alone docker orchestration tools like Docker Swarm and Kubernetes.

I still want to achieve a basic CI/CD process.

More specifically, I'd like to have a system that deploys new releases but also monitor my service (i.e. makes health check) and in case of a failure it redeploys the service or rollbacks to a previous release.

Which tools are available for me?

Upvotes: 0

Views: 298

Answers (1)

taleodor
taleodor

Reputation: 2061

For basic CI/CD on your stack, best bet would be bash scripts set up by something like Ansible. If you are on cloud and need to go large scale (far beyond basic), consider Spinnaker (this would be an immutable infrastructure approach on the VM level).

Note, that in any case this is a previous generation approach. But your bash scripts and tooling for basic case may look like that:

  1. Ansible / Chef for deployment
  2. Consul for service discovery - you can also put basic healthchecks there
  3. Some load balancing tool, such as haproxy, nginx, traefik

And your bash script on cron would work along following lines:

  1. Pulls specified version of your fat jar, starts a spring boot process, does healthchecks, registers service on consul
  2. If all good, switches load balancer (i.e. haproxy) to this new process, then kills the old process
  3. Does another check in x minutes, and if there is a problem - does rollback

Here Consul would be used to synchronize across multiple nodes.

Again, note that this is a previous generation approach. Modern container orchestration tools do lots of this stuff for you so you don't need to script all that.

Upvotes: 2

Related Questions