5 ms·
It's cool seeing an Elixir company have such explosive growth.
by brightball 9y ago
It's cool seeing an Elixir company have such explosive growth.
- sillysaurus3 9y agoOh? They use Elixir? I see https://blog.discordapp.com/scaling-elixir-f9b8e1e7c29b https://blog.discordapp.com/scaling-elixir-f9b8e1e7c29b and https://blog.discordapp.com/how-discord-handles-push-request-bursts-of-over-a-million-per-minute-with-elixirs-genstage-8f899f0221b4 https://blog.discordapp.com/how-discord-handles-push-request... ... Interesting.
- desireco42 9y agoI forgot about that part, but that just makes them even more dear to my heart.
- schwap 9y agoInteresting that 2 success stories in this space (the other being WhatsApp) are built on Erlang/OTP.
- OoooooooO 9y agoEricsson language + The Open Telecom Platform. Made by a telecom company, build for telecom stuff. Used by basically every enterprise telecom application software (e.g. Asterik). Not that interesting if one knows the Erlang/OTP background.
- sergiotapia 9y agoElixir is part of their great performance! Their engineering blog is really interesting and full of neat information scaling Elixir (which is really hard to find since Elixir scales for a VERY long time).
- j_s 9y agoThey also have open sourced a number of tools that offer tremendous value to anyone scaling Elixir.
- sergiotapia 9y agoAbsolutely! For example: https://github.com/discordapp/fastglobal https://github.com/discordapp/fastglobal
- Tobba_ 9y agoHave we really regressed to the point where simply relaying data with reasonable performance is considered impressive? Figuring out where to relay everything and keeping it all in sync is obviously hard, but that's a distributed systems problem, not (strictly) a performance problem. We've been able to handle millions of concurrent HTTP(!) connections on a single machine for years; it feels like a pretty solved problem. Although, a lot of that involved userspace TCP stacks and really high-end networking hardware, so if you want to stay within saner territories you can scale that number back a bit.
- rdtsc 9y ago> We've been able to handle millions of concurrent HTTP(!) connections on a single machine for years; > Have we really regressed to the point where simply relaying data with reasonable performance is considered impressive? Sure but it's like saying Facebook is just a silly PHP app to share posts with friends and family, and Tesla is just an electric car those have been around for 100 years. If you read their page, they do more than just serve static pages to users. It is a distributed systems problem, solving that in a performant and cost-effective way is not as easy.
- Tobba_ 9y agoI guess what I'm really trying to say is that the performance of the "distributed" part has more to do with the design of the algorithm and less to do with the implementation (i.e Elixir). It's like saying Teslas have really impressive electric motors and entirely ignoring the rest. Their blog (the part GP was referring to anyways), which I'll admit I've only read a portion of, seems to mostly talk about the message-shuffling portion of it though, and a lot of it is just discusses working around their architecture being utterly ridiculous. Once you've figured out where the messages actually need to go though, chucking them out (or the fanout, if you want to call it that) is pretty clearly a trivial operation. And, at least in theory, the routing would only change when a user/node joins/leaves, so the volumes involved there aren't quite as heroic as the message volumes. Handling a few thousand join/leaves per second doesn't sound quite as... scaling, though. I don't think they even bother trying to keep them in perfect order. Again though, I'm not trying to say that it's not impressive that they got it to work, I just wanted to point out how we seem to have gone backwards / forgotten in terms of handling large volumes of traffic. E: You're definitely right that HTTP connections are a pretty poor choice of comparison for messaging though.