moon13

moon13

Is Elixir right choice for an on-premise Windows service?

Hello,

We are working on a project where we have a need to run our “agent” service in customer’s on-premise infrastructure as a Windows service. This is not a simple utility rather a complex system with about 10 to 12 microservices within it.

Here are general (and very high level) requirements for the service:

  • Highly concurrent, fault tolerant, scalable and resilient. Hard to crash and should require no (or minimal) administrative overhead.
  • Ability to have workers processing events from a queue.
  • Single deployable binary with an embedded storage / database.
  • Ability to maintain live & secured connection with its SaaS based central counterpart.
  • Integration with various Windows specific tools such as SCCM, AD, PowerShell, etc.
  • Auto-updating when new versions are released.

I have been doing a lot of research lately to identify the right tech stack for us.I have narrowed down to two choices: Golang and Elixir.

I have extensive Golang development experience. It is extremely simple to cross compile it to target Windows and generates simple deployable exe in the end. However, in my experience (and opinion), it is well suited for microservice based cloud / SaaS environments. Or a simple purpose-specific OS utility application. Using Golang will lead us to write a lot more boilerplate as well as, a bit of infrastructure to enable hot / on-demand upgrades.

From my research so far, it appears Elixir really excels in all of these fronts. However, I have few concerns mainly due to lack of my knowledge and experience with Elixir.

  • How easy would it be to generate a single binary to run as a Windows service?
  • What about protection of IP? I know that as soon as any Software gets on an un-trusted hardware, it is prone to be reverse engineered. However, how easy or hard would it be to break into Elixir based system compared to Golang?

I would also be interested to learn about any other gotchas, potential things that can go wrong or I should keep in mind,

Thanks!

First Post!

OvermindDL1

OvermindDL1

There is no such thing as a BEAM ‘program’, it’s an ecosystem, not a single binary. However it is pretty trivial to make one as a windows service, the BEAM even comes with a program to do that (which is used by Distillary and so forth, highly recommended to use Distillary for deploys in such a way, unsure if mix release can do services but it might?).

Unsure what you mean by this precisely. A program is only as secure as how it is programmed, so it seems exceedingly based on what is made in it (excepting leaving epmd non-local or so).

Where Next?

Popular in Discussions Top

andre1sk
A big advantage to Elixir is all the distributed goodness but for many applications running on multiple nodes having integrated Etcd, Zoo...
New
Jayshua
I recently came across the javascript library htmx. It reminded me a lot of liveview so I thought the community here might be interested....
New
jswny
I would like to better understand what the advantages/disadvantages of umbrella applications are compared to structuring your app as as s...
New
marciol
Please, let me know if this kind of discussion already took place in another topic . Hi all, how do you consider if is better to build ...
New
jeramyRR
This is an interesting article to read. Elixir’s performance, like usual, is excellent. However, it seems like the high CPU usage is co...
New
AngeloChecked
What learn first? Rust or Elixir Hi Elixir community! I’m here because i want learn a new language. I’m a junior developer and mainly i ...
New
arpan
Hello everyone :wave: Today I am very excited to announce a project that I have been working on for almost 3 months now. The project is...
New
chuck
Let me start by stating an assumption: Phoenix is a great approach to building REST APIs. There are many reasons for this, but I will ass...
New
Qqwy
I would like to spark a discussion about the static access operator: .. For whom does not know: it is used in Elixir to access fields of...
New
tomekowal
Hey guys! I want to create a toy project that shows a chart of temperature over time and updates every 5 seconds. I feel LiveView is per...
New

Other popular topics Top

electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New
vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
sorentwo
Hello! tl;dr Announcing Oban, an Ecto based job processing library with a focus on reliability and historical observability. After spen...
985 43657 311
New
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
aesmail
Hello guys, I have finally made it. I created an admin interface for a framework. It’s been on my todo list for years and with the curre...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 36432 110
New
Qqwy
Update: How to use the Blogs & Podcasts section You can post links to your blog posts or podcasts either in one of the Official Blog...
3271 127536 1222
New
svb
Hi! Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New

We're in Beta

About us Mission Statement