Compression for all data queried by Argo CD UI
- Dominant language
- Go
- Stars
- 24.2k
- Forks
- 7.8k
- Avg merge
- 1d 6h
- Merged PRs (30d)
- 239
Description
# Summary
It would be great if all of the endpoints queried by Argo CD UI supported compression.
https://github.com/argoproj/argo-cd/issues/4226 covered most of the endpoints, however that change does not cover the endpoints returning the content type of `text/event-stream`. Some examples of the endpoints with this content type include `/api/v1/stream/applications`, `/api/v1/stream/applications/$app/resource-tree`.
# Motivation
The response sizes on these endpoints reach several megabytes in some of our deployments. With development teams being spread all over the world, limited VPN throughput, etc. Argo CD UI becomes slow and sometimes unusable.
# Proposal
The easiest approach would be to enable compression on the endpoints in question (the browsers request it already), but I don't know if that's supported uniformly across all of the targeted browsers for this content type.
If that is not an option, for some reason, consider implementing a different set of APIs with compression-friendly content types and using those from the UI code.
Contributor guide
Research direction
Start by inspecting the handlers for /api/v1/stream/applications and /api/v1/stream/applications/$app/resource-tree, then compare them with the endpoints covered by issue #4226. Done means the text/event-stream responses support compression across the targeted browsers, or a compression-friendly API is implemented and used by the Argo CD UI.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- api, backend, performance
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100