Modern Transactional Stack
seeing a lot of ad hominem comments on a16z and think that&#x27;s a pretty low quality response - let&#x27;s try to respect HN guidelines and discuss the substance of the article? this is an emerging space and we all lack the language to adequately describe it, so cut them a little slack there if the chosen terminology doesnt connect at first.<p>as someone who has worked in this space (<a href="https:&#x2F;&#x2F;www.swyx.io&#x2F;why-temporal" rel="nofollow">https:&#x2F;&#x2F;www.swyx.io&#x2F;why-temporal</a>), here&#x27;s a few quick responses:<p>&gt; &quot;We’re seeing the emergence of systems that extend strong transactional guarantees beyond the database, into the distributed apps themselves.&quot;<p>yes absolutely. but its not just transactions, but also the ability to route&#x2F;distribute work, and &quot;self provision&quot; (<a href="https:&#x2F;&#x2F;www.swyx.io&#x2F;self-provisioning-runtime" rel="nofollow">https:&#x2F;&#x2F;www.swyx.io&#x2F;self-provisioning-runtime</a>) queues and timers and new application states (unconstrained by preset DAG) as you code<p>&gt; a giant hairball of queues and retry logic is too brittle<p>my favorite img on how this looks (on a real diagram, from a real aws blogpost) <a href="https:&#x2F;&#x2F;twitter.com&#x2F;swyx&#x2F;status&#x2F;1423025792783568899" rel="nofollow">https:&#x2F;&#x2F;twitter.com&#x2F;swyx&#x2F;status&#x2F;1423025792783568899</a><p>&gt; (temporal) will ensure the code runs to completion, even during a failure.<p>i&#x27;d correct to &quot;transient failure&quot; (eg due to network or uptime issues). retries cant solve application logic issues and mostly fatten the tail of timeout failures that still need to be dealt with. fault tolerant code is a much better default, but there&#x27;s no totally-free lunch here.<p>&gt; The downside is that it (temporal) often requires a lot of integration work and wrapper code to expose useful and safe interfaces to application developers.<p>yes (example <a href="https:&#x2F;&#x2F;temporal.io&#x2F;blog&#x2F;why-rust-powers-core-sdk" rel="nofollow">https:&#x2F;&#x2F;temporal.io&#x2F;blog&#x2F;why-rust-powers-core-sdk</a>) - but there are lots of higher level systems built atop temporal (eg <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=34686216" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=34686216</a> and <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=M25p1cgjM2U&amp;list=PLl9kRkvFJrlSM-s-s-8WbgjN-R3Y4L7WG&amp;index=6&amp;pp=iAQB">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=M25p1cgjM2U&amp;list=PLl9kRkvFJr...</a>) but this is also how netflix&#x2F;stripe&#x2F;etc are able to customize it for their stack and encode their opinions in a way that the other alternatives mentioned would not be able to<p>&gt; The other approach, which is more popular with application developers (particularly Typescript&#x2F;Javascript) is for the workflow engine to serve as an orchestrator of async functions (e.g. Inngest, Defer, and Trigger)... (truncated)<p>lest i sound like a pure temporal shill, i also agree that this is an attractive model for fullstack web developers (as opposed to say backend&#x2F;systems devs). this is why i got excited about Defer enough to review it (<a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=iGccpHaB1hA">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=iGccpHaB1hA</a>)<p>&gt; Database-centric approaches start with a database, but extend it to support arbitrary code execution to allow for workflows alongside data management.<p>i&#x27;ve always used the analogy that workflow systems are &quot;stored procedures on steroids&quot;. glad to see some signals that Convex (and Supabase?) have plans to make this available to their users. i think there&#x27;ll be happy users of either approach, but personally am doubtful that the DB-centric approach will take significant share simply because 1) this stuff is not existential for them while it is for the workflow companies, so they will probably lag behind in features, investment, product&#x2F;GTM focus, and 2), workflow systems easily bridge multiple systems and databases while the db-centric approach is necessarily limited to the system that db lives in. if you have a real microservices setup instead of a distributed monolith, its pretty obvious which approach will win here