Closed bmtcril closed 1 year ago
When you get to the point of starting to implement, I have a draft PR open https://github.com/openedx/openedx-events/pull/85 for making an abstraction layer in openedx-events. This should be sufficiently broad to cover both Kafka and Redis implementations and allow openedx-events to load an implementation based on a Django setting.
That's great to know, thanks @timmc-edx !
I just rediscovered the list of reasons why we didn't choose Redis Streams in the first place (from https://github.com/openedx/event-bus-kafka/blob/main/docs/decisions/0002-kafka-based-event-bus.rst#redis ):
These may not be blockers for some use cases, but I figured it wouldn't hurt to drop in a reminder of these just to be sure of that.
Thanks @jmbowman! I remember those issues popping up in the initial investigation, and we're about to embark on a funded spike to help drive to a decision on whether this is a good route for smaller operators to take. There are bound to be some tradeoffs, but I'll make sure the effort to work around these issues is explicitly covered.
[request] It would be great if this work could include moving the OEP https://github.com/openedx/open-edx-proposals/blob/master/oeps/architectural-decisions/oep-0052-arch-event-bus-architecture.rst from Provisional to Accepted. As part of that, it could be updated with any additional ADR links that make sense for the Redis/Abstraction work.
Discovery has been done on this, now it's in implementation over on #27
Ticket formerly titled: Spike: Investigate redis streams as event bus
It is desirable to have a simpler event bus solution than Kafka for local development purposes in Tutor, and for running small-to-medium scale production Open edX installations. As we already have a dependency on redis, several community members have suggested using that as another message bus backend.
Additionally there is a desire to investigate pushing Open edX events over the event bus as a performant, resilient, scalable alternative to Celery. This ticket involves doing a proof-of-concept of both pieces.
Research Tasks:
The rest of this ticket can be adapted or split up if decisions above change assumptions, or the work seems too much for one ticket!
Create a PoC redis stream event bus implementing only what is necessary, and hard coding as much as needed:
Investigate and document: