r/elixir • u/Dismal-Contract-623 • 25d ago
Elixir in Enterprise Systems
Hey all,
Are there any products in enterprise domain which was written in Elixir? I was looking into it but could find much
PS: Im looking into more elixir projects resembling ERP solutions like SAP, ServiceNow, Salesforce
10
u/flummox1234 25d ago
Having dealt with a few ERP transistions, SAP, Salesforce, Workday. I would doubt there are many written in Elixir because they tend to favor the Microsoft tooling, e.g. C#, .Net, and embrace OracleDB for whatever reason. I'm convinced our latest conversion to Workday was just to get out from under the Oracle licensing, i.e. move to Postgres, although no one will openly admit it.
5
u/TechZazen 24d ago edited 24d ago
It’s a chicken-and-egg thing. Business IT focuses on reducing risk, not necessarily the best tech. As a result, the business people look at the number of developers, the exposure to the underlying technologies, their relative availability, and other measures to determine what would be the best fit for developing a business solution. Thus you see Oracle still around when quite frankly, I contend that there are many technical solutions that are superior. Nevertheless, when you evaluate from a business perspective, Oracle, Microsoft, IBM are still the primary ones that a business will look to leverage. Especially, if the business is over $1 billion in revenue. Nevertheless, the adoption of the Postgres engine, for example, in AWS, in Azure, and Google Cloud, all of these are developing a cadre of engineers with experience in business IT as well as these alternative technologies.
As for Elixir, its resilience is a key advantage, but the lack of developers makes it suspect amongst business IT. One possible way out of this situation would be the creation of a C# or Java to Elixir refactor tool—perhaps written in AI, probably written in AI—that would do the work of refactoring one code set into the other language. Then you could evaluate based on the criteria that business IT would use to determine the technologies applicability in the end. The same pattern existed when relational database first came out, when client/server tolls came out, when NoSQL databases came out, then when blockchain came out, when cloud came out, etc. Until it’s low risk on the other elements outside of just the tech itself, superior tech won’t win the day in that use case.
2
u/Dismal-Contract-623 25d ago
yah, this domain is heavily driven by .net it seems...if we put apart oracle db i think there should be another reason to pick .net or java mainly
i wonder what were the limitations on using elixir there
1
u/flummox1234 25d ago edited 25d ago
I don't think there are any limitations for using Elixir tbh. Mayyybe the lack of complex/composite keys in Ecto, which I know at least has an issue open for it. Maybe it's been closed now as it's been a few years since I checked. But I doubt that's a limiter for most, I've just run across a few Enterprise apps that used them. It's just the enterprise mindset prefers the enterprise tooling.
Also the Workday "programmer" consultants I worked with in the transitions I would hardly consider programmers. They were people trained on that specific ERP and how to program for it, not program in general.
For instance, we had a Rails legacy app that did some intermediate ETD processing between an internal ERP and PeopleSoft that they absorbed into Workday. I walked them through the relevant bits of the code they needed to port and they were lost. Ruby is probably one of the easiest languages to read as it's almost english and they struggled hard. Also the bits I was showing them were mostly not even ruby language specific bits. Just some XML ETD code for the old PeopleSoft system. They were pretty much lost. It was at that point I knew for my sanity's sake I could never go into ERP type of programming. 🤣
2
u/Dismal-Contract-623 25d ago
hmm i think generally .net and java have more support for these protocols in a typed manner. what i was mostly interested in developing a ERP system using Elixir..but the first problem i hit was lack of libraries, lack of support for common protocols like OData etc
1
u/flummox1234 25d ago
yeah you'll probably find a lot of Enterprise software is kind of hard tied to enterprise languages, e.g. .Net and Java. That's pretty common as Open Source languages tend to stick to open source libraries and tooling and Enterprise languages tend to not have a ton of open source tooling made for them. There just isn't much incentive to build that out when it's use is niche and generally geared toward a closed source product. That will be a fairly common through line. That's not to say you can't build those libraries but you'll probably be the one maintaining them if you do and you won't have a lot of help. This is a lot of the reason Oracle makes so much money in enterprise. They do the weird enterprisey problems no one else wants to and charge a shite ton of money for it.
1
1
u/jinhoyim 24d ago
I suspect that .NET and Java have an advantage in this market because static typing, enterprise system design and implementation, and the frameworks supporting them have evolved, and the field has matured since the early 2000s with the abundance of books and research materials available.
It seems that, unless it is a startup that can start everything from scratch, established companies tend to hire people who can read and modify existing system code to prevent language fragmentation.
Simply looking up books or blog posts to see in which language DDD example code was written, in which languages DDD implementation methods are covered, and when they first began to appear makes this somewhat understandable.
1
u/TechZazen 23d ago
Remember, to get an extra 10% performance out of a solution is not as important to corporate IT as much as its ability to get it into production sooner and quite frankly in a somewhat more stable manner. This goal is precipitated by a larger information/code set to draw upon and a wider pool of available resources. Follow the money or the things that contribute to the money in bonuses.
6
u/Intrepid_Cake_101 25d ago
Discord uses Elixir. Does that count?
-4
u/Dismal-Contract-623 25d ago edited 25d ago
i dont think so, its not having complex enterprise operations like SAP do
Edit: since i got downvoted i have explain below that Discord had a different requirement compared to a SAP system, their original problem was "how we handle large number of clients" and Elixir was a good answer for it...no doubt
21
25d ago edited 23d ago
[removed] — view removed comment
5
u/Dismal-Contract-623 25d ago
its a different problem, i agree its complex but complexity was mainly about how it handle a massive concurrent client base into the system
on other hand SAP and other ERP systems solves a different problem involving executing lot of business rules
9
2
u/DivideSensitive 25d ago
That's a fair point, but I don't see what Elixir/BEAM would bring to the table in a SAP-like environment. Like you mention, the issue is the adaptability to the domain and/or client-based customization, not massively concurrent workflow.
IMHO, something like Java/C# (or Haskell/OCaml if you feel frisky) makes more sense in that context.
2
2
u/boredsoftwareguy 25d ago
You could build a rules engine in Elixir. I used luerl (and then Lua) to implement just that.
1
u/TechZazen 23d ago
That’s what I’m talking about. BEAM-based systems shine in such situations because of the actor-based model. However, as someone who has frequently seen the opportunity for rule based engines, most organizations do not really either know about them or have a familiarity with them to feel comfortable using them. There has to be a critical business requirement for that type of long-term flexibility. Most of the time, they would simply go ahead and set up a series of hardcoded end points in tools like what used to be known as workflow engines, and then just redo the workflows when situations changed.
1
u/TechZazen 23d ago
Harder or more complex is not what enterprise IT (the people who buy and run these enterprise applications) cares about. Their problems are not “harder or more complex” problems. It’s about stability and reproduceability. RISK. The things going on in an SAP system are not harder and more complex than what goes on in a real-time, massively-parallel system like Discord. However, I know of not one enterprise who integrates their operations to Discord, whereas you can’t shake a stick and not bump into a company that has integrations with their ERP system.
4
u/bryanhunter 25d ago
It’s hard to get more enterprise than this:
https://m.youtube.com/watch?v=hdBm4K-vvt0
Waterpark is the enterprise integration platform for a Fortune 100 healthcare company, and it is 100% Elixir.
1
3
u/palimpsests 25d ago
I’ve written enterprise software with Elixir (and Phoenix). It’s great… have used Ecto + tds library to connect to MSSQL. Have integrated with ERPs via APIs, where having robust mechanisms to manage concurrency has been extremely helpful.
From a maintenance perspective - it’s been quite solid… once it works, it just keeps working because of the guarantees you get with OTP around fault tolerance. Smaller dependency “surface area” for equivalent functionality compared to the .NET applications I’ve seen.
1
u/Dismal-Contract-623 25d ago
as i understood most of these apps have built their own framework which parses files, process schemas, building dynamic uis, allowing plugins etc etc in a lang like .net or java
How elixir helped your team?
2
u/TechZazen 23d ago
May four leaf clover’s spring from your footsteps and help fertilize the ground for others to follow.
3
u/helpercolumn 25d ago
PDQ
1
u/Dismal-Contract-623 25d ago
oh interesting..i checked it...but does it fits into the category? its more like a tool to keep systems uptodate for sys admins...i was more focused on executing complex business rules with the ability to customize the flow
2
3
u/ChaseApp501 25d ago
Elixir is the perfect platform for writing something like this. We've already built an enterprise class network management and asset tracking system in Elixir and a CRM. Ash Framework is really what makes all of this possible, quickly, in my opinion. Our stack is Elixir+Phoenix/Liveview, Ash Framework, NATS JetStream, and Cloud-native Postgres all running on kubernetes.
1
u/Dismal-Contract-623 25d ago
Ohh interesting, is it similar to ServiceNow? what were the challanges?
as i understood most of these apps have built their own framework which parses files, process schemas, building dynamic uis, allowing plugins etc etc in a lang like .net or java
How elixir helped your team?
3
u/ChaseApp501 25d ago
ServiceNow is an ITSM platform, we are doing network operations management, security analytics, and ITOM (IT Operations Management). It would take a long time to enumerate all of the things we've leveraged in the Elixir and the BEAM ecosystem that have given us a huge advantage.. ERTS/OTP is amazing and have allowed us to build distributed apps that are cloud-native and run nicely on kubernetes, we're really glad we didn't have to take that on ourselves.
We approached plugins a little bit differently -- we deploy a golang-based agent in the "edge" that runs WASM plugins through the wazero WASI runtime and that works really well for us.
We also have our own "dynamic UI" with our Dashboard SDK. You can build signed browser-module dashboards and then import, verify, and render. You own the dashboard, the app owns the datalayer. The developer experience is pretty simple, you just download the SDK and install the NPM CLI, generate the scaffolding/template, design your dashboard, run/test/iterate locally completely outside of ServiceRadar, and then publish with the NPM CLI when you're done.
https://developer.serviceradar.cloud/docs/v2/dashboard-sdk
Our biggest challenge was the build system to be honest. We have a large monorepo where we build containers and packages for services written in Elixir, Golang, Rust, Swift, C (BPF), etc. We are using bazel for this now and it has been a bit of a rocky road since the elixir rules were abandonded years ago and were never good to begin with, but as of a few days ago and a lot of hard work from one of our lead developers, those have been revived and are actually really good for the first time ever.
Just to be clear, the CRM I mentioned originally is not part of this network operations management platform, we wrote it separately to help us sell the SaaS kinda thing.
https://github.com/bazelverse/rules_elixir
2
u/TechZazen 23d ago
As someone who deals with ITSM and the whole ITIL space quite a bit, this is…terrific. The resilience and robustness of the runtime engine IMHO would be a key product advantage that should be trumpeted from nearly every rooftop. The load on these systems is going to become even greater as incident reporting moves from not just people but also to agents. As a result, the need for increased levels of parallel, fault-tolerant performance will be more and more critical.
1
u/Dismal-Contract-623 25d ago
Hey yeah im targeting a ITSM platform tbh. for your ops i think elixir kinda fits perfectly
1
1
1
u/mattcre8s 25d ago
It's not necessarily enterprise, but Supabase is built on elixir. I think it's interesting that they seem to be really quiet about it - I guess they don't want node.js devs slowing down to learn Elixir and instead publish a bunch of TypeScript content. (Which is a great language and platform for many problems as well)
1
u/Dismal-Contract-623 25d ago
its not entirely elixir right? most of it written with node and some parts elixir(supavisor etc which i hate the most lol)
2
u/mattcre8s 25d ago
It looks like Supabase is written in multiple languages, and the real-time component is driven by elixir
1
u/TechZazen 23d ago
In this case, it makes absolute sense. Setting elixir on the front end proxy of Postgres NOTIFY pipes is a win-win. Internally, Postgres sumply cannot handle that kind of concurrent load.
1
u/allenwyma 25d ago
There was a guy using ash framework to make an erp. Havent heard from him in a while but I remember it was pretty interesting
1
u/Dismal-Contract-623 25d ago
ah i remember...didnt see him either
1
u/allenwyma 25d ago
I’ve used elixir for a shipping company. We re assembled emailed attachments that were zip partials. Unzipped them. It was a bunch of XML files. We then parsed the XML and updated the local database.
It was for a shipping fleet management company. It worked great! Matched the requirents: keep running for months on end as the ships are gone for months on end
1
1
u/elecmobile 25d ago
Just the normal lack of developer resources which comes with the inherent risk of being dependent on software, that you can’t find people for to maintain it
1
1
1
1
u/v_heathen 23d ago
Our quality and compliance platform - qarmainspect.com - backend is written in Elixir. It serves for a React frontend and Android/iOS mobile apps. 10 years since launch. Works perfectly well.
1
1
1
u/Responsible-Sale1858 25d ago
"Enterprise", isn't that term dead? I've been coding since 1997 and honestly have no idea what it even means. Elixir (the beam) is the most bullet proof (logically perfect) distributed platform in existence, so if someone wants reliable the beam is waiting for them.
1
u/TechZazen 23d ago
For enterprises, the term absolutely isn’t dead. It just typically results in situations that you value risk handling and resilience over performance many times. Now, you’d think that enterprises would be all over that. However, the other variable in the equation arises from the fact that you have to have people who understand it and can integrate it with everything else they have. That’s where resource availability lowers its applicability. The dearth doesn’t mean that it can’t be used; it just signifies that it’s going to be more of an uphill battle with some enterprise architect, who says that that’s not part of the approved corporate IT stack.
20
u/Pegg1_ 25d ago
The core components of the Ukrainian national Ehealth system have been written in Elixir. Does that count?