Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Current Bridge server devs want to migrate off Play Framework

Jira Legacy
serverJIRA (sagebionetworks.jira.com)
serverIdba6fb084-9827-3160-8067-8ac7470f78b2
keyBRIDGE-848
. Here is a plan for doing so in an incremental way.Bridge-New

BridgeServer2 (https://github.com/Sage-Bionetworks/BridgeServer2)

  • Built on a servlet framework such as Spring MVC or JAX-RS.
    • OPEN QUESTION: We should pick a framework early on, as once we start coding against a particular framework, it may be difficult to change. Alx to decide, as he is most familiar with service frameworks.
    Deployed to AWSSpring Boot (Spring MVC).
  • Initially a thin service that forwards most or all calls to BridgePF.

BridgePF (https://github.com/Sage-Bionetworks/BridgePF)

  • Old Play Framework service that runs in Heroku. (PF stands for "Play Framework".)

...

  1. Create a domain such as webservices-old.sagebridge.org, which points to BridgePF (and remains so through the end of BridgePF's lifecycle).
  2. Bridge-New will initially be a thin service that forwards most or all calls to BridgePF.
    1. We may need to write custom handlers to forward URLs between Bridge-New and BridgePF (via the webservices-old domain). We may need to write some core functionality to make sure headers and stuff workFigure out CORS and SSL.
    2. Request ID that's sent from Bridge-New to BridgePF, so we can map between Bridge-New requests and BridgePF requests.
  3. Implement error handlers and interceptors in BridgeServer2.
  4. Move all non-Play code to a separate package to be consumed by BridgePF and BridgeServer2.
    • This step will likely be the most painful, since (afaik) Play doesn’t support snapshot versions, so we’ll need manually manage the package versions. It is a necessary step, however, if we want to migrate gradually.

  5. Flip DNS so webservices.sagebridge.org points to Bridge-New. Traffic now comes to Bridge-New and is forwarded to BridgePF.Migrate APIs and controllers individually from BridgePF to Bridge-New
  6. Implement new Controllers in BridgeServer2. Migrate old Controllers and other Play-specific code at our leisure.
  7. As APIs are migrated to Bridge-New, BridgePF will get less and less traffic.
  8. When all APIs are migrated, BridgePF will get no more traffic, and we can shut it down.
  9. Move the shared code from the shared package to BridgeServer2, so that version management is easier.