Replies: 2 comments 9 replies
-
I really like the idea of the runtime not needing to inject the binary into connector containers. And along those lines, leaving it up to connectors to figure out how they are going to comply with the protocol in a more encapsulated way. I'm not too familiar with NetworkTunnel, so a question there: Is it the case that every connector that needs to use the connector proxy also needs to use the network tunnel, and that connectors that don't need connector proxy don't need the tunnel? Or is it more complicated than that? |
Beta Was this translation helpful? Give feedback.
-
This is how I'm imagining the parts necessary to implement this:
|
Beta Was this translation helpful? Give feedback.
-
Idea
Johnny brought up this idea, and I've been thinking about it, how we might approach it and its implications.
In a nutshell, the idea is to move the connector-proxy's protocol translation part into the connector that needs it, rather than having it in the runtime. This means if we have an Airbyte connector, the connector's docker image can include a binary as its entrypoint, which exposes an interface compatible with Flow protocol, but translates Flow protocol to Airbyte protocol and then passes it to the Airbyte connector in the docker image. In case of connectors that work directly with Flow protocol, there is no need for a proxy.
Implications
Some implications I can think of:
Potential Pathway
A potential pathway is extracting connector-proxy's Airbyte translation layer to a separate component (perhaps in https://github.com/estuary/airbyte so it can be released in synchrony with the connectors). What will be left in the runtime is just handling network-tunnel and Flow protocol. I can think of potential positives of using Go for this layer, given the simplicity of working with stdio (in Rust we have many abstractions on top of stdio at the moment), but I'm not sure if it's justified given we already have working code in Rust.
The Airbyte translation layer will then have to handle translating gRPC into Airbyte messages as it already does.
Open Questions
Beta Was this translation helpful? Give feedback.
All reactions