openedx / wg-data

Tracking work and progress of the Open edX Data Working Group
1 stars 2 forks source link

Redis Message Bus Discovery #22

Closed bmtcril closed 1 year ago

bmtcril commented 2 years ago

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:

timmc-edx commented 2 years 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.

bmtcril commented 2 years ago

That's great to know, thanks @timmc-edx !

jmbowman commented 1 year ago

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.

bmtcril commented 1 year ago

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.

robrap commented 1 year ago

[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.

bmtcril commented 1 year ago

Discovery has been done on this, now it's in implementation over on #27