How do you deploy Erlang applications in cloud?

For people who run Erlang in production - what does your deployment toolchain and environment in general look like? I’m specifically wondering about “cloud” (managed services, or however you want to classify it) related deployments. I’m aware of some existing info online like this one, I’m curious what people actually do in practice.

The kind of information that would be interesting:

  1. What tools you use for CI/CD pipeline: Jenkins, Spinnaker, Harness, etc.

  2. What you deploy to: e.g. Kubernetes, AWS EC2 behind ALB/ASG (load balancer w/autoscaling groups) or other cloud provider equivalents, AWS Lambda or other provider equivalents, etc.

  3. What tools you use for infrastructure: e.g. Ansible, Terraform, Pulumi, etc. as they relate to deployments.

  4. Whether you use release upgrades or replace resources.

  5. Any other interesting detail related to the above, such as how would you do it if you were starting fresh, or any open source repos, tools you actively use you can share, etc.

Side note back story for the source of the question: I started working on a very small side project and I wrote Ansible+CloudFormation for it pretty much from scratch, along with a mostly pre-baked GitHub action to create releases. It got me thinking that this kind of information would be helpful to share in general for larger deployments, if people are willing to do so.

4 Likes

My current production Erlang workload is deployed using Heroku. I use GitHub actions for my CI/CD pipeline, bundle everything up in a container image, and push that to Heroku. I tried to keep this one as simple as possible. :slight_smile:

5 Likes

I’m using concourse, it’s a bit buggy though and I may not use it for new projects unless it’s fixed up, plus I’m losing interest in docker with what the company is doing lately (occasional concourse runs are failing now because of the docker hub by the docker company, blah).

Local hardware server bank, specifically it’s just deploying into a redhat VM.

Concourse, and… custom made everything else?

Release upgrades for sure, 0-downtime updating is awesome, been doing so for years.

I love the setup we have here at my work, probably drop concourse and just custom build a pipeline for that too though honestly…

2 Likes

I use GitHub action to build and test.

If I deploy something I usually use Digital Ocean. They have cheap shared CPU nodes.

Do a rebar3 tar release and copy it to DO and start it.

3 Likes