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 92995 915
New
AstonJ
The obligatory hello world thread! Who are you and where are you from? :stuck_out_tongue:
4616 55835 594
New
caslu
I want to open this thread for you all to discuss and help those who really like Ash but are still hesitant to use it in a real project. ...
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
Herve37
We’re evaluating API mocking tools for OpenAPI-based projects and would love to hear what other teams are using. We’re particularly inte...
New
matt-savvy
Is there a word for the ~> symbol used in Version strings? Do you also just call it a Squiggle Arrow™ ?!
New
GES233
I’m posting this in response to Jose’s recent tweet (Cr. link) : People are sleeping on Elixir for a coding harness: Hot-code swappi...
New

Other Trending Topics Top

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
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
wintermeyer
There are three potential reasons for members of this forum to have a look at https://vutuv.de You are tired or annoyed of LinkedIn. Yo...
New
webofbits
Aludel - LLM Evaluation Workbench Aludel is an embeddable Phoenix LiveView dashboard for evaluating and comparing LLM prompts across mult...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews