Hear about how folks are running their web apps in production. We'll cover tech choices, why they chose them, lessons learned and more.
Fundraze Is a Flexible Fund Raising and Campaign Management Service
In this episode of Running in Production, CJ Avilla goes over building a fund raising platform with Ruby on Rails. It’s hosted on Heroku and has been running in production since 2015.
CJ talks about rewriting an app with Rails, processing $30 million dollars of donations, using Stripe, maintaining a Rails 4.2 app, carefully sending out bulk emails, ensuring good tests are written, keeping things simple and more.
Topics Include
- 2:26 – Rebuilding a similar app with a new tech stack is easier the 2nd time around
- 6:14 – Motivation for using Rails and live coding features right next to his client
- 9:33 – What the app does at a high level and what some of the screens do
- 12:20 – The app is running Rails 4.2 and it’s humming along with minimal maintenance
- 13:29 – Stripe handles accepting donations and keeping things as simple as possible
- 17:33 – Processing over $30 million dollars since the site went live
- 22:35 – It’s worth checking out which payment providers are available in different countries
- 24:51 – Using an older version of Stripe’s API but it’s super stable
- 27:22 – A couple of gems from 2015 which helped build this app
- 28:50 – (1) standard Heroku Dyno for the web app and (1) 2x size Dyno for the worker
- 32:15 – Postgres, Redis and Resque are being used along with Heroku’s cron scheduler
- 35:48 – Sending bulk emails out can be scary
- 39:42 – Using Rbenv locally to manage things in development
- 42:42 – The reasons for picking Heroku were mainly to avoid any type of ops work
- 46:03 – What it’s like to develop a new feature and push it up to production
- 47:58 – Not doing traditional TDD but tests are still written
- 51:18 – Heroku is in charge of performing daily database backups
- 55:40 – Handling background worker spikes with popular donation pages
- 57:42 – Tagging the current user in Rollbar errors and then emailing customers ASAP
- 1:00:27 – Best tips? Keeping it simple really drives down your maintenance
- 1:02:38 – CJ’s has a YouTube channel and a personal site at https://cjav.dev
Links
📄 References- https://www.youtube.com/CJAvilla
- https://stripe.com/payments/checkout
- https://stripe.com/docs/payments/payment-element
- https://faye.jcoglan.com/node.html
- rails →
- ruby →
- heroku →
- mailchimp →
- new-relic →
- papertrail →
- postgres →
- pusher →
- redis →
- rollbar →
- s3 →
- sendgrid →
- stripe →
- twilio →
- https://github.com/collectiveidea/audited
- https://github.com/thoughtbot/paperclip
- https://github.com/gaffneyc/usps
- https://github.com/resque/resque
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.