Background
After working with the Channel/Subscription models and gathering feedback from users, there was an agreement that the event consumers for the MVP usecases want to consume events based on the CloudEvents attributes without a knowledge of how it gets routed or produced (i.e. which channel they need to create a subscription for etc) which lead to the existinig Broker and Trigger model ( See #815 , #814 , #862 )
Problem
After the initial basic implementation of the Broker and Trigger and collectiing feedback, it was clear that there are multiple shortcomings:
Which clearly shows the Broker and Trigger need to evolve into a better model and/or design.
Exit Critirea
There isi a clear set of improvments on the Broker and Trigger spec and/or implementation(s) which address the problems above and allows its wide adaption
The absence of a definition of what a Broker is and does and how we evaluate if something is a Broker or not lead to @grantr working on Broker Conformance Spec
Issue #2306
@n3wscott started a discussion around alternate Broker implementations with a proposal
Issue #2274
Can we discuss this issue in the v1beta1 task force on Wednesday?
IMO another short coming is that the trigger/filter is incredibly limited and covers only a small amount of use cases. That said there is currently no good way to "plug in" some custom filtering implementation.
This makes the user fallback to "traditional" (or stable) channel/subscription model...
We should record the goals for broker such as that in-memory version is not for production use. And optimized implementations may not be using channels. Other changes?
I've tried to compile an initial list of what should be there in order to use the current broker implementation in a production context for the project I am working on. Not all of these issues would apply to everyone and not all are completely mandatory, but hopefully this helps start a discussion. I think they are general enough that they shouldn't dictate a separate broker implementation though, unless the default broker will only be intended for POCs and development (like the in memory channel). Some of the points are repeated from above or have some related issues already (with both partial and complete solutions proposed). I would have created this as a google doc for easier collaboration but don't think I have access to create them in the knative community space there.
IMO another short coming is that the trigger/filter is incredibly limited and covers only a small amount of use cases. That said there is currently no good way to "plug in" some custom filtering implementation.
This makes the user fallback to "traditional" (or stable) channel/subscription model...
/assign
The questions which seem to be floating around without clear consensus are:
1) Should a default broker exist in eventing-core?
2) Should this default broker have production-like qualities or should a different one be created in eventing-contrib?
3) Should the prod-like broker be channel based and expand on the current impl in eventing?
4) Is the full set of features/qualities in the comments above in scope?
5) Should alternate broker implementations be supported? (I think this already has a 'yes' consensus, but just listing here in case there is still some debate)
My 2 cents:
The questions which seem to be floating around without clear consensus are:
- Should a default broker exist in eventing-core?
[akashrv] Yes. Or at least part of default install (release yaml). A customer should not be forced into a vendor-written broker and should have a Knative OSS alternative.
- Should this default broker have production-like qualities or should a different one be created in eventing-contrib?
- Should the prod-like broker be channel based and expand on the current impl in eventing?
[akashrv] What does a "production-like broker mean" is debatable. Example certain delivery semantics could be transport specific, but we can always define some minimum spec for something to be called as Broker and #2306 tries to define this. So, IMO, if we have a Broker that is backed by channels (not saying the current implementation should be the one) and channels abstract out delivery semantics and guarantees, then we can have a default broker and an operator can decide to leverage channels to get different delivery semantics.
- Is the full set of features/qualities in the comments above in scope?
- Should alternate broker implementations be supported? (I think this already has a 'yes' consensus, but just listing here in case there is still some debate)
[akashrv:] Yes different vendors should be able to write their custom Broker that are conformant with with Broker spec. This could be due to variety of reasons such as leverage capabilities of vendor infra, or current channel based broker design doesn't work out.
Regarding Triggers, Tekton implemented CEL-based triggers using the Knative filtering proposal from @grantr as a reference. FYI @wlynch
This issue is stale because it has been open for 90 days with no
activity. It will automatically close after 30 more days of
inactivity. Reopen the issue with /reopen. Mark the issue as
fresh by adding the comment /remove-lifecycle stale.
/reopen
@devguyio is this still relevant? can we close it? It seems to me all the questions are pretty much addressed.
Most helpful comment
I've tried to compile an initial list of what should be there in order to use the current broker implementation in a production context for the project I am working on. Not all of these issues would apply to everyone and not all are completely mandatory, but hopefully this helps start a discussion. I think they are general enough that they shouldn't dictate a separate broker implementation though, unless the default broker will only be intended for POCs and development (like the in memory channel). Some of the points are repeated from above or have some related issues already (with both partial and complete solutions proposed). I would have created this as a google doc for easier collaboration but don't think I have access to create them in the knative community space there.