Add DSS pool load balancer component #1139
Labels
deployment
Related to deploying a DSS instance rather than application logic or behavior
dss
Relating to one of the DSS implementations
feature
Issue would improve software
Is your feature request related to a problem? Please describe.
ASTM standards envision interchangeable DSS instances hosted by separate USSs improving resiliency of the overall ecosystem by being able to fail over to another USS's DSS instance when a primary DSS instance fails[1][2]. However, currently, the InterUSS DSS implementation does not provide this capability to USS users; the USS users must provide it on their own.
[1] "USSs can interact with any DSS instance within a pool and switch over to any other instance in the event of a failure." ASTM F3548-21 3.2.18
[2] "Mitigation—The affected USS switches to another DSS instance in the pool." ASTM F3548-21 X5.2.4
Describe the solution you'd like
InterUSS should optionally provide a "pool load balancer" that exposes the application APIs of a DSS instance. It will usually direct traffic inward to the existing DSS instance load balancer, but when certain types of failures are detected, it will instead direct traffic to the application API of one of the other specified DSS instances. Visually, this feature would add the green boxes:
Describe alternatives you've considered
It is unclear whether this feature should be an enableable part of the existing DSS instance deployment, or whether it should be a stand-alone deployment. Simplicity would seem to recommend being a component the existing DSS deployment, but this would make the pool load balancer more likely to fail along with the DSS instance, thus negating some of the benefit of failover.
Additional information
An important design choice will be determining the conditions under which this new DSS pool load balancer would start and stop sending traffic away from its primary DSS instance. Using existing health monitoring information from the DSS instance deployment would likely be a good first pass, though there may be some work to make that information accessible outside the Kubernetes cluster if this DSS pool load balancer is to be deployed separately from a DSS instance.
The text was updated successfully, but these errors were encountered: