In this week’s episode Cameron Dutro, a software engineer at GitHub, Ship It listener and someone with an extraordinary attention to detail, joins us to talk about Kuby, a convention-over-configuration approach to deploying Rails apps.
The question that we will be trying to answer is what happened to Rails Active Deployment. The path to that promise land is paved with good intentions, but it’s complicated.
Featuring
Sponsors
Shortcut – The first project management platform for software development that brings every team across the org together to build better products. More than 10,000 companies from all over the world use Shortcut to plan, collaborate, and build better software together.
OpenZiti by NetFoundry – Programmable network overlay and associated edge components for application-embedded, zero-trust networking. Check it out at netfoundry.io/changelog
Raygun – Never miss another mission-critical issue again — Raygun Alerting is now available for Crash Reporting and Real User Monitoring, to make sure you are quickly notified of the errors, crashes, and front-end performance issues that matter most to you and your business. Set thresholds for your alert based on an increase in error count, a spike in load time, or new issues introduced in the latest deployment. Start your free 14-day trial at Raygun.com
Rewatch – Rewatch gives product and engineering teams async superpowers and helps them move faster with greater clarity. Imagine all of your team’s videos, all in one place. Record, organize, and share the videos that your team needs to ship great work. Get started for free with 14-day trial at rewatch.com.
Notes & Links
- Deploy Your Rails App the Easy Way
- getkuby/kuby-core
- getkuby/kube-dsl
- 🎧 The Ruby on Rails Podcast #339 kuby & Rails Deployments with Cameron Dutro
- github.com/gerhard/deliver
- deliver - LRUG, March 2013
- github.com/edeliver/edeliver
Transcript
Play the audio to listen along while you enjoy the transcript. 🎧
So it’s been almost a decade since I deployed any Rails apps, and when I heard about Kuby– thank you, Cameron… Pronouncing it sometimes was difficult. I kept calling it “cubby”. I don’t know why, but it sounded right. So Kuby, an easy way to deploy Rails apps on Docker and Kubernetes. I really wanted to speak to you, so welcome to Ship It, Cameron.
Well, thank you so much, Gerhard. It’s really an honor and a pleasure to be here.
So you are actually a listener, and I think one of the listeners with the most amazing attention to detail, because when I changed the way I pronounce my surname, you picked up on it instantly. I couldn’t believe that.
Yeah, thank you for saying that. It’s funny that you say that though. Actually, my wife would say that I have a mind for detail for certain things, and for other things, a complete lack of attention to detail. And so she’d be quick to point out that I forget things all the time, especially when it comes to our kids. She’s a very detail-oriented person, so compared to her, I’m in the minor leagues here. But one thing that I have always really enjoyed is language. I love language, and I was actually – I worked for Twitter for a number of years on the internationalization team. We worked on the Twitter translation center, and made sure that all of our apps and websites and things were translated into – I think at the time I left we were up to like 70 different languages. And I also have dabbled in a couple languages in the past, and I just find them really interesting.
[04:19] And so when I heard that you changed the pronunciation of your name, I was like, “Oh.” I just noticed it right away, because I had in the past listened to it and thought, “Huh, I wonder what the origin of that name is. I wonder if it was potentially spelled with different characters at some point in its existence.” And then when you pronounced it differently, that made me think totally differently about it. So that’s why I tweeted at you and I was like, “Oh my gosh, is that another pronunciation? Another valid, another different pronunciation of that name?” And yeah, I just thought that that was very interesting that it changed.
It was very interesting. It was associated with a live event, I have to say. I’m going to mention this… It’s on Twitter as well, so you may have already seen this. If you followed that conversation as a listener, when my father passed away, I wanted to adopt the pronunciation that he used to use in his memory, and it was around the same time. So that’s why that happened. Something big has to happen in someone’s life, I think, for them to change the way they pronounce their name, and that’s what it was for me.
For sure. Well, I’m sorry to hear about your dad.
Thank you. So why Kuby?
Why Kuby? Okay. Well, I think it might be better to start at the beginning for this story. So Kuby came out of, or was born out of a desire to use Docker and Kubernetes to deploy Rails apps. But that’s actually kind of only the second part of the story. The first part of the already happened back when I listened to a podcast from the Ruby Rogues, which is a podcast that’s been going on for a long time in the Rails and the Ruby communities, hosted by Charles Max Wood. And I think for almost 10, maybe even more than 10 years now - they just had like their 500th episode a couple of weeks ago… And I’ve been a long-time listener of that show.
I’ll have to dig up the exact episode number, but there was an episode I think in the three hundreds with someone named Stefan Wintermeyer. And he asked a really important question, that stuck with me for a long time, which is why does Rails not have active deployment? He called it active deployment. And for those that are not in the know about this, Rails features a bunch of micro frameworks within it. So it itself is a larger macro framework, but within it, there are frameworks, like Active Record for interacting with the database, Active Job for running background jobs, Active Storage for storing files in stores like S3, or Azure’s object store…
And he asked that question because he had reached a point, and I think he sees a lot of – he had mentioned actually in the show that for a lot of the customers he works with, he does a lot of consulting, and one of the things that he had seen happen a number of times was that people would be working on their apps, and the deployment experience was wonderful, they were writing apps, getting all the features that they wanted working, and it was so easy… And then they reached the point where they wanted to deploy it somewhere, and Rails just doesn’t have any answer for that at all. There’s just nothing. There’s no Rails guide. So if you’ve heard of the Rails guides, they’re kind of these very nice, well written resources for doing everything you want to do with Rails pretty much, but there’s no guide for deployment.
So what ends up happening to beginners a lot is they just kind of give up at that step, or they use Heroku. And Heroku is a wonderful product, and I would not ever say anything bad about Heroku, especially their free tier. You can deploy an app with their free tier and pay nothing for it. It just runs on their infrastructure perfectly well. They stand up a database for you. It’s really turnkey. You could also use Render, and you could get really crazy and use AWS or Azure or something… These are for side projects, I would say. And then for big companies, of course, they’re going to use something big, like AWS. But there’s no sort of one true way of doing it, which is very un- Rails like.
[07:58] In Rails, there’s an answer for everything, pretty much. And the community and the core team have really pushed in that direction since 2006 when it first came out. But for some reason, no attention was ever given to deployment. And so I used that idea as a springboard for Kuby. I lived that kind of role around in my head for a couple years, and then I was using Kubernetes and Docker at work, and I knew nothing about it at the time, but some co-workers were trying to get us off of our very bespoke Capistrano setup. We had used Capistrano for a number of years before that.