3 ms·
> One is that end-to-end system semantics matter much more than the semantics of an individual building block, and sometimes what seems like a very desirable se
by vishnugupta 12y ago
> One is that end-to-end system semantics matter much more than the semantics of an individual building block, and sometimes what seems like a very desirable semantic for a building block may end up making the end-to-end problem harder. The other is that simple, practical, solutions like unique IDs can make really hard problems much easier, and allow us to build and ship real systems that work in predictable ways.
These assertions that I tend to follow most of the time. I keep warning my team members to never assume that a request for payment/fulfillment/some-business-function is going to arrive exactly once. If they build systems assuming that underlying scaffolding is going to behave in certain way then they won't be designing for failure. In any distributed system it's very important to define correctness from the end user's perspective. And then design for failure ensuring that the correctness guarantees are not violated.