Copied URL with current time.
0:00 / 0:00

Kernl.us Helps WordPress Plugin and Theme Developers Manage Updates

avatars/jack-slingerland.jpg
Jack Slingerland
https://kernl.us/

In this episode of Running in Production, Jack Slingerland goes over building his platform with Express / Node. It handles 2.5+ million requests a day and hosting costs about $65 / month on DigitalOcean for 2 web servers and a few other things. It’s been up and running since early 2015.

Jack wrote 100,000+ lines of code on his own in his spare time. We talked about buildings monoliths, switching from Apache to nginx during a 10 hour car ride, keeping your deployments as simple as possible (even with zero down time) and a whole lot more.

Show Notes

  • 1:22 – From 2,000 requests a day to 2.5 million requests a day in a few years
  • 2:01 – WordPress is still really popular
  • 2:39 – Motivation for using Express and Node
  • 5:30 – TJ Holowaychuk created Express and he was a JavaScript legend
  • 6:06 – Express is still actively developed by the community
  • 6:26 – The back-end is using ES6 JavaScript
  • 7:46 – There’s 100,000+ lines of code and Jack wrote it all
  • 8:05 – What does Kernl allow WordPress developers to do?
  • 10:27 – The 100k lines of code includes and back-end and front-end
  • 12:08 – The code is split up across a few git repos
  • 12:42 – Breaking a few things out into services came naturally, it wasn’t forced
  • 14:09 – A new WordPress site health monitor service will be coming out soon
  • 15:50 – Part of the reason for choosing Angular with an API back-end was to learn new things
  • 16:29 – MongoDB, PostgreSQL, Redis and Node
  • 17:13 – Some of the Node services are using TypeScript
  • 17:37 – Is it worth it to refactor the other services to use TypeScript? Probably not
  • 18:38 – This whole app is a long running side project that’s worked on after hours
  • 19:25 – Trello plays a huge role in helping Jack organize what to do
  • 20:21 – Jack’s super power is being able to context switch really quickly
  • 21:48 – DigitalOcean is being used to host the site and Stripe handles payments
  • 22:17 – Pusher is used to update a counter on the home page with websockets
  • 23:12 – SendGrid is used to send out emails
  • 23:42 – Stripe isn’t configured for SCA, he’s still on an API version from 2016 (but it works)
  • 24:58 – What does log management look like with 75 million requests a month?
  • 26:20 – DigitalOcean’s managed load balancer replaces what nginx used to do
  • 27:20 – Docker isn’t being used in development or production
  • 28:21 – Jack’s been running his own Linux servers since 2002
  • 29:06 – Ubuntu 18.04 (LTS) is being used on all of Kernl’s servers
  • 29:37 – What will upgrading to Ubuntu 20.04 (LTS) look like for you?
  • 30:26 – (2) $5 / month DigitalOcean servers power the entire web application
  • 31:41 – Node serves static files directly, but there’s very few requests for static assets
  • 33:16 – 1 static asset is served from S3 because it needs to handle massive traffic spikes
  • 33:57 – What about DigitalOcean Spaces? It’s just not stable enough (and I agree)
  • 36:22 – How code gets from Jack’s dev box into production
  • 37:32 – Deployments are done on multiple servers at once in parallel with no down time
  • 38:04 – How zero down time deploys are handled without a complicated set up
  • 39:35 – His main competitor had hours of down time so that had to be avoided
  • 40:20 – Secrets get transferred straight from dev to the server over SSH / SCP
  • 41:13 – Have you thought on what would need to change if 2 devs worked on the project?
  • 42:15 – The song and dance of making “Fix CI” commits until it’s actually fixed
  • 42:29 – All customer data is backed up daily and things can be recreated quickly
  • 43:26 – Configuration management takes time to learn which is why it’s done by hand
  • 45:00 – Pingdom will send out alerts if the site goes down, it gets checked every minute
  • 45:31 – Switching from Apache to nginx in the middle of a 10 hour car ride with his wife
  • 47:39 – Experiencing problems like that really helps you learn what not to do
  • 48:29 – DigitalOcean alerts are also set up for additional system resource alerts
  • 49:05 – Block Storage is also being used (it’s an extra drive you can connect to a server)
  • 50:24 – Best tips? If you’re not comfortable with a technology, don’t self host it
  • 51:44 – Jack pays $65-100 a month for DigitalOcean hosting which includes everything
  • 53:37 – Biggest mistake? Probably using MongoDB because his schema is very relational
  • 54:52 – Check out Kernl and you can also find Jack on Twitter @jackslingerland

Shameless Plugs

  • Nick: Want to learn Docker? Join thousands of others in my Dive into Docker video course

Questions

Jan 27, 2020

✏️ Edit on GitHub