DEV Community

Discussion on: How to put a Ruby on Rails application in Maintenance Mode

 
andrewbrown profile image
Andrew Brown 🇨🇦

It takes 5 seconds to set up a health check in Route53 on AWS to have it failover to a static page. (maintenance page) You click a couple of buttons and put in an address you want to failover if the target is not healthy.

It takes 3-10 mins to set up that static maintenance page via static website hosting. You could use Github pages or anything you like for this static page.

Blue/Green comes pretty much out of the box with many cloud providers. All of AWS deployment methods makes it dead simple to use Blue/Green to avoid downtime.

In the Rails community even if you wanted to do In-Place we have had Capistrano and Unicorn that it was standard practice to use no-downtime deploy method which is nearly 10 years old.

I would have screenshot all the steps here which took me all of 5 mins to put together but Dev.to image uploads on comments are currently experiencing issues.

This is so unhealthy and promotes the illusion that maintenance comes at no cost

With a little bit of learning, maintenance does come at a reduced cost. Once you know how simple it is, you'll question yourself doing it the old way. Let the old way dies, we are trying to build rockets to mars

Thread Thread
 
nhh profile image
Niklas

The truth is, not every body rely on aws.

Thread Thread
 
andrewbrown profile image
Andrew Brown 🇨🇦

And you don't need to use AWS, it has become common functionality among all Cloud Providers and for those who don't want to use one of the big three there are a variety of 3rd party solutions.

The truth is the only reason for not doing is not knowing or old habits.

Thread Thread
 
nhh profile image
Niklas

I dont think the only reason is knowing or old habits. Some people just explicitly decide against complexity when it is useful. You are generalising about all environments irrespective of the requirements. And beneath aws, azure and google cloud there arent that many providers who sell such advanced features. Even Heroku has this wonderful pragmatic feature „maintenance pages“ so please accept that for some people maintenance pages are useful and a decision rather than the lack of knowledge or old habits...

Thread Thread
 
andrewbrown profile image
Andrew Brown 🇨🇦 • Edited

Herkou can do both failovers and blue/green and yes you can do maintenance pages for those who don't know yet how easy to use these modern features. It's not complex.

Thread Thread
 
drbragg profile image
Drew Bragg

I gotta go with Andrew on this one. I use Digital Ocean for my servers and Capistrano to deploy my rails apps. With next to zero config I can deploy an update to any of my apps with zero downtime and if anything was to go wrong with a deployment cap has a built in method to rollback to a previous deployment.

Maybe a maintenance mode could be needed for a different framework but I really can't see anyone needing to put their Rails app into maintenance mode to deploy an update.

Thread Thread
 
nhh profile image
Niklas

Yeah, Capistrano is great, Zero-Downtime is great and Blue/Green too. Keep using what fits your needs ✌️

Thread Thread
 
andychongyz profile image
Andy Chong

I have a use case for turnout. It involves performing a changeover upgrade on a database while still ensuring that certain paths, such as webhooks, remain accessible. Heroku maintenance mode can't do that if I'm not mistaken.