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
maennchen
:warning: Security advisory: Decimal DoS vulnerability A vulnerability has been published for decimal where very large exponents can cau...
New
marciol
It would be helpful to have a list of companies worldwide that hire engineers without prior experience in Elixir. Often, it can be quite ...
New
Null-logic-0
What IDE or editor are you using for Elixir development? Personally, I use Zed, and I really like it, but sometimes I wish there were a ...
New

Other Trending Topics Top

marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
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
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
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