jeramyRR

jeramyRR

Hi all,

I’ve been working on some small one-off Elixir projects at work, hoping to get more people at Microsoft hooked on Elixir. After a while I have realized that I’m not confident in my Elixir code nor my deployment models, at least not for the scale the applications would eventually serve. I’ve also felt that while the community has some really amazing books on Elixir, most of them focus on the basics rather than production level code, and few if any hit on CI/CD. We have books like Elixir In Action that are a wonderful source of quality information, but I think the community could use another type of book.

I’m proposing a book that takes a developer and walks them through building a production quality Elixir application from start to finish; by finish I mean deploying to the cloud with best practices like security in mind.

Below is what I’ve brainstormed for a project so far:

Project: An Incident Management System (IMS).

  • It will have two paths.
    • One for internal use
    • One for external use.
  • Will integrate with at least one external telemetry application like:
    • Prometheus
    • Azure / AWS Observability services like Application Insights
    • AppSignal
  • Emails notifications when new IMSs are created
    • Notifications can go to a mailing list, or on-call.
  • Auto creation of IMSs when telemetry signals are triggered
  • Suggest and provide links to TSGs when similar incidents are created
  • Keep track of how often the same incident is triggered when an IMS is open, essentially combining incidents into one ticket.
  • Provides discussion area in the ticket.
  • Provides link to a “bridge” between people working on the incident. Bridge can be done in Zoom, Teams, Slack, etc.
  • On-Call management
    • On-Call Scheduling
    • On-Call receives incident texts and emails

The books project will provide lots of opportunities to handle things like:

  • Failures (supervision or otherwise)
  • Integration with external apis:
    • External Telemetry services
    • Text services like Twillo
    • Chat services like Teams or Slack
    • Email providers
  • Application configuration
  • Application Security
    • Secure deployment practices
    • API security
    • Configuration security (with things like Azure Key Vault or HashiCorp Vault)
    • Authentication and Authorization

Along with the project the book will focus on the following:

  • Dev Environment

    • Setting up VS Code with a Docker Dev environment to match production resources. This includes the host OS container, dependencies such as a database and telemetry observability applications, basic VS Code plugins
  • Elixir toolchain

    • mix
    • releases
    • iex
    • etc.
  • Continuous Integration

    • Tests
    • Builds in Github or Azure DevOps
    • Automated Deployments
      • Infrastructure as Code
  • Application configuration

    • Application starting with different configurations depending on deployment environment.
    • Using third party or cloud provided tools like Azure Key Vault, AWS’s Key Management System, or something like Hashicorp’s Vault
  • Error handling

    • When to use Supervisors to handle errors and/or try/rescue
      • Let it crash is sometimes an option, but not always.
  • Telemetry

    • Logging
    • What type of Telemetry to collect (depending on the example application)
    • How and where to push
    • Setting up alerts for incident management and on-call (depending on the Telemetry Observability application provider) using our own application
  • Sending email as part of confirming pertinent user changes and information

  • Api Security

  • Unit tests and Integration tests

    • Also part of CI/CD
  • Data Persistence

    • Choosing the correct database type for our application
    • Using Ecto
    • Database Migrations
      • Including production

I’ve gotten permission from Luca (zero2prod.com) to create the domain zero2deploy.com. I probably didn’t need permission but felt that the name is so similar that it would be shameful not to run it by him first.

So, what makes me qualified to write this book?
Absolutely nothing when it comes to Elixir. Almost all of my experience is with deploying Java, C#, and Rust applications.

I’ve gotten a little off track. After all, the purpose of this post is to determine whether this is something the community wants, and to drum up some engagement. If you’re interested please join the mailing list at zero2deploy.com. I promise not to spam; I will only send out emails notifying about updates and releases to the book. If you see a “Not Secure” notification on the website it’s because I’m waiting on DNS to fully propagate at Netlify so I can get my LetsEncrypt cert, which should be within the next 24 hours.

Thanks for your time,
Jeramy

Showing Posts 1 to 8

stevensonmt

stevensonmt

I would LOVE a book on deployment, whether it’s elixir-specific or not.

luckywatcher

luckywatcher

I’d check out https://deploymentfromscratch.com/. It’s an awesome resource.

stevensonmt

stevensonmt

That does look good. Thanks!

jeramyRR

jeramyRR OP

Do yall think that the book project is a good idea? I was trying to come up with something that could be useful that touches on many different areas rather than a plain old CRUD app or chat app that you see in most books and tutorials.

stevensonmt

stevensonmt

I like the idea. It sounds like something that is a common practical use case and something that is likely a reasonable template that can be adapted to other situations. I also think it’s the sort of project that sounds likely to highlight the benefits of Elixir/BEAM.

DevotionGeo

DevotionGeo

There are two books on deployment by Miguel Coba. I have read none of these books, so I don’t know how detailed they are.

I joined the mailing list at zero2deploy .com and will still read Zero to Deployment in Elixir even if it releases after I have read Miguel Coba’s books.

jeramyRR

jeramyRR OP

Thanks for linking those two, I didn’t even know they existed. We definitely need more on advanced topics like this in the Elixir community.

DevotionGeo

DevotionGeo

You’re welcome and thank you for planning this book!

— All posts loaded —

Where Next? Top

Trending in Discussions Top

AstonJ
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
2977 94592 917
New
cblavier
Hey there, It’s been more than a year since we started using LiveView as our main UI library and building a whole library of UI componen...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
heathen
Quite interesting article Google brought me. Didn’t find any mentions about it here. What do you think in general? Would you use togethe...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
axelson
Hi there! :wave: @frigidcode and I (but mostly him) have been running an Elixir Book club, we’re almost done with Designing Elixir Syste...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
georgeguimaraes
Just published claude-code-elixir, a plugin marketplace for Claude Code with Elixir support. These are the plugins I’ve been using for my...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews