DDD, event sourcing and CQRS - theory and practice

แชร์
ฝัง
  • เผยแพร่เมื่อ 4 ต.ค. 2024

ความคิดเห็น • 37

  • @cyniquemisanthrope4172
    @cyniquemisanthrope4172 3 ปีที่แล้ว +14

    This is how tech talks should be done. Concise, clear and straight to the point!

  • @WaveMrNight
    @WaveMrNight 4 ปีที่แล้ว +5

    2 years after, this is still awesome

  • @girlsincode9255
    @girlsincode9255 3 ปีที่แล้ว +5

    best explanation for DDD, event-sourcing and CQRS.

  • @danielwarke4742
    @danielwarke4742 3 ปีที่แล้ว +5

    Thank you!! Spent hours looking for an easy to understand explanation of these concepts and this video is the best one by far

  • @ahmaddeveloper7595
    @ahmaddeveloper7595 3 ปีที่แล้ว +2

    incredible presentation, very intuitive and not convoluted with dry and hard-to-consume concepts

  • @VladimirRoytman
    @VladimirRoytman 3 ปีที่แล้ว +2

    Very clear, understandable and straight-forward presentation. Thank you!

  • @muchfitter1124
    @muchfitter1124 3 ปีที่แล้ว +3

    THIS IS GOLD, GOLO! Thanks!

  • @maksimsergeevich5939
    @maksimsergeevich5939 3 ปีที่แล้ว +1

    Wow! Nice that I found this video! I just introduced the Wolkenkit to myself yesterday!

  • @Jonathan-od5xc
    @Jonathan-od5xc 4 ปีที่แล้ว +7

    This is exemplary, thank you very much

  • @kevinpeters3940
    @kevinpeters3940 5 ปีที่แล้ว +17

    Lmaooo amazing talk, I love how the backend engineers clap for the animations and css 😂

  • @hiimshort
    @hiimshort 3 ปีที่แล้ว +2

    Great talk with things distilled to an understandable level. Well done!

  • @banatibor83
    @banatibor83 ปีที่แล้ว

    For those who haven't read the book and watch this video. First, read the book Domain-driven Design by Eric Evans.
    The language is ubiquitous, it is a property of the language of the domain or the bounded context. It means it permeates everything, discussions, documents, diagrams, and the code itself!

  • @lapseofeternity
    @lapseofeternity 3 ปีที่แล้ว +2

    In my experience, adding the current state of the aggregate along with the event makes the events idempotent for subscribers because rather than projecting the event on local state, the subscribers can trust the state generated when the event was triggered. Then, the events in the message payload can be used to trigger actions. So even if events arrive out of order, the read state still remains consistent. e.g. user_created and user_activated are 2 events generated when new user joins. A notifier should send an email when user_created event arrives. Without current state, ordering must be maintained as the user instance won’t even exist if user_activated arrives first. Also, user_activated may just have user id and not the info because that may be only in user_created (since users can activate / deactivate at anytime). So if you include the state, the user_activated message can still be processed by notifier to update its local store with user’s email and when user_created arrives, it can discard the state from that message (lesser sequence number) and just trigger the action based on the event. So state controlled by message.state and actions controlled by message.event.

    • @therealmikz
      @therealmikz 3 ปีที่แล้ว +2

      Adding the "current state of the aggregate" doesn't seem to me as a good solution to anything. Basically if your aggregate is event sourced, you often cannot define any structure as a state because every module/microservice can contain different structure and treat it as its view of the aggregate, it means not only that you'd have compatibility issues but also you're leaking domain data all over your system. Also there's overhead of creating serialization/deserialization logic, it becomes harder to change aggregate structure and it adds more data to your messages. But there's more: if you base your application on the CQRS, your aggregate can be HUGE. And those are just things of the top of my mind, I bet there's more to that.
      You might be interested in tracking correlation and causation identifiers of the events. Also take a look at the Saga pattern.

  • @JulesRulez65
    @JulesRulez65 ปีที่แล้ว

    Du bist der Hammer, Golo!

  • @rajsaraogi
    @rajsaraogi 4 ปีที่แล้ว +1

    @24:25 Event sourcing, not only storing the current state but also storing the chain of events which lead to current state.

  • @ehsanahmadi8976
    @ehsanahmadi8976 3 ปีที่แล้ว +1

    Thank you it was so straightforward

  • @rajsaraogi
    @rajsaraogi 4 ปีที่แล้ว +1

    47:30 yes this is why collecting all possible data at every instance make event sourcing crucial, as we can't guess what kind of questions can arise later in our business

  • @LvvMontenegro
    @LvvMontenegro 4 ปีที่แล้ว +2

    wish i could like it more than once

  • @Jensemann099
    @Jensemann099 5 ปีที่แล้ว +2

    This is a great talk!

  • @lotofhop5972
    @lotofhop5972 ปีที่แล้ว

    That was so great hour, thanks a lot!

  •  2 ปีที่แล้ว

    That was awesome!! thanks for sharing

  • @maour
    @maour 5 ปีที่แล้ว +1

    Great talk, thanks

  • @DmitriyBlokhin
    @DmitriyBlokhin ปีที่แล้ว

    Thank you 🙏

  • @fatemehayoubi2020
    @fatemehayoubi2020 2 ปีที่แล้ว

    What a teacherrrrrrrr💚

  • @canmertinyo
    @canmertinyo 4 หลายเดือนก่อน

    thanks a lot !

  • @rajsaraogi
    @rajsaraogi 4 ปีที่แล้ว

    @17:10 commands are actions and events are system reaction.

  • @uzayordu
    @uzayordu 2 ปีที่แล้ว

    Thank you!

  • @rajsaraogi
    @rajsaraogi 4 ปีที่แล้ว +1

    26:18 great example that event is never deleted by using false transaction, the money is taken and refunded back but the log is never deleted

  • @rajsaraogi
    @rajsaraogi 4 ปีที่แล้ว

    @19:50 things which have a state and access commands and fire events is called aggregate

  • @yassinehadhadi7239
    @yassinehadhadi7239 5 ปีที่แล้ว +2

    I want to understand the magic behind Wolkenkit how can I Implement this from scratch, is there any suggestions that might help with that?

  • @rajsaraogi
    @rajsaraogi 4 ปีที่แล้ว

    56:45 projections are which make the interpretation

  • @stewiegriffin6503
    @stewiegriffin6503 2 ปีที่แล้ว

    Near the end, I really thought he will have a heart attack

  • @serhiiluhovyi
    @serhiiluhovyi 3 ปีที่แล้ว

    Realy great! Thanks!

  • @matterhart
    @matterhart 5 ปีที่แล้ว

    DDD, event sourcing and CQRS explained really well starting at th-cam.com/video/rolfJR9ERxo/w-d-xo.html

  • @rajsaraogi
    @rajsaraogi 4 ปีที่แล้ว

    43:50 CAP theorem

  • @AssFaceNFT
    @AssFaceNFT 2 ปีที่แล้ว

    Very well explained! Thank you ser 🙏🌹