title: Change backend/module at deploy time in Elixir?
body: <p>How would one go about implementing a replaceable backend (or basically any part or module) so that it can be replaced at configuration/deploy time in Elixir?</p>
  
  <p>My specific situation is a simple web app (in this case using Phoenix but I'm guessing this question applies to other situations as well) where I have a very simple backend using <code>Agent</code> to keep state but I see a need in the future for being able to switch out the backend more or less dynamically.</p>
  
  <p>I'm guessing both Ecto and Logger do this to some degree but being new to Elixir it's hard to know where to look.</p>