|
|
|
|
|
by jayd16
1331 days ago
|
|
>That happens with thin events as a matter of course, right? No. If you send no data, what is the race? You can structure an API where there are no races. If you concede to API access the API can provide any sort of historical data necessary. The issue is with incomplete event data and assumptions around what the state was when the event was sent. >As I have stated twice before, it's a non-trivial _reliability_ difference, and that's the key You can state it until you're blue but the advantage _is_ usually trivial or there would be no debate. It just doesn't bite that often. I would say the buggy and prone to rot coupling of baked in event data is a bigger concern for most. That said, I'm making an argument about what is the best bet for dev time and it sounds like you're making an argument about what is best given infinite developer resources, an unchanging APIs, and full knowledge of what data the consumer needs. |
|
You seem to be saying that the race is a problem when comparing 2 copies of the same data (yes) and that this is an issue for fat events (no, and misses the entire point).
A vague thin event contains at minimum an event type and an item id, e.g. "SoemthingHappendedToAnOrder id:123456" which is _ahem_ two pieces of data that are sent. Events containing "no data" are not a thing, don't be absolute.
So there's potential for a race or inconsistency when you correlate that with a http api which might or might not have that order. You can't entirely get away from that.
> You can structure an API where there are no races.
I do not think that you understand "the fallacies of Distributed Systems"
https://www.simpleorientedarchitecture.com/8-fallacies-of-di...
> It just doesn't bite that often.
Has not been my experience.
> That said, I'm making an argument about what is the best bet for dev time
Sure, if you want to write as many bugs as possible as fast as possible, go ahead. (yes, I realise that this is mischaracterising hyperbole, but you did same by saying "infinite developer resources" etc above)