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

SPIKE: Investigate Rails ActionCable for POC #104280

Closed
5 tasks
mjknight50 opened this issue Mar 3, 2025 · 1 comment
Closed
5 tasks

SPIKE: Investigate Rails ActionCable for POC #104280

mjknight50 opened this issue Mar 3, 2025 · 1 comment
Assignees
Labels
686 Label for any work associated with Dependency Claims using VA Form 21-686c backend Burial Form 21P-530EZ dependents-benefits engineering Engineering topics pension Project related work for VA Pension (527EZ)

Comments

@mjknight50
Copy link
Contributor

Issue Description

The current VA architecture lacks a way for providing feedback during the form completion. When we first start the form, we load up data necessary for the form completion via synchronous API calls. And when the user is done, we asynchronously send their form data to a back-end system. The goal of this spike is to explore a middle ground where we use Rails ActionCable (websockets) to update the user experience.


Tasks

  • - Explore what Rails ActionCable is
  • - Are there other options or languages that make more sense?
  • - What would the infrastructure look like?
  • - Possible next step to produce a POC for discussion
  • - Possible next step to present to VA Engineering all-hands.
@mjknight50 mjknight50 added engineering Engineering topics and removed engineering Engineering topics labels Mar 3, 2025
@mjknight50 mjknight50 self-assigned this Mar 3, 2025
@mjknight50 mjknight50 added 686 Label for any work associated with Dependency Claims using VA Form 21-686c pension Project related work for VA Pension (527EZ) Burial Form 21P-530EZ engineering Engineering topics labels Mar 3, 2025
@mjknight50
Copy link
Contributor Author

The va.gov site needs a new paradigm for how we interact with users on our forms. Our current approach is to load up a user information via a synchronous call before the form starts. Once a person starts filling out a form, we do not have a way to interrupt the SPA (single page application) to present new data. As the user continues on the form and hits submit, we kick-off an asynchronous job, which also doesn't allow for user notification. The goal with moving towards websockets is that we can have greater control over the user experience and how we interact with the user.

Ruby on Rails implements websockets in Action Cable. While Action Cable can be run on a single server, for enterprise implementation, there would be many considerations:

  • Load Balancing
  • Sticky Connections
  • Horizontal Scaling
  • Redis Integration

There are also drop-in managed services that can handle this, such as:
https://github.com/anycable/anycable

For additional reading:
https://ably.com/blog/rails-actioncable-the-good-and-the-bad
https://blog.heroku.com/real_time_rails_implementing_websockets_in_rails_5_with_action_cable

Recommendation:
I think this is a project that needs to be championed and led by a dedicated VA team. The programming isn't the challenging part. The infrastructure and overall back-end work is where the focus will need to be.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
686 Label for any work associated with Dependency Claims using VA Form 21-686c backend Burial Form 21P-530EZ dependents-benefits engineering Engineering topics pension Project related work for VA Pension (527EZ)
Projects
None yet
Development

No branches or pull requests

2 participants