docs: add design proposal for pluggable message transport interface#610
docs: add design proposal for pluggable message transport interface#610bianbbc87 wants to merge 3 commits intoargoproj-labs:mainfrom
Conversation
Signed-off-by: EunJiJung <bianbbc87@gmail.com>
0c3235b to
02e756e
Compare
| └── server.go ← Kafka server | ||
|
|
||
| pkg/client/ | ||
| └── remote.go ← (기존 유지, gRPC transport에서 래핑) |
There was a problem hiding this comment.
remote.go : client.Remote 를 인터페이스로 변환
remote_grpc.go : gRPC 용 client.Remote 구현체
remote_http.go : http 용 client.Remote 구현체
...
agent/ 하위에서는 eventstremapapi 패키지의 인터페이스와 메시지 구조체에만 의존, client.Remote 인터페이스 의존
이런 형태로 pkg/client 쪽 설계가 들어가야 하지 않을까요?
--- english transalted ---
remote.go : convert client.Remote into an interface
remote_grpc.go : gRPC implementation of client.Remote
remote_http.go : HTTP implementation of client.Remote
...
Under the agent/ directory, it only depends on the interfaces and message structs from the eventstreamapi package, and on the client.Remote interface.
Wouldn't this be the right direction for the pkg/client design?
There was a problem hiding this comment.
remote.go가 connection 을 담당하고 있어서, 원래 작성했던 connection.go를 제거하고 remote 쪽으로 옮겼습니다 !
Signed-off-by: EunJiJung <bianbbc87@gmail.com>
What does this PR do / why we need it:
This PR adds comprehensive design documentation introducing a transport abstraction layer for argocd-agent.
The goal is to decouple the principal–agent data stream from the current gRPC dependency and enable multiple transport backends — gRPC, HTTP, and Kafka — for improved compatibility across diverse network environments (e.g., firewalled, air-gapped, or proxy-restricted systems).
This proposal introduces two key abstractions:
By isolating these layers, the agent can easily switch between different transport protocols without modifying higher-level business logic. This enables a cleaner, more modular architecture for future expansion.
Transport Strategy Notes:
HTTP-based Transport:
TCP-based Transport (Message Router Model):
Key additions:
Which issue(s) this PR fixes:
Fixes #260
How to test changes / Special notes to the reviewer:
Checklist