Running in Production

Hear about how folks are running their web apps in production. We'll cover tech choices, why they chose them, lessons learned and more.

https://runninginproduction.com/podcast/

subscribe
share






Games Directory Lets You Sync Your Games and Achievements in 1 Place


In this episode of Running in Production, Vlad Radulescu goes over creating a game directory site with Ruby on Rails. It’s hosted on AWS and has been up and running since 2014.

Vlad talks about having thousands of active users, interfacing with a few game platform APIs, running millions of Sidekiq jobs, storing 10+ billion database records, keeping things as a monolithic app, deploying the web app to 1 server and lots more.

Topics Include
  • 6:30 – Motivation for switching from PHP to Ruby on Rails
  • 7:07 – Figuring out which gaming API to implement first and how their APIs are
  • 10:27 – Reverse engineering undocumented API calls from the Windows Steam client
  • 12:18 – Using a separate database for each gaming platform provider
  • 15:05 – A few useful features of Rails that’s being used and Stimulus Reflex
  • 20:19 – Switching from Webpacker to using Vite
  • 23:14 – Using Slim instead of ERB and a few other gems being used
  • 25:29 – It’s a single monolithic Rails app that’s using namespaces
  • 28:36 – A lot of the time spent developing this app is working with the game APIs
  • 31:00 – Using Sidekiq, a billion (!) gamer activities stored and millions of Sidekiq jobs
  • 34:18 – It’s hosted on a single AWS T2.large instance (4 vCPUs / 16 GB memory)
  • 36:13 – The database is on an R6g.large with 10+ billion records
  • 39:14 – Ansible was used to set up the EC2 instance and it’s running Ubuntu 18.04 LTS
  • 41:13 – A couple of AWS resources being used
  • 43:01 – The process to ship a feature from development to production
  • 44:16 – Switching to using TailwindCSS in a nicely controlled way
  • 47:57 – At the moment the site is free with no desire to make it pay to win
  • 49:55 – Hosting is $1,500 pounds a month and it’s been running for free for 7+ years
  • 51:43 – There’s 7 terabytes of S3 storage and daily database backups
  • 55:59 – 50ish mini servers spread across Heroku’s free tier to bypass API rate limits
  • 59:45 – Being dialed into the ops side of things but there’s room for improvement
  • 1:00:54 – Keeping up with a full date job and a long running passion project
  • 1:02:25 – Best tips? Don’t forget to plan things out
  • 1:05:56 – You can find Vlad on Twitter and Games Directory will be open source soon
Links ???? References
  • https://www.giantbomb.com/api/
  • https://www.telerik.com/fiddler
  • https://games.directory/u/pacmakaveli (Vlad’s profile)
⚙️ Tech Stack
  • rails →
  • ruby →
  • ansible →
  • aws →
  • better-uptime →
  • elasticache →
  • elasticsearch →
  • github-actions →
  • lets-encrypt →
  • memcached →
  • mysql →
  • nginx →
  • rds →
  • redis →
  • s3 →
  • sentry →
  • tailwindcss →
  • turbolinks →
  • ubuntu →
???? Libraries Used
  • https://github.com/stimulusreflex/stimulus_reflex
  • https://vitejs.dev/
  • https://github.com/puma/puma
  • https://github.com/slim-template/slim-rails
  • https://github.com/github/view_component
  • https://github.com/mperham/sidekiq
Support the Show

This episode does not have a sponsor and this podcast is a labor of love. If you want to support the show, the best way to do it is to purchase one of my courses or suggest one to a friend.

  • Dive into Docker is a video course that takes you from not knowing what Docker is to being able to confidently use Docker and Docker Compose for your own apps. Long gone are the days of "but it works on my machine!". A bunch of follow along labs are included.
  • Build a SAAS App with Flask is a video course where we build a real world SAAS app that accepts payments, has a custom admin, includes high test coverage and goes over how to implement and apply 50+ common web app features. There's over 20+ hours of video.


fyyd: Podcast Search Engine
share








 August 30, 2021  1h6m