3 ms·
Hi. I'm Dave. I really like Go, and I write and maintain a real-time and turn-based multiplayer game backend. I liked Elixir a lot too, but when trying to pick
by themartorana 12y ago
Hi. I'm Dave. I really like Go, and I write and maintain a real-time and turn-based multiplayer game backend.
I liked Elixir a lot too, but when trying to pick the right tool, the learning required around Elixir/Erlang, the VM, and OTP didn't make sense when writing a production system that needs to handle 1000 req/s or more with a small staff. Go handles what we do fantastically.
Now you know someone. :)
- rdtsc 12y agoActually OTP makes even more sense though. WhatsApp processes billions of messages per day and they only have 10 or so engineers working on the backend. At any large scale what becomes more important is fault tolerance. Even though Go has goroutines and sane and modern concurrent IO handling, goroutines still share memory. So then even a super fast 1M req/s system is no good if it is down 50% of the time because it crashed.
- perishabledave 12y agoIf your interested, Jamie Winsor of Undead Labs did a talk at Erlang Factory on how they use Elixir for their backend: https://www.youtube.com/watch?v=_i6n-eWiVn4 https://www.youtube.com/watch?v=_i6n-eWiVn4 Also theres a good writeup on how Erlang was used for some of Call of Duty's infrastructure. http://www.erlang-factory.com/upload/presentations/395/ErlangandFirst-PersonShooters.pdf http://www.erlang-factory.com/upload/presentations/395/Erlan... Sounds like you're already committed to Go, but just wanted to make the case. Concurrent, fault-tolerant, highly scalable systems is Elixir's sweet spot. [edit] One more, great talk from the Elixir Conf on how Martin Shurrer used Erlang to build a multiplayer card game. This one is particularly good because it deals with scaling, game states, and is very practical: http://confreaks.tv/videos/elixirconf2014-otp-in-production-the-nitty-gritty-details-of-game-servers http://confreaks.tv/videos/elixirconf2014-otp-in-production-...
- themartorana 12y agoTo be clear, I really liked both Elixir and Erlang. It's just that purely functional programming, the Erlang VM, OTP, and so on all required learning, and so introduced so many possible points of failure. Go was familiar from the jump, and easy to reason around coming from primarily Objective-C, C, Python, and C#. Considering timeline, it wouldn't have made sense to be so behind the learning curve. With more time or breathing room, I think Erlang would be a space I'd jump into with both feet. Edit: I know Martin through common colleagues and have worked with him in Austria. He's a great dev, and that was a good watch. Thanks for the link.