alice

alice

What stack would you choose today to write something like Shopify?

Hey,
For a business like Shopify being able to add new features in a Paul Graham’s viaweb style would be very important (aka using a powerful expressive language). Additionally since Shopify is an all in one solution that includes hosting, payments etc, the platform needs to be secure and use the cloud efficiently to optimize profit margins. Thus I am curious whether you would choose Elixir/Phoenix/Ecto or some other stack to write something like Shopify today? If possible please share your reasoning as well.

Thanks.

Most Liked

dimitarvp

dimitarvp

I think your comparisons between languages and frameworks is looking at the problem from the wrong angle.

As has been said in other threads – you should look for the real selling points in the runtimes themselves.

I have just recently answered you here. Is there anything unclear? Anything that didn’t leave you quite satisfied with mine, and others’, answers?

For a quick answer, Erlang/Elixir’s runtime (the BEAM VM) is a perfect fit for any network service – especially web! – except for the cases when you need the last drop of performance per watt, in which case you should go for C++ or Rust or D. The reasons why the BEAM is excellent for web have been already very well documented and my compressed linked answer is, I dare saying, not a bad summary.

alice

alice

Thanks for replying,
I am still learning so please excuse me if some of my questions are redundant to the community, they are not redundant to me because I am not yet aware why they are redundant. I am creating these topics in the chat sections where I am assuming a higher degree of potential redundancy is acceptable. The reason why I am asking what seems to be a similar question from different angles is because I am curious how different infrastructures could benefit from the same implementation. Aka a chat app is totally different from a content management system (in my eyes). Also it’s possible that someone could have different experiences in this particular context and share stuff that wasn’t shared in the previous thread. This wasn’t meant to mean that I am dissatisfied etc. I am just being curious. :slight_smile:

dimitarvp

dimitarvp

It is different only in a business sense and from the point of view of the normal human. They share quite a lot technologically:

  1. A chat app requires a solid WebSockets implementation – which Elixir has inside the Phoenix project, whose quality is enabled by the BEAM;
  2. A good CMS and a good web app require a runtime that allows thousands or millions of HTTP requests/responses be handled fairly and without one request impeding others which is, you guessed it, what the BEAM is about.

So to help you understand why asking similar questions from different angles could be redundant, ask yourself if the app you have in mind:

  • Needs to serve a lot of people?
  • Needs to not lag?
  • Needs to be reliable?
  • Doesn’t need to run as close to the metal as possible? (Example of the reverse would be video transcoding or AI – Deep Learning – calculations.)

If you answer “yes” on all these the chances are very good that Elixir will serve you fantastically.

Conversely, with PHP / Ruby / Python, the web deployments need to resort to all sorts of finicky tricks like keep 20 workers waiting for HTTP requests. What happens when there are 21 or more requests? Those beyond 20 simply wait their turn. If the server is beefy enough you will never notice but the problem is there and will manifest itself in the most inopportune of times.

Elixir’s Phoenix won’t do that. If you get 10_000 requests they all get an OTP process and they all work in parallel (some restrictions apply to database pools but that’s separate).

Lastly, nothing that Elixir can achieve is impossible to be imitated well enough by many others (see Java’s Akka framework for one example). Hell, people write their web apps in C++ even.

But many of us want certain guarantees (fault tolerance, lagless operation, huge parallelism and concurrency abilities etc.). They help us focus on actually delivering value. Our time isn’t 50% - 80% dedicated to operations and system administration. Our time goes to make our customers succeed.

Ask away if anything more is still unclear. Don’t think me hostile, I was legitimately confused about the goal of your question here at first.

Where Next?

Popular in Discussions Top

blackode
Elixir Upgrading is so Simple in Ubuntu and It worked for me Ubuntu 16.04 git clone https://github.com/elixir-lang/elixir.git cd elixir...
New
mikl
I wanted to capitalize a string, and tried using String.capitalize(). That generally works well, until you try to capitalize a word like...
New
New
Fl4m3Ph03n1x
Background This question comes mainly from my ignorance. Today is Black Friday, one of my favorite days of the year to buy books. One boo...
New
mmport80
I have put far too much effort into Dialyzer over the last year or so - and basically - I doubt it’s worth the effort. It’s not as easy ...
New
pillaiindu
I want to convert a Phoenix LiveView CRUD website to a CRUD mobile app. What do you think is the easiest way to do so?
New
mbenatti
Following https://github.com/tbrand/which_is_the_fastest |> https://raw.githubusercontent.com/tbrand/which_is_the_fastest/master/imgs...
New
PragTob
Hey everyone, this has been brewing in my head some time and it came up again while reading Adopting Elixir. GenServers, supervisors et...
New
hazardfn
I suppose this question is effectively hackney vs. ibrowse but we are at a point in our project where we have to make a choice between th...
New
slashdotdash
Phoenix Live View is now publicly available on GitHub. Here’s Chris McCord’s tweet announcing making it public.
New

Other popular topics Top

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
Nvim
Anybody knows a comprehensive comparison of Django and Phoenix, thanks for the help. Where are they similar? Where do they differ the m...
New
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
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
vrod
I am using the Starship cross-shell prompt – it seems pretty nice, but I get some errors: [WARN] - (starship::utils): Executing command ...
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New
KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 36128 110
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list. ...
New
PeterCarter
There are pre-rolled solutions for other frameworks that do work. However, Phoenix does not seem to have these. Have people had good expe...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New

We're in Beta

About us Mission Statement