Open ricetj opened 5 years ago
(03/22/2018) This seems interesting: https://github.com/utgarda/sidekiq-status#retrieving-status
(03/26/2018) notes from call:
How did this come about?
This ticket includes current design constraints Best practice examples of asynchronous API for frontend exist out there
Can we find a best practice to implement (if rainbows didn’t already build it with VIC - http request, controller)
Think through backend semantics for handling errors, reporting it back, do we retry automatically? Manually? ^ hpjaj and emersonthis - can we think through this
patrickvinograd suggests syncing with rlbaker on this since he built out relevant backend (cc rtluu)
PCIU telephone suggested as starting use case - steve-gov
Blockers on post/put ^decision on what to do approach wise - this call resolved ^if access is not granted with the GET, that would be a blocker
Goals:
(03/28/2018) I have some questions around reliability and monitoring. I don't think we need to nail all of these down before moving forward with a design, but we'll want to be keeping them in mind as we get closer to a production deployment.
Sorry if the answers to some of these are obvious, but sidekiq is not a technology with which I'm familiar.
Some guarantees I'd like to see:
(03/28/2018) This is shaping up to be a bit more of an endeavor than we (or I?) had originally anticipated.
I wonder if perhaps we should decouple the creation of the new endpoints from the discovery & assembly of this new asynchronous request track. I feel these things can be done in parallel.
I raise this idea because these last few endpoints are the final pieces of the puzzle for the Profile form, and am concerned that this will add too much of a delay to the form's release.
In light of that, I am proposing that:
POST
endpoints for the profile form follow a standard synchronous request patternWhat are everyone's thoughts?
(03/28/2018) think this is very smart and agree wholeheartedly at this stage
This was my biggest concern with taking on asynch approach coupled to the POST/PUT endpoint delivery so late in our process, with so little to finish on profiles backend for launch.
I think it’s very smart to separate the smaller, more immediate launch task from the asynch discovery
other notes can be found here, not moved in case not suitable for public repo: https://github.com/department-of-veterans-affairs/vets.gov-team/issues/9400
Problem Statement: Many vets-api requests that flow through to various backend systems take a long time to complete. This may be due to processing or data transfer or other unknown performance limitations in legacy systems. POST and PUT requests that submit or update information are frequent offenders, but there are some long-running GET requests as well.
Performing these operations synchronously in the context of the API request has several downsides:
Proposal: Develop a common mechanism for processing long-running requests asynchronously that can be used across vets-api.
Existing Patterns: Several form-submission type applications use asynchronous processing or submission.
Concerns:
Questions: