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

Strategy for shipping new monarch-ui #91

Closed
DoctorBud opened this issue Jun 7, 2019 · 7 comments
Closed

Strategy for shipping new monarch-ui #91

DoctorBud opened this issue Jun 7, 2019 · 7 comments

Comments

@DoctorBud
Copy link
Contributor

@nathandunn @tomc @kshefchek and @DoctorBud had an opportunity to meet in Eugene yesterday and we came up with a plan that would allow us to move the monarch-ui to production at https://monarchinitiative.org, while satisfying constraints like

  • Continue to support https://monarchinitiative.org/<id>.json for legacy API users
  • Continue to support https://monarchinitiative.org/<type>/<id>.json for legacy API users
  • Continue to support https://monarchinitiative.org/score for legacy API users
  • Continue to support https://monarchinitiative.org/??owlsim?? for legacy API users (@kshefchek what is the other legacy API endpoint folks might be using?)
  • Allow for legacy functionality to be visible (for comparison and testing) via https://legacy.monarchinitiative.org

I've refined the plan we discussed so that it is more symmetrical and beta vs production distinctions are clearer. In addition, this strategy doesn't require any complex DNS-swap like I was proposing yesterday.

Phase 1a - Create legacy.monarchinitiative.org

  • Will require @Kennric to tweak HAProxy to direct traffic for legacy.m.org to the current production VM containing m.org.
  • Might require GoDaddy to declare the subdomain legacy.m.org (is this true @kshefchek @Kennric?)

Phase 1b - Create legacybeta.monarchinitiative.org

  • Will require @Kennric to tweak HAProxy to direct traffic for legacybeta.m.org to the current beta VM containing beta.m.org.
  • Might require GoDaddy to declare the subdomain legacybeta.m.org (is this true @kshefchek @Kennric?)

Phase 1c - Create preview.monarchinitiative.org

  • Will require @Kennric to tweak HAProxy to direct traffic for preview.m.org to the current production VM containing m.org.
  • Might require GoDaddy to declare the subdomain preview.m.org (is this true @kshefchek @Kennric?)
  • This preview.m.org domain will only be used until the final 'nginx swap' on production. It will allow us to verify that monarch-ui can be deployed on the production VM and that legacy API routing on the production VM is working.
  • Once we do the final swap on production, we can delete this subdomain.

Phase 2 - Update monarch-app-beta VM with latest legacy monarch-app

  • This VM has previously served up monarch-app, and everything is installed.
  • However, the monarch-app service has been disabled since we began serving monarch-ui from here.
  • So this step is really about making sure that the monarch-app code on beta is the same as that on production. Might be doable with Jenkins

Phase 3 - Verify that legacy.m.org and legacybeta.m.org work

  • URLs like https://legacy.monarchinitiative.org should lead to the legacy monarch-app on production
  • URLs like https://legacybeta.monarchinitiative.org should lead to the legacy monarch-app on beta
  • Assuming HAProxy is configured right, then the nginx conf on beta/prod will need to be adjusted so that those VMs can serve both monarch-app and monarch-ui.
  • Remember that legacy.m.org is the same monarch-app-prod VM as m.org.
  • Remember that legacybeta.m.org is the same monarch-app-beta VM as beta.m.org.

Phase 4 - On beta, use nginx to route legacy paths to legacybeta.m.org

Phase 5 - Install monarch-ui on production as preview.m.org

  • Duplicate the monarch-ui-beta Jenkins task and call it monarch-ui
  • Create any necessary directories on production to hold monarch-ui
  • Deploy monarch-ui to production
  • Adjust production nginx to route preview.m.org to monarch-ui

Take a breath

Phase 5 - Ribbon-cutting Ceremony ... 'Make it So!'

  • Adjust production nginx config so that m.org points to monarch-ui
  • Profit!
  • If something goes horribly wrong, then just undo the edit(s) to nginx so that m.org points to monarch-app.
@nathandunn
Copy link
Contributor

It looks like a nice weekend project

@DoctorBud
Copy link
Contributor Author

I believe we have now completed Phase 4 of #91

@pnrobinson
Copy link
Member

@cmungall @monicacecilia @mellybelly @iimpulse @kshefchek
It seems insane to me that we want to support a legacy site when it has taken so long to get the new site finished. Given that the new website will support afaik all of the previous queries but in a more correct way, why would we even want to allow users to see a less correct view of Monarch data? Given that we are so strapped for resources and time as it is, I would propose that we go cold turkey and put all of our efforts into the new site.

@kshefchek
Copy link
Contributor

This is to allow us to maintain a small number of rest endpoints supported by our legacy api - simsearch, compare, score, {id}.json. We have not communicated with our users in any way that we will be removing support, so that's the first step. I agree we should strip away the front end to avoid confusion, and make it purely a rest API with those functions.

@nathandunn
Copy link
Contributor

nathandunn commented Jul 10, 2019 via email

@kshefchek
Copy link
Contributor

I think if it purely switching URLs to biolink it would be good and well, but the endpoints have different arguments and json responses, I think some calls like {id}.json now require going to two different endpoints for the same data - I just see it potentially taking users longer to change their code. And it takes little resourcing from us to run a tiny nodejs app.

@monicacecilia do we have anyone tasked with emailing our users?

@monicacecilia
Copy link
Member

Hi @kshefchek. You and I chatted about communicating with our users a little while ago; see also exchanged messages in this ticket (https://github.com/monarch-initiative/operations/issues/111). First, we need a list of users and contact information.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants