Distributed Asynchronous Await • A new programming model for distributed applications - by D. Tornow

Поділитися
Вставка
  • Опубліковано 25 лис 2024

КОМЕНТАРІ • 18

  • @litfill54
    @litfill54 3 місяці тому +16

    based frieren enjoyer

  • @cowshrptrn
    @cowshrptrn 3 місяці тому +14

    I wish they had talked more about the implementation, this is a cool abstraction, but how are durable promises persisted? Is this just abstracting away a job queue, because you are still saying when something can come up and say "are there any pending charges that need permission" that implies some kind of queue of awaiting promises to be fulfilled.
    It seems like for example 2, you could just enqueue the permission granting onto a job queue as part of the charge operation and then perform it locally for performance, and if anything picks up the permission granting event it will just no-op due to idempotency. I assume there is some kind of distributed lock for the event so you don't have both the local and remote execution happening at the same time as well.

    • @wdvhi
      @wdvhi 3 місяці тому +1

      i think its like a runtime to orchestrate the whole main executing process, and it runs parallel worker processes for each of the sub functions that is going to emit some events, and the orchestrator basically acts as a bridge to communicate the events in the sequential flow defined for the main executing process. so basically there is no actual processing/execution of any business logic in the resonate runtime but in their own isolated systems.
      resonate just coordinates the passing of events in the sequential flow defined in the main process while each of the event emiting function executes on their own isolated system and the main process also runs in its own isolated system , this is what i think is happening....

    • @cowshrptrn
      @cowshrptrn 3 місяці тому

      @@wdvhi sounds a lot like airflow with a different API.

    • @wdvhi
      @wdvhi 3 місяці тому +1

      @@cowshrptrn yep , architecture wise, but this is general purpose kind of framework you can use for any kind of systems

    • @dominiktornow1052
      @dominiktornow1052 3 місяці тому +2

      Hey, I'm happy you like the abstractions. I have a P99 Conf presentation coming up where I talk more about the implementation in case you are interested. tl;dr You are correct, the heart of the distributed async await programming model is a distributed event loop, in essence, a job queue

    • @wdvhi
      @wdvhi 3 місяці тому

      hey @@dominiktornow1052 , just a question ,
      is resonate like a lightweight orchestration engine/runtime that can be used for general purpose applications with async func calls to add extra features on these async func calls like retries , schedulars, etc without the developer needing to write any logic for these extra features but resonate will handle all this
      so basically by wrapping a single main func with multiple async sub func calls with resonate , we make this main func very reliable and durable ?

  • @anusko
    @anusko 3 місяці тому +1

    Thanks for the talk! At 30:12 you pose a question that I find interesting. Given we need the functions that charge a credit card and grant access to a user to be idempotent, what's the difference between a durable execution and a simple background job that retries until it's completed?

    • @dominiktornow1052
      @dominiktornow1052 3 місяці тому +2

      BTW, even if your functions are idempotent, the composition of your functions may not be correct under retry. Resonate implements deterministic simulation testing for your workflows so you can make sure your resulting application is correct

  • @pierre-antoineguillaume98
    @pierre-antoineguillaume98 3 місяці тому

    I feel like it tries to abstract events but there is still a high coupling to events, so what happens if you have an event with multiple handlers ? Which have their own lifecycles ?
    Plus, you now have to deal with this context everywhere, mixing business logic with technical concern occupying some parts of your mind.
    And you change your mental model from a stack to a corroutine. I guess that one is kind of the point.
    My developer experience is pretty good with event driven, so i don't feel his pain ... Yet. I guess I'd be more at ease with automatic schemas but still.

  • @dearlordylord
    @dearlordylord 3 місяці тому +4

    Cool stuff. What are the advantages over Temporal? It looks similar!

    • @unnaturaltm
      @unnaturaltm 3 місяці тому +1

      I think the workflow stuff at the start is a reference to something like Temporal?

    • @dominiktornow1052
      @dominiktornow1052 3 місяці тому +5

      Resonate and Temporal both implement Durable Executions. Resonate's main goal-and the core of our technical values-is being dead simple. That starts with a dead simple programming model, based on two abstraction, functions and promises, that is dead simple to understand and extends to a dead simple developer experience and a dead simple operational experience. Achieving this level of simplicity is challenging, but that's where we spend all our energy

  • @wdvhi
    @wdvhi 3 місяці тому +3

    is this similar to temporal io ? if i remember , dominik is also part of temporal io right ?

    • @dominiktornow1052
      @dominiktornow1052 3 місяці тому +4

      I was at Temporal for 2 years before founding Resonate. I'll copy a reply from before: Resonate and Temporal both implement Durable Executions. Resonate's main goal-and the core of our technical values-is being dead simple. That starts with a dead simple programming model, based on two abstraction, functions and promises, that is dead simple to understand and extends to a dead simple developer experience and a dead simple operational experience. Achieving this level of simplicity is challenging, but that's where we spend all our energy.

    • @wdvhi
      @wdvhi 3 місяці тому +4

      @@dominiktornow1052 thanks for the clarification.
      I used temporal io before once, really liked it, but it did take me a day to understand what its doing overall, now after going through parts of resonate docs, i totally agree, the abstractions for resonate is way more developer friendly to both understand and use , so yeah dead simple for sure, i really like this. Hoping to somehow convince my startup to use resonate soon 😅