-
Notifications
You must be signed in to change notification settings - Fork 853
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
Efficient streaming from S3/Azure Storage #88
Comments
A lot of this seems very coupled to a specific application pattern. What kind of things do you think the general-purpose proxy would provide, as compared to how any app would configure it? Certainly many of these requirements involve YARP providing specific features and we can track that work.
This seems to be something our existing routing can cover, but I may be wrong.
These seem to be covered by features such as Retry (#56) and Mirroring (#105).
To me these all come down to performance goals we are already tracking. Keeping latency low, RPS high, and memory usage low are all goals and how specifically we do that (managing gen2 memory) will be determine by profiling. Measuring P99+ requests are a key measurement though.
I don't see this as a key scenario for YARP to provide built-in. It's not going to be a kitchen sink proxy :). A key motivator for YARP is the ability to plug in custom code while still taking advantage of the rich features already provided though, so this seems like a perfect example of something that should be easy to implement with custom code in YARP. |
Triage: Not a planned YARP feature as explained by @anurse above. |
What should we add or change to make your life better?
In NuGet (and many other apps) you want to use storage to handle your large file storage, but getting file streaming right (and highly effective) is hard and is implemented by individual frameworks separately.
The key issues are (that are solved to some extent by aspnetcore, but you need to code to them)
Why is this important to you?
I've now seen this pattern show up in multiple services my team's have built over the years. We sometimes choose (like in NuGet3) to offload the streaming straight to storage, but that has performance side effect because we expose the customer directly to the limitation of storage when a service may have a different SLA in mind.
A proxy can solve this in a nice way for multiple micro services in a kubernetes cluster, where the streaming work is delegated by all other services to a dedicated service that can handle these concerns without having to optimize and configure the code in each micro service.
When running the streaming through a service owned proxy, there are better opportunity to capture and aggregate relevant metrics, perform additional validations inline (if chosen) that may or may not be available or are cost effective on the storage service(s)
The text was updated successfully, but these errors were encountered: