Hacker News new | ask | show | jobs
by AlchemistCamp 1315 days ago
For a point of comparison, Discord scaled to 100 million MAU with just 5 platform engineers. That's about 1/3 of Twitter's user count and Discord was also doing both voice and video chat.

At this point, Discord is probably larger than Twitter even on the MAU metric and is handling far more concurrent users and absurdly more events. They've had to scale their staff in the past two years, but it's still considerably smaller than Twitter will be even even after the layoffs.

Related discussion: https://news.ycombinator.com/item?id=14748028

More details: https://elixir-lang.org/blog/2020/10/08/real-time-communicat...

7 comments

I think there’s probably a lot more to consider. Like the fact that Twitter is much older and likely has significant technical debt.

There’s also the fact that Twitter is in many ways an Ads and News platform. The comes with significant non-engineering overhead.

It's definitely not a perfect comparison and technical debt is a very compelling factor. It's a point of comparison, though, with some things more difficult for Twitter but also several things Discord has to deal with that Twitter doesn't.

I don't know how many people it would actually take to run Twitter, but I suspect the number is far lower than most would expect. In particular, the product team has always seemed enormous to me compared to those at other social media companies when comparing customer numbers and velocity of new features.

They’re very different scaling problems though. Discord only has to handle very small graphs and most of the data is never stored.
> most of the data is never stored.

Doesn't Discord currently have an infinite retention policy?

That's right. Unlike Slack, they don't delete or archive older messages, even on free accounts. This is a major reason more and more open source projects have been migrating from Slack to Discord.
They also have a much higher-quality product and have done a much better job adding features that users actually want, and shipping them at a faster rate

Something to think about there

Discord’s architecture is easily shard-able by channel, though. There’s no shared “multi-channel” experience like workspaces in Slack. Sure, users can message each other directly which could cause some complexities but the volume of DMs is likely a fraction of the channel message volume. Twitter is a mess when you try to think on how to break apart the architecture across various users, regions, celebrity accounts, trending topics, etc. Back in the day they used to allocate servers just for specific celebrities just to give an idea on how they were trying to scale.
Discord is an intranet-as-a-service non-public facing system. They are on casual mode.

Twitter has been the public space, the conflux where everything happens all together & becomes known.

Its laughable to me that anyone would try to compare the two. From a technical perspective, scaling discord is intensely stupidly easier, since few subdiscords have to scale to tens of thousands of active users. From a social perspective, scaling discord is eighty bajillion gazillion times easier, since each subdiscord has its own authoritarian dictatorial owners who have complete & total say over their regime. And twitter is just everyone, all together, one huge vast chat room, and theres a huge obligation to only boot jackasses if they really cross some hard set lines.

Twitter is 100x the engineering difficulty with far far far far far more fan out, far more engagement, and it's a million times more difficult socially to handle. This belittling shade you throw is grossly out of order & ignorant.

> Twitter is 100x the engineering difficulty

Sorry, do you honestly think that Tweets are more complicated than real time video and voice?

At a certain point the difficulty of the problem you are solving far outweighs the difference in scale. And Discord's scale is nothing to sniff at, either.

> Sorry, do you honestly think that Tweets are more complicated than real time video and voice

do you not? have you heard of metcalfe's law? the value of a network is proportional to the square of the nimber of users. so too is the difficulty in supporting & running the vastly more interconnected network.

video is easy as shit. yeah you need bandwidth/transit. but people join & leave infrequently. they are low impact consumers: them joining does not change the total load significantly, it's only a little more linear growth. whatever to that, irrelevant.

twitter is a vastly wider & more connected not-so-micro- cosm. if there are 50m followers, and they tweet, the burden of rippling that event out is huge. tracking & making visible every fav, retweet & reply further escallates the difficulty by more deep deep orders of magnitude.

it's laughable to me that you would try to say discord has a higher event rate than twitter. first, i think thats horseshit, totslly absurdly flat wrong in extreme if you count favs, retweets, et-cetera. but more so, event rate is pointless. it's event receievers that actually count, that matter. and the little intranet micro-world discords are, by any measure, totally pointless & irrelevant by compare versus the all-connected fabric that is twitter. discord has no scale, is itrelevant entirely, in how far it has to spread any given message/event. discord is a large number of the tiniest little fishbowls; it compares not at all to the sea.

> video is easy as shit

Agree. We used to just stick a giant metal pole in the air and ask others to do the same with a smaller pole.

It's just data, is my point. Events are harder, require actual processing.
I'm really curious what you think is so hard about Twitter.

As far as I can tell it is basically a CRUD app with some real time analytics to surface some trends.

You said some stuff about Events bubbling, like if I Retweet something you seem to think there's a lot of complexity there. But as far as I can figure all that does is create a new row in a database somewhere and when someone who follows me fetches their feed, my new retweet gets included in there.

Aside from the scale, what's hard about it? Am I completely missing something?

Businesses don't run on engineering
You're right, we should hire more MBAs
Well, Twitter obviously did :-)
That is the same analogy as Wordpress being scalable because it runs a third of the web or Ruby Rails because it is being used in Shopify.

I am not a Discord expert, but AFAIK, all three are similar in that they run their own instances. A Wordpress with App and DB per site, and I assume mostly similar to a Shopify Store, and every Discord Server where each and every instances of them aren't interconnected.

Twitter is one giant space with the Top 50 account each having a reach of over 40M users.

And for another point of comparison. Twitter has ~250M Global DAU over dozen of time zones. Weibo in China has similar DAU in a single time zone.

No, it isn't the same as Wordpress. For Wordpress, a ton of instances are self-hosted. For Discord, there are exactly zero self-hosted instances. Every single discord channel, message, and user interaction goes through Discord servers. It is a single giant space.
The ownership is besides the point here. The point is the Wordpress installs don't talk to each other, neither do Discord servers, behind the scenes. Discord's servers aren't one giant big powerful computer, it's a lot of smaller ones. Behind the scenes, each Discord "server" exists separate from all the rest of them. After the load balancer, the StableDiffusion Discord messages don't intermix with the Midjourney Discord messages, so their internal architecture can be that each "Discord server" is self-contained to it's own group of servers that don't talk to other servers. (Discord's decision to call them servers here is really unfortunate and confusing.)

This means that for scalability reasons, it's easy to create a new "Discord server" as it only has to be connected to the other people on that server, and not the whole rest of the Discordverse.

Twitter has no such luxury. So when that one cat video goes hella viral, the system as a whole needs to handle that access pattern, which is actually difficult to scale. We'll have to wait and see how the site handles the world cup in a few weeks, as that is an event that stresses the service.

But they are their own Discord Server instances right? A Discord Server for Ruby has zero interaction with a Discord Server on Gaming or Politics.
If I block someone on one server, they are blocked on all servers for me. If some server I am in has custom emojis and stickers, and I am a discord nitro subscriber, I can reuse those emojis and stickers by posting them on other servers. Other users on that other server can see them, but cannot use them. If i change anything on my profile, it will be reflected on all servers.

There are probably tons of other cross-server relationships that I forgot to mention, simply because I only listed the first few that came to my head.