RefugeRestrooms / refugerestrooms

REFUGE restrooms indexes and maps safe restroom locations for trans, intersex, and gender nonconforming individuals.
http://www.refugerestrooms.org
GNU Affero General Public License v3.0
894 stars 261 forks source link

Update Heroku Stack by April 2019 (Cedar 14 is deprecated) #522

Closed DeeDeeG closed 5 years ago

DeeDeeG commented 5 years ago

Hi folks,

According to Heroku, Cedar-14 is now deprecated.

Scope / Difficulty

EASY. Surprisingly easy. It's just a button press, actually.

Impact

Not much, for now. The current release of our web app will keep running as-is. But starting in April Heroku will stop accepting new builds of our app targeting Cedar 14.

Switching to the Heroku 16 or Heroku 18 platform allows us to keep deploying our app after April.

Proposed solution

We can update to "Heroku 16" (based on Ubuntu 16.04 Trusty) or "Heroku 18" (based on Ubuntu 18.04 Bionic). For details on these: https://devcenter.heroku.com/articles/stack

How to actually do this

Also: Here is the official guide to updating: https://devcenter.heroku.com/articles/upgrading-to-the-latest-stack

DeeDeeG commented 5 years ago

The new Heroku 18 stack doesn't work with Ruby 2.3 or older. (Source.)

So this depends on us updating Ruby, which is #523.

Edit: (For the record, the Heroku 16 stack apparently supports the Ruby 2.3 series just fine. So we could move to Heroku 16. I think it would be even better to move directly to Heroku 18, though. Planning to merge #525 today so we will have up-to-date Ruby, so this comment will be a moot point then.)

Edit 2: Ruby 2.5 is merged!

DeeDeeG commented 5 years ago

I updated this with concrete steps to finish the Heroku stack upgrade.

In my experience fiddling around on my personal account's Heroku dashboard, this is a really easy upgrade. Could maybe even take under a minute if you were trying to go fast. Which, um... I'm not saying we should rush through something like this... But, it could be just a couple of minutes when someone gets any spare time.

DeeDeeG commented 5 years ago

Some explanation or insight, in case this is useful: From what I gather, updating the Heroku stack is about running on a newer Ubuntu operating system release. We are on Ubuntu 14.04 right now (the release from 2014)... And Heroku 16 is Ubuntu 16.04 (April 2016)... Likewise, Heroku 18 is Ubuntu 18.04 (April 2018).

Nothing about that kind of operating system upgrade necessarily breaks a Rails app, and in general, it should tend not to break established software like Rails.

As mentioned in a previous comment, I have tested this on my own Heroku account, using the 18 stack with our app, and it worked out 100% fine. I can't make this change for our actual deploy, because I don't have the permissions, but I think this is a really easy thing to do, and that it would be good to do this before the deadline sneaks up on us. That way we have the flexibility to roll back if there is any reason to, etc.

I would love to see us on the 18 stack, since that's more recent than 14 or 16, and we can stay on it for about four or five years if we want.

Major new Ubuntu releases are every two years, for the record, so I assume that's roughly how often new Heroku stacks are going to be released. Ubuntu Long Term Support releases are supported by the company that makes Ubuntu (namely Canonical) for five years after release. In step with that, Heroku 18 says it will be supported through April 2018.

DeeDeeG commented 5 years ago

Pinging @mi-wood, @tkwidmer.

Just a quick reminder that this issue would temporarily block us from deploying updates of the site past March 31st 2019.

Solving this (moving to a new Heroku stack) should be just a button press over at the Heroku dashboard. :+1:

mi-wood commented 5 years ago

Updated this and deployed.