3 ms·
I don't believe there is a good answer to this as details are missing. What scale are you trying to get to? What level of concurrency? How much state and how of
by ninjakeyboard 8y ago
I don't believe there is a good answer to this as details are missing. What scale are you trying to get to? What level of concurrency? How much state and how often is it accessed? And what are the skill of your engineers.
You could write a rails monolithic app on postgres if you're building an internal application 100 people will use. Or you could use Akka and Scala with all state in memory backed by an event journal stored in cassandra.
IMO Ruby, Python and Elixir are perfectly suitable but the last languages I would choose. I've been working with elixir for the last 1.5 years and have decided I don't really like it. I'm happiest writing scala - I get more done faster and less bugs make it into production. Event sourcing and Akka cluster allow some really interesting patters that move state into application memory. But those technologies require a much different, more involved skill and experience set to lead.
I'd probably be using Go or Scala if I had to start a tech company in a small city. Scala if I were in a large city with talent 100%. There is evidence that Static typic improves speed of delivery and it's easier to refactor/maintain. And it's faster (generally). Both languages are much more widely used than elixir.
- malloryerik 8y agoMay I ask, what is it that you don't like about Elixir?
- inferiorhuman 8y agoDeployments are a nightmare.
- nathan_long 8y agoI'm not sure what you're comparing it to. Releases can be tricky, but if you're accustomed to `git push heroku master`, or to "blue green deployment" (https://martinfowler.com/bliki/BlueGreenDeployment.html https://martinfowler.com/bliki/BlueGreenDeployment.html), there's no reason you can't do that with Elixir.
- inferiorhuman 8y agoDeployments are a significant amount of magic, moreso than with other languages. You're deploying a whole beam ecosystem not just a single app. If you want to do anything remotely dynamic (e.g. using environment variables as knobs a la 12-factor) you'll have to rely on distillery and voodoo. Meanwhile distillery has been broken on FreeBSD for months with no fix in sight and no actual community understanding of how things fit together. Dockyard also has a good blog post explaining how complex Elixir deployments get: https://dockyard.com/blog/2018/02/28/elixir-deployment-tools-update-february-2018 https://dockyard.com/blog/2018/02/28/elixir-deployment-tools... No bueno. Generating a WAR or JAR to deploy is typically trivial in comparison. Capistrano? Easy peasy AND reliable. Distillery? I'm just glad I don't have any production Elixir apps.
- ninjakeyboard 8y agoI don't dislike elixir, I just think scala and akka are better tools for some problems for a few reasons. - BEAM is slow for computation. - Static typing
- agbell 8y agoIf scala, http4s, gaurdrail and doobie connecting to postgres is a great stack. Http4s is a great functional http service. Guardrail generates stub services from an openapi spec and is well thought out enough that it doesn't get in the way. Put React with Typescript on top of it.