Hot Code Upgrades with Elixir - Survey

Hello,

I am developing a CI/CD tool aimed at simplifying the testing of hot code upgrades. Your responses to the following questions would be crucial in helping me make informed decisions to support Elixir.

  1. Do you use OTP’s releases ?
  2. Do you perform hot code upgrades/downgrades ?
  3. What tools do you currently use ? (Mix, Rebar, custom scripts, …)
  4. For what kind of project do you use this functionality ? (Web, Telecom, IoT, …)

Thank you in advance for your answers !

3 Likes
  1. Yes
  2. No :frowning:
  3. Mix
  4. Web, IoT
2 Likes
  1. Yes
  2. Yes
  3. Mix
  4. Web
2 Likes
  1. yes
  2. no, considered it though
  3. mix, inno setup, powershell scripts
  4. web/IIoT
2 Likes

Thank you for your answer !

When working on web related projects, people often prefer using rolling updates, may I ask why you preferred to perform hot code upgrades instead ?

1 Like
  1. Yes
  2. No. It seem to be too easy to shot yourself in the foot (possibly without noticing it) for the usually small amounts of upsides (in my work). Would love to learn more if that’s an incorrect assumption though or if there’s reliable ways to detect issues for someone without extensive experience doing them.
  3. Mix to build the release. Systemd and/or docker for running it.
  4. Mostly Web, some IoT
3 Likes
  1. Yes.
  2. No. Would like to but it does seem complicated and not available in releases so didn’t give much more thought.
  3. Mix and the release with systemd.
  4. Web.
3 Likes
  • Yes
  • Yes :frowning: (But very little)
  • Mix
  • Web
2 Likes
  1. Yes
  2. No
  3. Mix
  4. Web, IoT
2 Likes
  1. Yes
  2. No
  3. Mix
  4. Web
2 Likes

identical response fer me

2 Likes

Yes, of course.

Nope, every time I looked into it, it looked to introduce more problems than it solves. Having a load balancer that drains the connections to the old VM / pod on deploying a new one has worked super stably with complete zero-downtime so far (though it does require slight trickery sometimes f.ex. if you keep a local GenServer state and that controls rate limiting to a sensitive resource you are very likely to temporarily go over the rate limit due to lost state).

Mix, Docker, docker-compose and scripts to check for container / pod readiness & liveness. Also for initial DB setup and seeding (the PostgreSQL official Docker container allows you to drop scripts into a special directory and the DB will execute them all before announcing it’s ready).

Web / API and Telecom. The main one I am working on right now is listening for messages on a broker’s queue (in this case Kafka but we are researching alternatives) and then communicates with SIM cards worldwide.

4 Likes
  1. Yes
  2. No
  3. Mix
  4. Web
1 Like