0daysto.live

0daysto.live

I'm sorry, it took *how* many servers to post a single long message from Ghost to 5k fediverse accounts and handle some replies?

https://activitypub.ghost.org/beta-plans/

(via @fediversereport

Remember last week when we sent you that newsletter about replies, and then replied to all your comments? Well, we have auto-scaling for our ActivityPub infrastructure turned on, and with around 5,000 followers and a decent chunk of replies, it quickly scaled itself up to 10(!) servers to handle the load.

One of the things we're learning as we go is that ActivityPub is resource-intensive, and can be pretty expensive/difficult to run robustly. Needless to say, if we're going to support tens of thousands of sites and millions of followers with Ghost, we'll have to do quite a lot more work here.

@kissane @fediversereport yeaaaaaah, i considered running my own instance til i realized that this stuff runs on ruby on rails, which isnt.. the best... in terms of performance

@Viss @kissane @fediversereport ghost is using fedify! which is fairly modern JS AFAIK.

@by_caballero @kissane @fediversereport yeah the issue here isn't the front end js stuff - its whats running under the hood, powering any given mastodon instance. its a ton of ruby on rails, which twitter showed the world "isnt exactly the best language/framework to do huge, high volume. small bandwidth transactions and queueing systems". its why twitter scrambled to get off RoR and moved to scala as they grew.

i was VERY SURPRISED, to say the least, learning that mastodon still uses RoR.

@Viss @kissane @fediversereport right but ghost doesn't run mastodon, it runs fedify which interoperable with mastodon API. the 10 servers in question are fedify servers:
https://fedify.dev/

@by_caballero @kissane @fediversereport the repo that project links to appears to be a node/npm project with dirs indicating it runs inside a docker container.

so this is javascript running 'as a server' inside docker, which is very different than ruby on rails, but in its own way, super topheavy in terms of layers of abstraction, and also entirely unsurprising it gets loaded down easily.

@by_caballero @kissane @fediversereport same 'effect', different 'application of force'

@Viss @kissane @fediversereport

This might have been true in 2014, but it’s not really true in 2024. Plenty of us have Rails fleets sized in the dozens with monthly traffic sized in the tens of billions of requests. Shopify does even more than that.

That said, the floor of resource requirements can be fairly high without tuning, but this is largely due to glibc’s malloc and jemalloc helps. This makes you think it scales linearly from this floor, but it doesn’t.

@Viss @by_caballero @kissane @fediversereport You could use Pleroma which is written in Elixir if you wanted to avoid nodejs and ruby on rails
replies
0
announces
0
likes
0