Dominik Tornow(@DominikTornow) 's Twitter Profileg
Dominik Tornow

@DominikTornow

Founder @resonatehqio | Distributed Async•Await | Thinking in Distributed Systems | The Weekend Read

ID:1125559272232837121

linkhttp://book.dtornow.com calendar_today07-05-2019 00:33:37

5,1K Tweets

6,8K Followers

480 Following

Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

What comes first?! The function or the promise?!

Does the function return the promise or does the promise trigger the function

What comes first?! The function or the promise?! Does the function return the promise or does the promise trigger the function
account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

Curious about the core principles of Deterministic Simulation Testing?! Check out my blog post

blog.resonatehq.io/deterministic-…

x.com/DominikTornow/…

account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

Excited about Polar Signals's innovative approach to Deterministic Simulation Testing! 🚀

I am thrilled to see the DST community expanding and pushing boundaries. 🎉

x.com/PolarSignalsIO…

account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

When failures occur, non-distributed systems exhibit distributed system characteristics:

Forward recovery (retries) implies at-least-once delivery and processing, a hallmark issue of distributed systems.

We need idempotency to guarantee correctness

x.com/DominikTornow/…

account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

What comes first?! The function or the promise?!

Does the function return the promise or does the promise trigger the function

What comes first?! The function or the promise?! Does the function return the promise or does the promise trigger the function
account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

Curious about the core principles of Deterministic Simulation Testing?! Check out my blog post

blog.resonatehq.io/deterministic-…

x.com/DominikTornow/…

account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

Excited about Polar Signals's innovative approach to Deterministic Simulation Testing! 🚀

I am thrilled to see the DST community expanding and pushing boundaries. 🎉

x.com/PolarSignalsIO…

account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

When failures occur, non-distributed systems exhibit distributed system characteristics:

Forward recovery (retries) implies at-least-once delivery and processing, a hallmark issue of distributed systems.

We need idempotency to guarantee correctness

x.com/DominikTornow/…

account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

A core feature of Distributed Async Await is Execution Runtime Separation, which is the ability to separate the execution of a function from its runtime environment.

The Challenge

In traditional async await, when you call a function, the resulting function execution is tied to

A core feature of Distributed Async Await is Execution Runtime Separation, which is the ability to separate the execution of a function from its runtime environment. The Challenge In traditional async await, when you call a function, the resulting function execution is tied to
account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

Be mindful of the primitives you choose.

At Resonate HQ, Distributed Async Await builds on Durable Functions & Durable Promises.

Our Distributed Event Loop issues two commands, Invoke & Resume.

The entire programming model is built on recursive, dead simple primitives.

Be mindful of the primitives you choose. At @resonatehqio, Distributed Async Await builds on Durable Functions & Durable Promises. Our Distributed Event Loop issues two commands, Invoke & Resume. The entire programming model is built on recursive, dead simple primitives.
account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

A core feature of Distributed Async Await is Execution Runtime Separation, which is the ability to separate the execution of a function from its runtime environment.

The Challenge

In traditional async await, when you call a function, the resulting function execution is tied to

A core feature of Distributed Async Await is Execution Runtime Separation, which is the ability to separate the execution of a function from its runtime environment. The Challenge In traditional async await, when you call a function, the resulting function execution is tied to
account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

Linearizability ensures that a distributed, replicated object behaves as a single, non-distributed object.

What concept provides the same for distributed computations?

x.com/DominikTornow/…

account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

Distributed Async Await starts by assigning identities to the entities of the system: Functions & Promises.

A function execution is a computational entity, while a promise instance is a data entity.

We are familiar with assigning IDs to data entities, the idea of doing so for

account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

Distributed Async Await assigns IDs to both functions and promises. Why?!

When we consider process crashes, we inherently touch upon aspects of distributed systems−even if there's only one process at a time.

Let's reason about a system in terms of a logical level and a

Distributed Async Await assigns IDs to both functions and promises. Why?! When we consider process crashes, we inherently touch upon aspects of distributed systems−even if there's only one process at a time. Let's reason about a system in terms of a logical level and a
account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

Linearizability ensures that a distributed, replicated object behaves as a single, non-distributed object.

What concept provides the same for distributed computations?

x.com/DominikTornow/…

account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

Distributed Async Await starts by assigning identities to the entities of the system: Functions & Promises.

A function execution is a computational entity, while a promise instance is a data entity.

We are familiar with assigning IDs to data entities, the idea of doing so for

account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

Distributed Async Await assigns IDs to both functions and promises. Why?!

When we consider process crashes, we inherently touch upon aspects of distributed systems−even if there's only one process at a time.

Let's reason about a system in terms of a logical level and a

Distributed Async Await assigns IDs to both functions and promises. Why?! When we consider process crashes, we inherently touch upon aspects of distributed systems−even if there's only one process at a time. Let's reason about a system in terms of a logical level and a
account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

Another example for the need of Mechanical Sympathy are Object-Relational Mappers and the n+1 query problem.

The n+1 query problem refers to an application making database queries in a loop, instead of making a single query that returns all results.

The n+1 query problem is

account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

The concept of Sloppy Quorums highlights a crucial, somewhat unpleasant reality

In the absence of failure, a sloppy quorum guarantees linearizability. In the presence of failure, it guarantees eventual consistency.

Failure conditions are not the norm but always possible.

The concept of Sloppy Quorums highlights a crucial, somewhat unpleasant reality In the absence of failure, a sloppy quorum guarantees linearizability. In the presence of failure, it guarantees eventual consistency. Failure conditions are not the norm but always possible.
account_circle
Dominik Tornow(@DominikTornow) 's Twitter Profile Photo

Sloppy Quorums in Distributed Systems

The concept of a Sloppy Quorum was introduced in the paper 2007 Dynamo: Amazon's Highly Available Key-value Store.

A quorum is the minimum number of nodes required to agree on a value to ensure linearizability.

A sloppy quorum allows for a

Sloppy Quorums in Distributed Systems The concept of a Sloppy Quorum was introduced in the paper 2007 Dynamo: Amazon's Highly Available Key-value Store. A quorum is the minimum number of nodes required to agree on a value to ensure linearizability. A sloppy quorum allows for a
account_circle