3 ms·
I am very skeptical about this. The title makes it look like it's all about Elixir, but there seems to have been a fair amount of re-architecturing. "One of th
by sergioisidoro 3y ago
I am very skeptical about this. The title makes it look like it's all about Elixir, but there seems to have been a fair amount of re-architecturing.
"One of the systems that ran on 200 Python servers now runs on four Elixir servers"
This alone is a major telltale.
- Cthulhu_ 3y agoFor sure; Elixir comes with a whole new architecture as well, and they COULD have gained a significant performance improvement if they rewrote / re-architected it in Python. However, could they have done a 50x performance improvement in Python? And what about the other numbers, like speed and concurrency? That said, I'm confident they crunched the numbers and did the tradeoffs; after all, adding another language and/or architecture will make your company more complex, makes hiring more complex.
- __alexs 3y ago> I'm confident they crunched the numbers and did the tradeoffs; Here is the math they did. Pros: Looks good in my promotion packet. Cons: Need a bigger garage to fit all of these new sports cars.
- sergioisidoro 3y agoDepends. Were they already using gunicorn? What about cPython? Was the code written by a junior developer without much consideration for memorization and dictionary access? And sure, you can get some performance improvements by rewriting things in those languages, at the expense of losing the entire python open source environment. So I would need way more information about the previous system to take this even remotely seriously. Python scales quite reasonably for most small to medium companies.
- hinkley 3y agoThey would have had to create a bad implementation of half of Erlang to accomplish it. Or you could just fuckin' use Elixir.
- throwaway894345 3y agoI don’t know about Elixir specifically, but python is slllllooooowwww. If the operation is CPU bound, you can easily get a 100X performance improvement by rewriting carefully optimized Python in naive Go, Java, Rust, C#, etc. And if you make an optimization pass on that you can usually eke out another 10X. Even on I/O bound operations, in Python you have to choose between the error-prone async framework if you want to improve resource utilization or you stick to the synchronous world and accept extremely low resource saturation. Either way, I can entirely believe that another language would beat Python on both counts. I’ve seen similar results rewriting a Python system in Go with extremely minimal rearchitecting. The silliest thing is that the title credits the improvement to moving toward Elixir rather than moving away from Python (or maybe their case really is ideal for the BEAM VM and wouldn’t translate easily to, say, Go’s runtime model although I doubt it).