The deployment section’s results are interesting. Where should the Docker/Heroku responders be pointed to for better solutions (e.g., edeliver -> VPS / Dedicated server)?
And the non-web related uses of Elixir are insightful.
Javascript flavored Erlang?..perhaps that was referring to ElixirScript?
Great results, thanks for doing the survey! Elixir is phenomenal.
My request for a “better” solution is related to the following:
A whopping 71% of Elixir developers rate their OTP experience as below average. This tells me that we need to do a better job as a community on OTP-related outreach. Fault tolerance is one of the biggest selling points of Elixir, and OTP is the path to it.
–
I have two deployment-related takeaways from this. First, we as a community should find a way to expose new users to releases earlier in their Elixir experience. Secondly, we need more examples that clarify the simplicity and value of Erlang’s distribution – Docker and Heroku inherently cripple the value the Virtual Machine can provide.
Yeah, I mentioned to @knewter yesterday that I wasn’t a great fan of that comment and that it at least should be elaborated on. Hex runs on Heroku and it’s working fine for us.
Part of the issue, I think, is that a lot of learning resources for Elixir don’t teach OTP properly. I’m talking about Programming Elixir, and Elixir in Action. What I mean by this is that, to me, OTP isn’t just a set of modules that abstract functionality, they’re building blocks for architecting your software, and I don’t think these learning resources do justice by using toy problems to illustrate how to use them. It wasn’t until I went over Programming Phoenix that I saw a ‘real-world’ example with the wolfram infosys backend that gets built in the book as part of the Rumbl app.
I would love to see an example of a (feature-bare) application that uses OTP behaviours but still architected in the way it would be in the ‘real world’, with explanations as to why any particular behaviour was used and why it’s the right way to use them that way.
edit: For example I’m still pretty fuzzy on why and when you would use a GenServer.
Just a nitpick, the single quote in page title (the title you see on browser tab) got converted to html entity &39;. Otherwise thanks for sharing the result, interesting to know many people coming from JS, I think they may very well be NodeJS devs.
OTP releases are not needed the way Heroku does deploys or you can create releases and deploy the slug manually if you prefer that [1]. Clustering is not needed for the vanilla web apps Heroku is targeted to and neither are hot upgrades. Besides the people doing proper production hot upgrades are a small minority.
If you need those things then don’t use Heroku, that’s easy. But saying that the platform inherently cripples VM is unfair.
Hmm, this makes me wonder, is it a good thing or a bad thing?
I do get your concern, though. The phrasing is a bit too dismissive. It’s great to hear that Hex is running well on Heroku. Is it possible to share the details (dyno type, memory usage, load, etc.)?
If you don’t need then you don’t need it :). For most people it’s probably not worth the extra complexity and testing effort.
It runs on a single hobby dyno 512mb. Memory usage is around ~130mb and peaks at 250mb when rebuilding the registry. Load is around 0.1-0.2 except for during traffic peaks. The traffic is 100-200rpm with peaks over 2000rpm. We don’t host the repository on Heroku, so most traffic goes to Fastly CDN that hosts it.
I don’t know Elixir in Action seemed to present OTP very well in my opinion. There is always an option to read Designing for Scalability with Erlang/OTP.
I’m sure it’s a great book, in fact i bought it a couple of weeks ago and have it on my list. But I think this is part of my point that there needs to be better Elixir+OTP learning materials rather than being pointed to Erlang resources to get a better grasp on OTP.
edit: now maybe I’m just slow at grasping the concepts, that’s perfectly valid too.
Lacks a ton of features that I’ve been using in vim and emacs for decades, I’ve found it hard to use…
OGod that is horribly done, we have it at work, completely sandboxed distinct processes and filesystem, it may as well be running in a virtual machine…
I… have made very long posts about the mis-designs that both the JVM and .NET VM’s have done because of their poor language design.