Live data from Hacker News

Rudder, an open source Segment alternative

github.com

101–103 of 103 posts

Re: Rudder, an open source Segment alternative

#101
post #54

Is it really so difficult for engineers to create a task to process a Kafka topic? It takes one day to write a program to consume from a topic of events and push to an API like Amplitude, and you have total flexibility in how you push to those integrations. Why would you use postgres for an event professing system? This seems like an inefficient architecture.

Great question. Complication arises because of failures. One or more destinations may be down for any length of time, individual payloads may be bad etc. To handle all these you need to retry with timeouts while not blocking other events to other destinations. Also, not all events may be going to all destinations. We build our own streaming abstraction on top of Postgres. Think layman's leveled compaction. We will wr…

I'm curious how you guys are usoing Postgres as a log.

I took a brief look at the code, and while the append-only dataset strategy is sound, it looks like your scenario only has a single reader and a single writer?

In my experience, it's not entirely trivial when you have:

1. Multiple readers who each needs to be able to follow the log from different positions in real time.

2. Multiple writers receiving events that need to be written to the end of the log.

3. Real-time requirements.

From what I can tell — I could be wrong here — your system doesn't need to poll the table constantly, because you also save the log to RAM, so whenever you receive an event, you can optimistically handle it in memory and merely issue status updates. If anything goes wrong, a reader can replay from the database.

But that doesn't work with multiple writer nodes where each node receives just a part of the whole stream. The only way for this to work would be dedicate a writer node to each stream so that it goes through the same RAM queue. So then you need a whole system that uses either Postgres or some consensus system like Etcd to route messages to a single writer, and you need to be able to recover when a writer has been unavailable.

Edit: I see you wrote that "we assign same user to same writer", so you're doing something like that.

Re: Rudder, an open source Segment alternative

#102

Earlier quoted context omitted.

Great question. Complication arises because of failures. One or more destinations may be down for any length of time, individual payloads may be bad etc. To handle all these you need to retry with timeouts while not blocking other events to other destinations. Also, not all events may be going to all destinations. We build our own streaming abstraction on top of Postgres. Think layman's leveled compaction. We will wr…

I'm curious how you guys are usoing Postgres as a log. I took a brief look at the code, and while the append-only dataset strategy is sound, it looks like your scenario only has a single reader and a single writer? In my experience, it's not entirely trivial when you have: 1. Multiple readers who each needs to be able to follow the log from different positions in real time. 2. Multiple writers receiving events that n…

Agreed. Our current implementation does not work when there are multiple readers for the same event stream and we need to track per-reader watermarks. We have a very simple model where one reader reads from DB and distributes the work to multiple workers (e.g. network writers) which in turn update the job status.

Multiple writers should work though. StoreJob() should handle that.

I missed the logging to RAM part. Yes, we always wanted to do that but haven't gotten to that yet. Right now, all events are moved through the DB - between gateway and processor and then router. Hence, we poll the table constantly.

Would love if you join our discord channel https://discordapp.com/channels/625629179697692673/625629179.... Slightly easier to have technical discussion there :)

Re: Rudder, an open source Segment alternative

#103

Earlier quoted context omitted.

Thanks for the pointer - will check it out. We are totally novice on this - we don't even have a license attorney. We just picked SSPL because that's what everyone seemed to suggest to prevent the likes of AWS cloning it. Now that we got some visibility, we will carefully take a look at this issue. But at heart we want to build an open-source community while still being a viable business on the likes of MatterMost, E…

This is, what I think is, Mattermost's answer to the current debate around the ethics of FAANG (and others) using open source software to make lots of money without substantially contributing back to the OS projects financially or in code. https://github.com/mattermost/mattermost-server/blob/master/... My understanding is that, Mattermost is okay with others making money from their software if they don't modify it -…

Wow! Thanks for posting this. I had no idea Mattermost had done work to solve this problem.
Post reply on HN