Rive, Fast and reliable background jobs in Go (github.com)

23 points by mountainview 7 hours ago

hasyimibhar an hour ago

How does it compare to a full-fledged durable execution platform like DBOS[0], which follows the same philosophy? Looks like River does have workflows, but it's locked behind Pro [1].

[0] https://dbos.dev

[1] https://riverqueue.com/docs/pro/workflows

brandur 26 minutes ago

There's some similarities with DBOS for sure like using Postgres as a backend. Here's some differences based on my browsing of their docs for a little while:

* River's built around an entirely open core with its bread and butter being background jobs rather than workflows, with basic background jobs being good enough for most apps in most situations. It's true that workflows are gated behind Pro, but a lot of users will find they won't even need them, or won't need them until much later.

* River's aimed more solidly at Go, especially for the running of the background jobs themselves. Blake and I are both experienced Go developers, and we've gone through great pains to make the API as elegant as possible and as easy-to-use as possible, aiming for things like consistency and predictable + well-documented APIs. DBOS supports Go as well, but I believe our API compares very favorably [1], though you can be the judge.

* I might be missing something in the DBOS docs, but especially pertaining to background jobs, I believe River's feature set is quite a lot more comprehensive. e.g. Bulk insertion, unique jobs, periodic/cron jobs, job snoozing, job scheduling, unique jobs, test helpers, etc. We've tried to include everything that people would need when building out with background jobs, including all the edge cases.

Lastly, to be fair, DBOS is price-gated as well [2], and pricing is based on usage whereas River's is not.

[1] https://docs.dbos.dev/golang/programming-guide [2] https://dbos.dev/dbos-pricing

leetrout 2 hours ago

Typo in title... it's River not Rive

brandur 37 minutes ago

Yes, if one of the admins/mods could correct this, it'd be amazing! The rest of the title is fine.

jeffbee 2 hours ago

They avoided all those pesky distributed systems problems by making a system that is not distributed. Hell of a claim.

brandur 23 minutes ago

Blake wrote a nice page on the benefits of using transactional-based enqueuing here:

https://riverqueue.com/docs/transactional-enqueueing

It's true that it's not distributed, but there are a lot of benefits to not going distributed immediately, like extremely predictable data consistency. I would hazard to guess that the _vast_ majority of apps that are not built by the superscalers are already using a database like Postgres or SQLite to store their data, and River merely suggests that you hook your job queue into the database that you already have.

jedberg a few seconds ago

DBOS recently wrote a great blog post about why you should colocate your workflow data with your application data:

https://www.dbos.dev/blog/co-locating-workflow-state-with-yo...