Ancestors

Written by nolen on 2024-07-26 at 16:26

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

=> View attached media

=> More informations about this toot | More toots from eieio@mastodon.gamedev.place

Written by nolen on 2024-07-26 at 16:26

Blog link: https://eieio.games/essays/scaling-one-million-checkboxes/

=> More informations about this toot | More toots from eieio@mastodon.gamedev.place

Written by nolen on 2024-07-26 at 16:26

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

Written by nolen on 2024-07-26 at 16:26

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

Written by nolen on 2024-07-26 at 16:26

Principles for scaling the site. Thanks to Jon Church for the quote on letting things break when they break your expectations :)

=> View attached media

=> More informations about this toot | More toots from eieio@mastodon.gamedev.place

Written by nolen on 2024-07-26 at 16:26

Early improvements - lots of servers (fortunately easy to add) + batching

=> View attached media

=> More informations about this toot | More toots from eieio@mastodon.gamedev.place

Written by nolen on 2024-07-26 at 16:26

I had plans the night of launch, making it hard to keep the site up

also my server names lol

=> View attached media

=> More informations about this toot | More toots from eieio@mastodon.gamedev.place

Written by nolen on 2024-07-26 at 16:26

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)

=> View attached media

=> More informations about this toot | More toots from eieio@mastodon.gamedev.place

Written by nolen on 2024-07-26 at 16:26

I portscanned my VPC to get the private IP of my Redis replica

=> View attached media

=> More informations about this toot | More toots from eieio@mastodon.gamedev.place

Toot

Written by nolen on 2024-07-26 at 16:26

Speedup from the go rewrite was nuts

=> View attached media

=> More informations about this toot | More toots from eieio@mastodon.gamedev.place

Descendants

Written by nolen on 2024-07-26 at 16:26

The architecture for the sunsetting logic (freezing checked boxes if they weren't unchecked quickly) - pretty simple!

=> View attached media

=> More informations about this toot | More toots from eieio@mastodon.gamedev.place

Written by nolen on 2024-07-26 at 16:27

I learned a lot! This was so fun!!!

=> View attached media

=> More informations about this toot | More toots from eieio@mastodon.gamedev.place

Written by nolen on 2024-07-26 at 16:27

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

Proxy Information
Original URL
gemini://mastogem.picasoft.net/thread/112853727012644008
Status Code
Success (20)
Meta
text/gemini
Capsule Response Time
310.744118 milliseconds
Gemini-to-HTML Time
3.644751 milliseconds

This content has been proxied by September (ba2dc).