Discord's engineers describe how they scale the service, covering Elixir, Rust, Cassandra, Elasticsearch, WebRTC, React, and Android rendering.
Commenters call these fantastic dev blogs and cite the Rust and Elixir scaling and the Cassandra message storage posts.
Disclaimer: Using the following methods could be seen as bypassing the intent of the port restrictions set by your org.
I commit to github using ssh on port 443.
# git remote set-url origin git@<host-in-ssh-config>:<username>/<repo>
From ~/.ssh/config
Hostname ssh.github.com
Port 443
User git
IdentityFile ~/.ssh/.github
Consider using Dovecot on your mail server for port 443. I was not aware that Discord stopped supporting websockets over 443. I run my own Mumble voice chat server so I can put it on 443, but I understand people have a lot of friends on Discord. I am just not happy with their chat logging policy [0].
You could also run a proxy or VPN on port 443. You can also use sslh [1] to have SSH+SSL+Proxy+VPN all on the same port 443. You can do similar things using HAProxy + SNI + SSL, but that is a bigger subject.
For other things that must use other ports or protocols, you can sometimes wrap them using tsocks [2] in your VPN or SSH tunnels to port 443.
[0] - https://blog.discordapp.com/how-discord-stores-billions-of-messages-7fa6ec7ee4c7
[1] - https://github.com/yrutschle/sslh
[2] - https://www.redpill-linpro.com/sysadvent/2015/12/13/socks-proxy-as-poor-mans-vpn.html
It's interesting to compare Slack's tech stack vs Discord. The tech stack of slack is pretty common, while the tech stack of Discord is very geeky: Elixir/Rust + Cassandra for crazy high concurrency, and React/React Native for fast developing and consistent experience.
Like LAMP for Slack, Discord also used MongoDB prototyping in the first few years, but while they prototyping they prototype in a manner they can easily migrate to Cassandra later. Then they successfully migrated to Cassandra. This is brilliant.
I remember the React community migrated from Slack to Discord[0], I guess one of the reason could be the performance. According to the blog, at that time the team only have "14 people full time", which means they've got a very high velocity, amazing.
I didn't find any summary of their whole tech stack but there are several insightful articles from their blog like[1].
[0] https://reactjs.org/blog/2015/10/19/reactiflux-is-moving-to-discord.html
[1] https://blog.discordapp.com/how-discord-stores-billions-of-messages-7fa6ec7ee4c7
WhatsApp stored no data and ran everything as through service, that's why they did it with so few engineers.
Almost no games ever reach scale close to what you just wrote. The few that do are known with large technical teams.
Same goes to everything else. The reason why you can name them almost all is because it's so rare.
You are grossly overblowing the numbers. Only a very few services ever get to these numbers and once they do, they talk about the challenges of scale constantly [0] [1] [2]
[0] https://blog.discordapp.com/using-rust-to-scale-elixir-for-11-million-concurrent-users-c6f19fc029d3
[1] https://blog.roblox.com/2012/04/supporting-millions-of-players-at-roblox/
[2] http://highscalability.com/blog/2014/2/26/the-whatsapp-architecture-facebook-bought-for-19-billion.html
>How do you make optimal use of a computer's memory hierarchy?
Apparently more easily, with a faster time to market, and with less errors than alternative languages. E.g:
https://blog.discordapp.com/scaling-elixir-f9b8e1e7c29b
https://www.wired.com/2015/09/whatsapp-serves-900-million-users-50-engineers/
But the idea is not that you as the end programmer "make optimal use of a computer's memory hierarchy".
It's that you write in a way that makes it easy for the runtime to ensure what you do is solid and correct and scalable -- and it's up for the runtime makers to make sure it makes optimal use of the computer's memory hierarchy.
And it's also that you sacrifice some of that "optimal use", to get the "solid and correct and scalable" part.
Discord | Senior Engineers | San Francisco | ONSITE
Discord is building a platform dedicated to connecting people through games. We grew from 45 million to 150 million users in the last year. We have over 20 million daily active users and that number is growing every day. Discord is just 3 years old.
We're hiring senior engineers in the key roles of backend, native, data science, and data infrastructure. Join an amazing team solving interesting scaling problems and creating next generation features. https://discordapp.com/jobs
Tech: Rust, Elixir/Erlang, React, Javascript, Python, Go, C++, Cassandra, GCP
Engineering blog: https://blog.discordapp.com/tagged/engineering
Feel free to message us directly at jobs@discordapp.com.
They were announced within months of each other [1][2]. That means both companies were planning their stores at the same time. I find it hard to believe Discord did not have any idea about Epic's store, considering they were simultaneously raising a funding round and talking to VCs about their plans (who you would think would be aware of Epic's move). I suppose it's possible Epic played their cards close to the chest though.
[1] Discord Announcement https://blog.discordapp.com/the-discord-store-beta-9a35596fdd4
[2] Epic Announcement https://www.unrealengine.com/en-US/blog/announcing-the-epic-games-store