Release, Deploy, Monitor and Upgrade Elixir Services in Real World - Code BEAM SF 2018

Although Elixir has been rapidly adopted in the past few years, it still lacks a general guide and practices on releasing, deploying and upgrading (maintaining) the elixir services in a production environment.

Issues around this subject include:

  • How can Elixir release be integrated with github release?
  • How can Elixir service deployment and upgrade be integrated with devOps tools (like ansible)?
  • How can we quickly respond to failures and anomaly behavior of running Elixir services?

This talk shares the discoveries we have made at Tubi TV for the whole process.

Including:

  • Using distillery to generate the release and hot upgrade release.
  • Building our own tool to make the artifacts once a github release is created.
  • Building ansible script to do rolling upgrade or hot upgrade, enabling engineers to run one command to deploy a release without disrupting the production service.
  • Using sentry logger for error logging and integrating datadog for monitoring and alerting.

OBJECTIVES

Share our experience and discoveries on how to release, deploy and upgrade Elixir services.

AUDIENCE

Elixir programmers and devOps