I’ve spent my entire career working in organizations that follow Extreme Programming as their underlying development philosophy. We pair, we emphasize continuous discovery, continuous integration, and continuous delivery. We do Test-Driven Development. We release to prod as often as makes sense, sometimes multiple times per day.
Using Bubble, some of the dynamics are quite different. I find when I’m in the early stages of development, I update the production environment every time there’s a new “functionally complete” version to deploy, meaning I don’t have buttons unless they do something, for example. After I have users in the system, I find myself setting maintenance windows every week where users should expect to see the notification that the app has been updated and they need to refresh the page.
How do y’all think about this in your dev cycles?
It depends on the project and what stage it is in for me.
Pre-launch, I will push to prod pretty frequently. No harm in doing that IMO as no one is on the platform.
Post-launch (aka active users), I try and push updates live late at night if it’s a ~serious~ project (for myself or clients). I must admit—I do have apps that it’s just not a big deal to me if I push to prod at random times in the middle of the day.
For all my apps, I use the Auto reload on page update with the condition that only applies it if the current version is live. This has been awesome for years in avoiding that pesky refresh banner for my users.
Thanks for sharing! Do you have any sort of testing or verification you do before or after deploying?
And thanks for sharing the method you use to minimize impact to the end-user
That’s an excellent follow-up question. If it’s a big update, especially data-dependent, I will copy the live database into dev to test how it’ll work once pushed to prod.
This has proven to be quite helpful. The issue with this can be if you’ve added a new data type and/or field(s) that relies on admin-generated content (a list of states, for example). I’ve done the process above (copying database to dev), tested it, and then pushed it to live without manipulating that database (or, in my example above, not uploading the list of states into the live DB).
You could run the copy database in reverse, but that scares me