"The question is no longer whether an application is concurrent and distributed, but only to what extent an application is concurrent and distributed."

— Dominik Tornow

ResonateHQ Logoresonatehq.io proudly presents:

Distributed

Async Await

— an open specification,

defining a holistic programming model for the cloud

down arrow

Concurrency

concurrency

introduces Partial Order

partial order

Distribution

distribution

introduces Partial Failure

partial failure

Distributed Async Await

specifies how to implement

Coordination

coordination

to combat Partial Order

Recovery

recovery

to combat Partial Failure

Sequential Programming Model

programming model

for a delightful developer experience

promise and function call graph

It is common to manage the complexity that Concurrency and Distribution introduce at the application level, resulting in an awful developer experience. Distributed Async Await pushes that complexity to the platform level, offering a delightful developer experience.

pin

Distributed

Async Await

extends the Async Await programming model...

Echo Icon

...so Concurrency,

and Distribution,

become first class citizens

promises and functions

Distributed Async Await

asks developers to use just

Promises and Functions

promise and function call graph

enabling...

Durable Execution

without any proprietary primitives

promise and function call graph

Async Await pushes Concurrency to the platform level, but does nothing to address Distribution. Unlike Async Await, Distributed Async Await addresses both Concurrency and Distribution at the platform level. Where many Durable Execution solutions force developers to work with proprietary primitives like workflows and activities, Distributed Async Await, like Async Await, uses just promises and functions.

ResonateHQ Logoresonatehq.io also proudly presents:

Resonate

— an implementation

of the Distributed Async Await specification

Echo Icon

Bringing

reliability and scalability

to the language you love

Echo Icon

Currently available in

Echo Icon

Run bar() here

@resonate.register
def foo(ctx):
    promise = yield ctx.lfi(bar)
    result = yield promise
    return result

Run bar() over there

@resonate.register
def foo(ctx):
    promise = yield ctx.rfi("bar").options(
        send_to=poll("service-bar")
    )
    result = yield promise
    return result

Run here

Run over there

Sequential code

Concurrent, distributed, and durable executions

Resonate is dead simple, formally verified, and deterministically tested — the way all software should be.