Earlier quoted context omitted.
Erlang's core reason for existence is to control telephone switches, which had two independent general purpose computers connected to the physical switch. So reliability, redundancy, recovery, and fault isolation were the core needs; that drove the design for isolated processes with message passing between them. Because Erlang was in the control plane, and only managing the signal path, not passing the signals itself…
That, indeed. When I compare Elixir/Erlang to some other systems I worked on, "shallow" is the word that pops up. You hit a limitation, you dig into some source code, and you find out that it's pretty simple to understand and to fix it. It feels manageable, I've yet have to run into frustrating roadblocks, and that all gives me the confidence that when I do need to scale up, I have a system I will understand and will…
How Discord Scaled Elixir to 5M Concurrent Users
221–230 of 260 posts
Re: How Discord Scaled Elixir to 5M Concurrent Users
#222Earlier quoted context omitted.
Syntax is a funny thing. It seems that some developers (perhaps most) care about it (disclaimer: myself included) but there's a large number I've encountered who do not. It seems to be a subjective preferential thing, because most rational discussions I've attempted to have about it result in circling around a drain and coming to no conclusion. I'd say that they're simply blind to it (similar to how a colorblind pers…
Syntax (and to some extent, expressiveness/conciseness) is superficial. How the code feels under change matters more.
Re: How Discord Scaled Elixir to 5M Concurrent Users
#223Earlier quoted context omitted.
> I see a bright future for Elixir, and a breath of fresh air for Erlang. Is Erlang really that much of a barrier? Erlang was a touch odd, but I didn't find the language itself that mind-bending. Wrapping my head around the proper way to structure things and the proper use of the OTP libraries was much more time-consuming. That level of architectural thought doesn't magically go away because you changed the language.…
The problem is not and has never been the syntax. It is the tooling. No build tool. No way to generate a new project. Do it yourself docs. No templating system. Macros ala C. No package manager. Building releases was a dark art. It is now getting better. But it was a really steep curve to adoption.
Call me unserious or shallow or whatever, but for me - it was a tiny bit about the syntax. More than a tiny bit, actually. The other things you mention, all valid, were just additional barriers to something already fairly aesthetically unpleasing.
It's improved and improving rapidly, as you say, which is really great to see.
Re: How Discord Scaled Elixir to 5M Concurrent Users
#224Earlier quoted context omitted.
That depends what you're going for. Moving web sockets elsewhere are pretty simple regardless of whether you're using Erlang/OTP or not because it's a frontal layer. If you do that all you are doing is creating another layer to hold connections that needs to relay to the rest of the application. The application behind it still has the responsibility to receive and relay everything from those web sockets, determine wh…
> Moving web sockets elsewhere are pretty simple regardless of whether you're using Erlang/OTP or not because it's a frontal layer. It is supposed to be easy. But they are not using language agnostic messaging. Instead they rely on Erlang distribution protocol. This is what makes it difficult to integrate. > what would be the purpose behind that decision? 1. To achieve composability. I can replace one web socket serv…
If you're going for your C++ layer, try https://github.com/saleyn/eixx for example.
Re: How Discord Scaled Elixir to 5M Concurrent Users
#225Re: How Discord Scaled Elixir to 5M Concurrent Users
#226Earlier quoted context omitted.
> Moving web sockets elsewhere are pretty simple regardless of whether you're using Erlang/OTP or not because it's a frontal layer. It is supposed to be easy. But they are not using language agnostic messaging. Instead they rely on Erlang distribution protocol. This is what makes it difficult to integrate. > what would be the purpose behind that decision? 1. To achieve composability. I can replace one web socket serv…
You're acting like the distribution and serialization formats of Erlang are not open or documented. If you're going for your C++ layer, try https://github.com/saleyn/eixx for example.
Re: How Discord Scaled Elixir to 5M Concurrent Users
#227Earlier quoted context omitted.
Syntax is a funny thing. It seems that some developers (perhaps most) care about it (disclaimer: myself included) but there's a large number I've encountered who do not. It seems to be a subjective preferential thing, because most rational discussions I've attempted to have about it result in circling around a drain and coming to no conclusion. I'd say that they're simply blind to it (similar to how a colorblind pers…
Syntax (and to some extent, expressiveness/conciseness) is superficial. How the code feels under change matters more.
I think this kind of attitude is unhelpful at best, and alienating at worst. There are a ton of "serious" programmers, myself included, who care quite deeply about the enjoyableness of the tools we use, and aesthetic/expressive qualities absolutely come into that.
I believe the recent popularity of elixir kind of proves the case. There are many improvements to the package managers & tooling, etc, but the most obvious is to the syntax - which transforms what previously seemed unapproachable into a genuine option. Dismissing any and all such interest as merely "superficial" seems uncharitable, to say the least.
Re: How Discord Scaled Elixir to 5M Concurrent Users
#228Earlier quoted context omitted.
You're acting like the distribution and serialization formats of Erlang are not open or documented. If you're going for your C++ layer, try https://github.com/saleyn/eixx for example.
A typical answer from open source guys on HN. The last commit was somewhere around Oct 12, 2016 and the developer didn't have time to fix an issue from Nov 9, 2014. Grow up man. We are talking about seamless/painless integration.
You prefer doing all the work mostly from scratch, upfront and straight away, instead of having to maybe adapt a library later if you actually need to migrate.
I think your cost analysis is off.
Re: How Discord Scaled Elixir to 5M Concurrent Users
#229Earlier quoted context omitted.
People tend to forget that scalability is not a binary property. You always scale up to some users, up to some architecture, up to some amount of nodes. There is no system that will scale to infinity without requiring developer intervention once business needs and application patterns start to settle in. Distributed Erlang/Elixir has known limitations . For example, the network is fully meshed, which gives you about…
This is a great point! What would you say is the best book to really learn OTP?
https://www.manning.com/books/the-little-elixir-and-otp-guid...
Re: How Discord Scaled Elixir to 5M Concurrent Users
#230Earlier quoted context omitted.
That, indeed. When I compare Elixir/Erlang to some other systems I worked on, "shallow" is the word that pops up. You hit a limitation, you dig into some source code, and you find out that it's pretty simple to understand and to fix it. It feels manageable, I've yet have to run into frustrating roadblocks, and that all gives me the confidence that when I do need to scale up, I have a system I will understand and will…
It sounds like the main benefit to Elixir is that message handling is built into the language. How does that compare to using a message queue service like zeromq?