I’m looking at deploying a phoenix liveview/channels app with releases.
What I am concerned about is how visitors on the site will experience a change in releases.
Does beam take care of making a smooth switchover or could there be hiccups from the user’s point of view?
Any insights are appreciated.
Basic Mix releases do not support hot code reloading. This means you’ll have to shut down the BEAM instance and boot the new release, cutting all connections. This may or may not be a problem, for most it is not.
If you want hot reloading, you will need Distillery and to generate an appup: https://hexdocs.pm/distillery/guides/appups.html – note that hot reloading is its own can of worms. For example all processes that hold state will go through a code change function (if the module was modified) that needs to transform the state to the new version.
I don’t know much more about it, but searching for Erlang/Elixir hot reloading should find more information.
@nicd Thanks for the helpful clarification!