Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[HOLD] Implement phased rollouts of the New Expensify mobile app #6306

Closed
roryabraham opened this issue Nov 15, 2021 · 20 comments
Closed

[HOLD] Implement phased rollouts of the New Expensify mobile app #6306

roryabraham opened this issue Nov 15, 2021 · 20 comments
Labels
Engineering Internal Requires API changes or must be handled by Expensify staff Monthly KSv2 NewFeature Something to build that is a new item. Not a priority

Comments

@roryabraham
Copy link
Contributor

If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!


Problem

There is no fast way to roll back a mobile production release, so if any bugs get through our QA process to production, we will have to scramble to fix the issue as fast as possible. We also don't have a way to deploy hotfixes or CP to production, so if we need to fix an issue on production, we'll need to first clear the checklist of any existing deploy blockers before running another production deploy including the fix.

Why this is important

As New Expensify is no longer a beta product, stability of the mobile app is now very important.

Solution

Start using phased rollouts on NewDot mobile. While this doesn't completely eliminate the problem, it allows us to reduce the number of affected users by pausing the rollout while we work on releasing a fix.

Platform:

Where is this issue occurring?

  • iOS
  • Android

Slack conversation: https://expensify.slack.com/archives/C07J32337/p1634940809050800

@roryabraham roryabraham added Engineering Weekly KSv2 Internal Requires API changes or must be handled by Expensify staff labels Nov 15, 2021
@roryabraham roryabraham self-assigned this Nov 15, 2021
@roryabraham
Copy link
Contributor Author

@Expensify/mobile-deployers is there anyone who's interested in looking into this? I think it's valuable for stability but I may need to drop it for higher priority things.

@roryabraham
Copy link
Contributor Author

roryabraham commented Nov 24, 2021

No update here, switching this to monthly for now.

@MelvinBot MelvinBot removed the Overdue label Nov 24, 2021
@roryabraham roryabraham added Monthly KSv2 and removed Weekly KSv2 labels Nov 24, 2021
@roryabraham
Copy link
Contributor Author

No update yet

@roryabraham
Copy link
Contributor Author

Still no update

@roryabraham
Copy link
Contributor Author

No update, actually going to send this back into the pool for now.

@MelvinBot MelvinBot removed the Overdue label Mar 9, 2022
@roryabraham roryabraham removed their assignment Mar 9, 2022
@AndrewGable
Copy link
Contributor

My suggestion is we shouldn't do this until we have two things:

  1. A reliable way to monitor crashes, currently we do not really monitor any logs or crashes and just rely on bug reports.
  2. More production users

@roryabraham
Copy link
Contributor Author

A reliable way to monitor crashes, currently we do not really monitor any logs or crashes and just rely on bug reports.

I think we have crashlytics set up, right? So it would just be a matter of chorifying the monitoring of crashes, right?

More production users

This makes sense, but I have a few thoughts:

  1. As we continue to invest in NewDot we should see a shift starting soon(ish), and we'll want this in place before the shift has really happened. My reasoning is that phased rollouts can prevent crashes from becoming fires (I know this because I once caused a fire by accidentally skipping phased rollout and deploying a crash 100%).
  2. NewDot has stability issues, and to paraphrase DB "we need to start thinking about NewDot not as the future of Expensify, but as the present of Expensify"
  3. We won't want to manually manage the rollout in Google Play Store like we do for OldDot mobile. So we'll need to come up with some CD solution that will bump the rollout on a schedule unless someone intervenes manually. Maybe we could use a Bedrock job that periodically executes a workflow using the GH API, similar to triggerWorkflowAndWait. 🤔

All that said, I agree we can sit on this until we're closer to that time. It's not super urgent, but imo as soon as someone has some spare cycles to work on this there's not really a strong reason not to implement phased rollouts.

@AndrewGable
Copy link
Contributor

Agree with all the above in regards to making the NewDot shift, if we want to keep it on GitHub actions we can use schedule. I would think we could bump all existing builds by 5% M-F on Android. For iOS the "bumping" happens automatically.

However, I do think we really need to invest more into crashalytics. I personally have never looked into the dashboard, so we need to feed crashes into GitHub issues somehow (e.g. https://github.com/Expensify/Expensify/issues/144832), so we can at least monitor crashes when we do create fires, otherwise we are just bumping for no gain.

Once we have this in place, I could see us skipping all bumps when there are known deploy blockers (which hopefully we can create automatically via the above automatic issue creation from crashalytics).

@roryabraham
Copy link
Contributor Author

Just discovered we can implement phased rollouts on the desktop app(s) too: https://www.electron.build/auto-update#staged-rollouts

@melvin-bot melvin-bot bot closed this as completed Jun 10, 2022
@melvin-bot
Copy link

melvin-bot bot commented Jun 10, 2022

@roryabraham, this Monthly task hasn't been acted upon in 6 weeks; closing.

If you disagree, feel encouraged to reopen it -- but pick your least important issue to close instead.

@roryabraham
Copy link
Contributor Author

We'll definitely still want this. It's in-scope for N9

@melvin-bot
Copy link

melvin-bot bot commented Oct 18, 2022

Triggered auto assignment to @abekkala (AutoAssignerTriage), see https://stackoverflow.com/c/expensify/questions/4749 for more details.

@melvin-bot melvin-bot bot added Daily KSv2 and removed AutoAssignerTriage Auto assign issues for triage to an available triage team member Monthly KSv2 Overdue labels Oct 18, 2022
@roryabraham roryabraham added the NewFeature Something to build that is a new item. label Oct 18, 2022
@roryabraham
Copy link
Contributor Author

Marking this as a new feature

@roryabraham
Copy link
Contributor Author

No update, not prioritizing deploy improvements at this time

@melvin-bot melvin-bot bot removed the Overdue label Nov 21, 2022
@roryabraham roryabraham changed the title Implement phased rollouts of the New Expensify mobile app [HOLD] Implement phased rollouts of the New Expensify mobile app Nov 28, 2022
@roryabraham
Copy link
Contributor Author

On HOLD for WAQ

@roryabraham roryabraham removed their assignment Dec 14, 2022
@roryabraham
Copy link
Contributor Author

Dropping for now, see #12021 (comment)

@melvin-bot melvin-bot bot closed this as completed Feb 27, 2023
@MelvinBot
Copy link

@roryabraham, this Monthly task hasn't been acted upon in 6 weeks; closing.

If you disagree, feel encouraged to reopen it -- but pick your least important issue to close instead.

@melvin-bot
Copy link

melvin-bot bot commented May 12, 2023

@roryabraham, this Monthly task hasn't been acted upon in 6 weeks; closing.

If you disagree, feel encouraged to reopen it -- but pick your least important issue to close instead.

@melvin-bot melvin-bot bot closed this as completed May 12, 2023
@roryabraham roryabraham reopened this Jul 10, 2023
@melvin-bot melvin-bot bot closed this as completed Sep 22, 2023
@melvin-bot
Copy link

melvin-bot bot commented Sep 22, 2023

@roryabraham, this Monthly task hasn't been acted upon in 6 weeks; closing.

If you disagree, feel encouraged to reopen it -- but pick your least important issue to close instead.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Engineering Internal Requires API changes or must be handled by Expensify staff Monthly KSv2 NewFeature Something to build that is a new item. Not a priority
Projects
None yet
Development

No branches or pull requests

5 participants