DiscoverRunning in ProductionCouchmate Is a Social Chat Platform for Viewers of Live TV
Couchmate Is a Social Chat Platform for Viewers of Live TV

Couchmate Is a Social Chat Platform for Viewers of Live TV

Update: 2021-07-19
Share

Description

In this episode of Running in Production, Matt Oliver goes over building
a chat platform with Akka, Scala and React Native. It’s hosted on DigitalOcean
with Kubernetes and has been running in production since 2013.



Matt talks about rewriting his app a few times, handling tens of thousands of
nightly TV shows, going all-in with Kubernetes, using Terraform, understanding
it’ll take a while to learn things along the way and more.



Topics Include




  • 4:55 – Going from PHP to Scala to Node and back to Scala for the back-end

  • 15:09 – Tens of thousands of channels are created every night

  • 16:39 – What exactly is Akka and the actor model

  • 19:55 – Websockets are being used quite heavily

  • 23:04 – A few Scala libraries that were useful for building this platform

  • 27:31 – There’s a mobile front-end using React Native for Android and iOS

  • 31:30 – Storing and caching TV listings with Gracenote

  • 34:53 – Roughly ~25k lines of Scala and ~11k on the front-end in 2 repos

  • 39:41 – Motivation for using React Native instead of using native languages

  • 45:55 – How to deal with large show TVs with a massive audience

  • 50:28 – The app is basically 3 screens

  • 54:34 – Handling user uploaded gifs and link submissions

  • 1:00:09 – What it was like building out the React Native front-end

  • 1:05:54 – Reasons for picking DigitalOcean and using Kubernetes

  • 1:14:44 – Most of the infrastructure is managed by Terraform

  • 1:16:57 – What it was like to go from not using Kubernetes to going all-in with it

  • 1:24:21 – (3) 2 GB of memory / 2 CPU core servers are running the cluster

  • 1:26:12 – What it’s like developing a new feature and deploying it to production

  • 1:34:28 – The database is backed up on a schedule and before schema changes

  • 1:39:21 – Prometheus, Grafana, Kamon and Sentry are used for metrics and monitoring

  • 1:43:41 – Pingdom is used for an external site monitor

  • 1:44:31 – It took about a month to get confident in using Kubernetes

  • 1:49:29 – Best tips? It’s going to take a while, hang in there

  • 1:53:06 – Writing comments for your future self while learning

  • 1:54:34 – Matt is on Twitter and most socials as @halfmatthalfcat and @couchmatehq



Links



📄 References




⚙️ Tech Stack


Comments 
In Channel
loading
00:00
00:00
x

0.5x

0.8x

1.0x

1.25x

1.5x

2.0x

3.0x

Sleep Timer

Off

End of Episode

5 Minutes

10 Minutes

15 Minutes

30 Minutes

45 Minutes

60 Minutes

120 Minutes

Couchmate Is a Social Chat Platform for Viewers of Live TV

Couchmate Is a Social Chat Platform for Viewers of Live TV