docs: Categorize transforms into functions or runtimes#2012
docs: Categorize transforms into functions or runtimes#2012binarylogic wants to merge 2 commits intomasterfrom
Conversation
|
@Hoverbear I'm curious what you think about this change, especially in the context of the upcoming WASM changes. I'm thinking mostly about:
|
Signed-off-by: binarylogic <bjohnson@binarylogic.com>
Signed-off-by: binarylogic <bjohnson@binarylogic.com>
87c5426 to
f3dfd31
Compare
| input_types = ["log"] | ||
| output_types = ["log"] | ||
| requirements = {} | ||
| sub_type = "function" |
There was a problem hiding this comment.
swimlanes is interesting because it's not really a function or a runtime. It's really a macro that expands to multiple function-based pipelines.
There was a problem hiding this comment.
That's a good point. I think for this exercise the term "component" might be better? I'm really trying to distinguisn between a set of simple components that you connect to form transformation pipelines, and full runtimes.
There was a problem hiding this comment.
Yeah that sounds reasonable to me.
I don't think so. Ideally a wasm module would be able to register itself as a source/sink/function/runtime. For example, an assemblyscript or lua runtime could be eventually powered by wasm... I'd almost say a noble goal would be that all ryntimes are wasm modules, but not all wasm modules are runtimes.
Disagree! We should encourage users to use this power to create logical blocks of their pipeline... instead of forcing them to create functional blocks. This is especially powerful as we get the new swimlanes functionality, as users can route things easily between these blocks! |
Sure. I can get onboard with this.
So this is where my point becomes a little more clear. I like the Given this scenario, where a user reaches for a runtime to control flow, it seems easier to just do the entire transform within the runtime, versus composing a bunch of small components together. I'm not saying a user couldn't do both, but I want to guide a user towards one. |
|
Right, so consider a non-trivial config with, say Consider this user to be needing to do any or many of different logical tasks as part of the route from given sources to sinks, eg "Parse json", "Do GDPR filtering", "Tag routing data", "Strip unneeded metadata" etc. It makes sense it they do this logically instead of needing to replicate functionality across transforms. |
I'm not following. Why would a user need to replicate anything? For example, they could maintain a single |
|
So you'd suggest they have all their sources feed to one transform, then have that transform feel to all the sinks? Seems like at that point Vector could operate as a sort of library/proxy at that point no? Then we could totally forget about transforms all together. |
|
Yep. In some circumstances that might be the best UX. It would allow them to leverage an entire runtime for control flow, parsing, shaping, and so on. They can break it up into files and manage it just like any other code. To clarify, I am not suggesting every user do this. This is something a user can graduate to once their pipelines are hard to manage with our basic functions. It could also just be user preference. |
|
Perhaps instead of runtimes the more appropriate term is Languages? |
|
I'm going to close this for now. It's not clear if making this distinction makes sense yet. As we mature the runtimes I think we'll get a better understanding around how we want to encourage users to use them. As much as I like the "runtime for your entire pipeline" idea, it might not be practical. |
This change moves transforms into 2 categories:
functionsorruntimes. This helps to separate the 2 for future changes we're making:luaruntime we should encourage them to do everything within that runtime (add fields, remove fields, control flow, etc).