Justin.tv's Live Video Broadcasting Architecture (2010)
I worked at Twitch from 2014 to 2018. I was never on the video team, but here are some details that have changed.<p>Video:<p>- Everything is migrated from RTMP to HLS; RTMP couldn't scale across several consumer platforms<p>- This added massive delay (~30+s) early on, the video team has been crushing it getting this back down to the now sub-2s<p>- Flash is dead (now HTML5)<p>- F5 storms ("flash crowds") are still a concern teams design around; e.g. 900k people hitting F5 after a stream blips offline due to the venue's connection<p>- afaik Usher is still alive and well, in much better health today<p>- Most teams are on AWS now; video was the holdout for a while because they needed specialized GPUs. 
EDIT: "This isn't quite right; it has more to do with the tight coupling of the video system with the network (eg, all the peering stuff described in the article)" -spenczar5<p>- Realtime transcoding is a <i>really</i> interesting architecture nowadays (I am not qualified to explain it)<p>Web:<p>- No more Ruby on Rails because no good way was found to scale it organizationally; almost everything is now Go microservices back + React front<p>- No more Twice<p>- Data layer was split up to per-team; some use PostgreSQL, some DynamoDB, etc.<p>- Of course many more than 2 software teams now :P<p>- Chat went through a major scaling overhaul during/after Twitch Plays Pokemon. John Rizzo has a great talk about it here: <a href="https://www.twitch.tv/videos/92636123?t=03h13m46s" rel="nofollow">https://www.twitch.tv/videos/92636123?t=03h13m46s</a><p>Twitch was a great place to spend 5 years at. Would do again.