Alright! I've finished a detailed writeup on how I scaled One Million Checkboxes to handle people checking 650 million checks (!)
i spent more time writing this blog than i spent making the site lol
More highlights + blog link below
[#]gamedev #indiedev
=> More informations about this toot | More toots from eieio@mastodon.gamedev.place
Blog link: https://eieio.games/essays/scaling-one-million-checkboxes/
=> More informations about this toot | More toots from eieio@mastodon.gamedev.place
Unique visitors and checked boxes from the first few hours - we hit 10k pretty quickly! I don't have logs for how many boxes were checked for the first few hours because I only kept my most recent 1 million logs (oops) - but we pushed passed 1 mil / hour pretty fast
=> View attached media | View attached media
=> More informations about this toot | More toots from eieio@mastodon.gamedev.place
The original architecture - nginx for static content + reverse proxy; Flask to fetch initial state + distribute updates via websockets, Redis as a database. State was 125KB - 1 million bits, where a bit was 1 if the corresponding box was checked.
=> View attached media | View attached media | View attached media
=> More informations about this toot | More toots from eieio@mastodon.gamedev.place
Principles for scaling the site. Thanks to Jon Church for the quote on letting things break when they break your expectations :)
=> More informations about this toot | More toots from eieio@mastodon.gamedev.place
Early improvements - lots of servers (fortunately easy to add) + batching
=> More informations about this toot | More toots from eieio@mastodon.gamedev.place
I had plans the night of launch, making it hard to keep the site up
also my server names lol
=> More informations about this toot | More toots from eieio@mastodon.gamedev.place
My server was pegged at the bandwidth cap I set for much of the first night (before it crashed) - I think this was probably malicious, based on the timing?
(thanks to my friend Greg Technology for getting me to think about bandwidth early)
=> More informations about this toot | More toots from eieio@mastodon.gamedev.place
I portscanned my VPC to get the private IP of my Redis replica
=> More informations about this toot | More toots from eieio@mastodon.gamedev.place
Speedup from the go rewrite was nuts
=> More informations about this toot | More toots from eieio@mastodon.gamedev.place
The architecture for the sunsetting logic (freezing checked boxes if they weren't unchecked quickly) - pretty simple!
=> More informations about this toot | More toots from eieio@mastodon.gamedev.place
I learned a lot! This was so fun!!!
=> More informations about this toot | More toots from eieio@mastodon.gamedev.place
I've got one more story about OMCB for you - it's about teens doing very cool things. I'll get that out soon :)
=> More informations about this toot | More toots from eieio@mastodon.gamedev.place
text/gemini
This content has been proxied by September (ba2dc).