I’m using a Platform as a Service (PaaS) for all my application development — because why wouldn’t I?! Heroku is the platform of choice with the full disclaimer that Heroku is a Salesforce company and I work for Salesforce.
However the driving reason of my usage of Heroku is that being a PaaS Heroku provides me with a high level of abstraction of the underlying compute infrastructure. On Heroku I just worry about the app and not anything else. No load balancing. No compute instances. No gluing and regluing stuff together. Just the app.
As part of the applications I have on Heroku I have a wide variety of databases including Heroku Postgres (a fully managed and elastic Postgres instance). A nice aspect of this is that for me Postgres is just another data store but I do not have to worry about the operations of it. This is great as I’m much better at writing apps than managing an always-on, fully load balanced and highly available database cluster.
Yesterday I received a notice about upcoming maintenance and one section in the email made me take notice so I thought I would share:
Your database must undergo maintenance.
At that time, we will create a hidden follower, wait for it to catch up, push the hidden follower’s creds to your app, unfollow it from your former leader and repoint any followers you may have to properly follow your new leader.
Let’s break that out really quick… When they — Heroku — do the maintenance for me and I won’t have to lift a finger they will:
- Create a hidden follower (database)
- Wait for it to catch up (to allow uninterrupted operations)
- Push the hidden follower’s creds to your app (so the app uses the new follower database)
- Unfollow it from your former leader (to ensure smooth operations)
- Repoint any followers you may have to properly follow your new leader (again to ensure smooth operations)
All this without me doing anything. Again I just worry about my app that will continue running without any change by the way. How cool is that?! I just worry about the app.
Just another reason for using a PaaS…