Log in

goodpods headphones icon

To access all our features

Open the Goodpods app
Close icon
Running in Production - Podia Has Everything You Need to Sell Online Courses

Podia Has Everything You Need to Sell Online Courses

04/05/21 • 71 min

Running in Production

In this episode of Running in Production, Jason Charnes goes over building a video course hosting platform. It’s built with Ruby on Rails and is hosted on Heroku. It’s been running in production since 2014.

Jason talks about using StimulusReflex / Action Cable, upgrading to Sidekiq Enterprise, writing tons of tests, setting up auto scaling on Heroku, tips to run zero down database migrations at scale, ways to reduce 3rd party API calls and more.

Topics Include

  • 2:39 – Motivation for using Ruby on Rails (and yes Rails does scale!)
  • 3:50 – Using interactors and Action Cable with StimulusReflex
  • 6:06 – Things to think about for using Hotwire Turbo Streams vs other solutions
  • 10:56 – Action Cable is embedded into the main web server
  • 12:25 – The workflow gem and how payments are handled with Stripe and PayPal
  • 16:15 – Recently upgrading to Sidekiq Enterprise and also using flipper for feature flags
  • 19:40 – Using Knapsack Pro to help speed up tests in CI
  • 21:18 – Code to test radio is about 1 to 1.5 and there’s about 38k lines of non-test code
  • 24:03 – Examples of when they’re using Sidekiq’s batching feature
  • 26:38 – Mostly using the asset pipeline but also using Webpacker and using StimulusJS
  • 30:07 – Most developers at Podia touch most areas of the code base
  • 31:37 – The run down on how the site editor works and using Trix plus Active Storage
  • 34:41 – It’s 2021 and uploads still aren’t a fully solved problem
  • 36:57 – Handling bulk video uploads from Podia to Wistia
  • 38:38 – PostgreSQL is the main database, Docker isn’t being used and on-boarding new devs
  • 40:53 – How they’re using Caddy and Let’s Encrypt to link custom domains to customers
  • 42:48 – Using Postmark for transactional emails and SparkPost for email campaigns
  • 44:18 – Full text search with PostgreSQL and building the Podia admin dashboard
  • 47:38 – It’s hosted on Heroku and they use the Rails Autoscale add-on
  • 49:43 – Surviving Black Friday without any problems
  • 51:25 – The end to end process and time to deploy code from development to production
  • 53:01 – Gems and strategies to help run database migrations at scale
  • 56:44 – Using Diffend to audit gems and switching from Heroku’s scheduler to Sidekiq
  • 1:01:42 – The DB is backed up on Heroku’s schedule and everything else is backed up too
  • 1:03:21 – Avoiding tons of third party API calls by storing certain things locally
  • 1:05:16 – Their payment code builds upon the official Ruby SDKs from Stripe and PayPal
  • 1:06:11 – Using Uptime Robot, Cronitor, OpsGenie and Slack for monitoring and alerts
  • 1:09:13 – Best tips? Build a friendly team of co-workers and automate as much as you can
  • 1:11:03 – You can find Jason on Twitter at @jmcharnes

Links

📄 References ⚙️ Tech Stack
plus icon
bookmark

In this episode of Running in Production, Jason Charnes goes over building a video course hosting platform. It’s built with Ruby on Rails and is hosted on Heroku. It’s been running in production since 2014.

Jason talks about using StimulusReflex / Action Cable, upgrading to Sidekiq Enterprise, writing tons of tests, setting up auto scaling on Heroku, tips to run zero down database migrations at scale, ways to reduce 3rd party API calls and more.

Topics Include

  • 2:39 – Motivation for using Ruby on Rails (and yes Rails does scale!)
  • 3:50 – Using interactors and Action Cable with StimulusReflex
  • 6:06 – Things to think about for using Hotwire Turbo Streams vs other solutions
  • 10:56 – Action Cable is embedded into the main web server
  • 12:25 – The workflow gem and how payments are handled with Stripe and PayPal
  • 16:15 – Recently upgrading to Sidekiq Enterprise and also using flipper for feature flags
  • 19:40 – Using Knapsack Pro to help speed up tests in CI
  • 21:18 – Code to test radio is about 1 to 1.5 and there’s about 38k lines of non-test code
  • 24:03 – Examples of when they’re using Sidekiq’s batching feature
  • 26:38 – Mostly using the asset pipeline but also using Webpacker and using StimulusJS
  • 30:07 – Most developers at Podia touch most areas of the code base
  • 31:37 – The run down on how the site editor works and using Trix plus Active Storage
  • 34:41 – It’s 2021 and uploads still aren’t a fully solved problem
  • 36:57 – Handling bulk video uploads from Podia to Wistia
  • 38:38 – PostgreSQL is the main database, Docker isn’t being used and on-boarding new devs
  • 40:53 – How they’re using Caddy and Let’s Encrypt to link custom domains to customers
  • 42:48 – Using Postmark for transactional emails and SparkPost for email campaigns
  • 44:18 – Full text search with PostgreSQL and building the Podia admin dashboard
  • 47:38 – It’s hosted on Heroku and they use the Rails Autoscale add-on
  • 49:43 – Surviving Black Friday without any problems
  • 51:25 – The end to end process and time to deploy code from development to production
  • 53:01 – Gems and strategies to help run database migrations at scale
  • 56:44 – Using Diffend to audit gems and switching from Heroku’s scheduler to Sidekiq
  • 1:01:42 – The DB is backed up on Heroku’s schedule and everything else is backed up too
  • 1:03:21 – Avoiding tons of third party API calls by storing certain things locally
  • 1:05:16 – Their payment code builds upon the official Ruby SDKs from Stripe and PayPal
  • 1:06:11 – Using Uptime Robot, Cronitor, OpsGenie and Slack for monitoring and alerts
  • 1:09:13 – Best tips? Build a friendly team of co-workers and automate as much as you can
  • 1:11:03 – You can find Jason on Twitter at @jmcharnes

Links

📄 References ⚙️ Tech Stack

Previous Episode

undefined - Building an Internal App to Track 1,200+ VMs and Servers at REI

Building an Internal App to Track 1,200+ VMs and Servers at REI

In this episode of Running in Production, Sean Callaway talks about building an app to help manage REI’s server infrastructure. It was built with Django and it’s mostly hosted on premises in their own data center.

Sean covers keeping the app mostly server rendered and goes into detail about using Ansible, Kubernetes and Rancher to help manage things.

Topics Include

  • 4:16 – Motivation for using Django and Python
  • 6:27 – The Django admin is not being used
  • 8:20 – Using Ansible to automate spinning up VMware based VMs
  • 10:17 – It’s a monolithic application and it does use Django apps
  • 12:14 – A high level overview of what the app does to help visualize it
  • 15:14 – It’s using Django templates and they tuned a few database queries
  • 18:19 – PostgreSQL is used for some data and maybe Celery will be used soon
  • 21:07 – nginx is serving static files and Kubernetes’ ingress controller handles SSL certs
  • 23:43 – Docker Compose is being used in dev and what Kubernetes has been like so far
  • 28:42 – Pretty much all of their servers are hosted on premises
  • 31:17 – Using Grafana, Splunk and Prometheus for logging and monitoring
  • 34:26 – For the Linux servers, they’re running CentOS with Rancher
  • 38:50 – The entire flow for pushing code from development to production
  • 45:37 – Database backups and planning for disasters
  • 51:50 – Best tips? Containerize your app quickly
  • 55:05 – You can find Sean on GitHub, Twitter and he has a blog at https://callaway.dev

Links

📄 References ⚙️ Tech Stack 🛠 Libraries Used

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.

Next Episode

undefined - AbstractCRE Helps Extract Key Data from Real Estate Property Documents

AbstractCRE Helps Extract Key Data from Real Estate Property Documents

In this episode of Running in Production, Cole Simmons goes over building an AI driven service for commercial real estate professionals with Flask and Python. It’s hosted on Google Cloud using GKE (Kubernetes) and has been up and running since 2017.

Cole talks about rewriting the initial prototype, the dangers of not using an ORM, splitting out the front-end from the back-end, using Google Functions, the importance in making sure you’re building what your users want and so much more.

Topics Include

  • 1:05 – The inefficiencies when dealing with commercial real estate
  • 6:51 – From an MVP in 2016 to the main app in 2017 to the first paying customer in 2019
  • 16:48 – Motivation for choosing Flask and Python and backing out from using Go
  • 21:59 – Losing (recoverable) data by accidentally running a bad raw SQL query
  • 24:14 – Using openpyxl to handle Excel files and Weasy print to export PDFs
  • 25:31 – The API is a separate service in its own repo and the AI stuff runs on App Engine
  • 30:47 – The API is built with Flask straight up, no external packages
  • 32:19 – The front-end is built using React and Redux
  • 34:24 – Creating an amazing data tables solution is still not a generic solved problem
  • 39:43 – Payments are handled in a custom way (ACH, check, etc.)
  • 44:06 – Going with Google Cloud, Google Functions and GKE (Kubernetes Engine)
  • 49:18 – A DNS related GCP bug caused ~80% of their requests to 404 for 2-3 days
  • 54:00 – Developing local functions and what it’s like to deploy everything
  • 1:03:04 – Making sure the back-end and front-end deployments are sync’d up
  • 1:05:15 – Dealing with secret management using Google’s key management service
  • 1:07:48 – Currently using Mailgun but looking to switch over to Postmark
  • 1:13:43 – Database and file backups are happening regularly
  • 1:19:31 – GCP’s logging and error reporting has been good so far, using LogRocket too
  • 1:21:25 – The TL;DR on what Webflow is and how they use it for their landing page
  • 1:27:10 – Best tips? Listen to advice but make and follow your own path
  • 1:29:41 – Customer discovery is important as well as asking the right questions
  • 1:32:15 – It’s probably going to take you longer to build your app than you initially think
  • 1:38:30 – Cole’s on Twitter and you can email him if you’re an engineer that is interested in this problem space

Links

📄 References ⚙️ Tech Stack 🛠 Libraries Used

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.

Episode Comments

Generate a badge

Get a badge for your website that links back to this episode

Select type & size
Open dropdown icon
share badge image

<a href="https://goodpods.com/podcasts/running-in-production-124382/podia-has-everything-you-need-to-sell-online-courses-12672834"> <img src="https://storage.googleapis.com/goodpods-images-bucket/badges/generic-badge-1.svg" alt="listen to podia has everything you need to sell online courses on goodpods" style="width: 225px" /> </a>

Copy