Mini Course #2 Modular Monolith

Поділитися
Вставка
  • Опубліковано 28 тра 2024
  • Fundamentals of modular monolith architecture + C# .NET code sample solution.
    More content at: devmentors.io
    Join our Discord: devmentors.io/discord
    More content at: devmentors.io
    Repository:
    github.com/devmentors/NPay
    Modular Monolith:
    modularmonolith.net
    Course:
    devmentors.io/courses/modular...
    Join our Discord: devmentors.io/discord
    Follow us:
    / dev_mentors
    / devmentors
    / devmentors
    ===========
    Timecodes
    00:00:00 - Intro
    00:01:18 - Typical monolith
    00:08:55 - Systems division
    00:23:00 - Vertical slice
    00:25:30 - Modules
    00:33:50 - Synchronous communication
    00:38:31 - Data encapsulation
    00:39:51 - Temporal coupling
    00:41:12 - Event-Driven
    00:44:25 - Shared components
    00:47:21 - NPay - sample application
    00:49:35 - Repository & solution setup
    00:55:28 - Solution modules
    01:09:01 - Shared layer
    01:14:15 - Bootstrapper
    01:17:21 - Module communication
    01:27:47 - Local data
    01:32:41 - Message broker
    01:37:55 - Integration via events
    01:52:26 - Microservices transition
    02:04:08 - Outro
    MUSIC
    --------------------------------------------------------------
    ♪ Divine - Jen
    Link: • Video

КОМЕНТАРІ • 42

  • @morgadoapi4431
    @morgadoapi4431 2 роки тому +3

    Thank you DevMentors! Your channel is Majorly underrated! Great job!

    • @DevMentorsEN
      @DevMentorsEN  2 роки тому +1

      Thanks, started working on a brand new content to change it at some point :)

  • @tomaszmielniczek9662
    @tomaszmielniczek9662 2 роки тому +11

    Love you guys, great job as always. I'm really grateful you are doing this.

  • @technics6215
    @technics6215 11 місяців тому

    At 1:51:18 it could be described as "your boundary of concerns is when the message is sent to the message broker/queue". What a great course, thank you! I feel that what you present on this channel is one level higher than Uncle Bob's lectures.

  • @ahmedismailxy
    @ahmedismailxy 2 місяці тому

    you are awesome, thank you for this video.

  • @ericboateng1775
    @ericboateng1775 2 роки тому +1

    This is excellent! Thank you DevMentors

  • @branislavpetrovic7486
    @branislavpetrovic7486 Рік тому

    Great course with very knowledgeable and eloquent author, he explained a lots of different topics in about 2 hours which is very appreciated.
    Thanks Piotr!

  • @henkedude
    @henkedude 2 роки тому

    Excellent content! Very useful! Thanks a lot!

  • @dpaccoud
    @dpaccoud 2 роки тому

    Awesome content, thank you for sharing

  • @morgadoapi4431
    @morgadoapi4431 2 роки тому

    Thanks for the course!

  • @AdamFafinski
    @AdamFafinski 2 роки тому

    Damn good stuff, Sir. Smashing video. Thank you!

  • @Czaderos
    @Czaderos 2 роки тому +1

    Thanks. Great work as always. Keep it up guys. Good luck and thanks for sharing your knowledge.

  • @adamsiarkowski7635
    @adamsiarkowski7635 2 роки тому +1

    Hi Piotr... Thanks for sharing your knowledge with us ..... As always great and very useful content :) May the force be with you and Modular Monolith with us :D

  • @yuriipelekh8859
    @yuriipelekh8859 2 роки тому

    Thanks for the great material!

  • @prasadhkumarjadhav4066
    @prasadhkumarjadhav4066 2 роки тому

    thank you very much for this

  • @guilhermeguth381
    @guilhermeguth381 2 роки тому +2

    First of all, I would like to congratulate you on the excellent content. I have a question about the vertical slice part. At the beginning of the video, you said that one difference between the classical and the modular monolith is that in modular you should use the vertical slice approach. But on the npay solution itself, the Wallets module use separated layers representing the responsibilities. My view on vertical slices is that you can have all these layers into a single 'slice' or a single layer, am I wrong about this perspective?

  • @ugochukwuumerie6378
    @ugochukwuumerie6378 2 роки тому

    Great Content, transitioning to microservices, how do you transition the schema db of a particular module without loosing data?

  • @bloopers2967
    @bloopers2967 Рік тому

    When the next mini course is coming?

  • @meysamhadeli
    @meysamhadeli 2 роки тому +1

    Cool, Thanks...

  • @suhutwadiyo
    @suhutwadiyo Рік тому

    thx you so much 👍👍👍

  • @Unknown971
    @Unknown971 2 роки тому +2

    Amazing! I was waiting for this course. The other course about modular monolith will be replaced by this mini course?

    • @DevMentorsEN
      @DevMentorsEN  2 роки тому +1

      There will be a comprehensive course available on our platform this month :)

  • @stephendgreen1502
    @stephendgreen1502 Рік тому

    Excellent, perfect, although I hate Nuget for shared projects (prefer Git submodules although they too introduce some challenges), plus I am wary of all the support calls for data loss you can get with event-driven if the solution becomes microservices.

  • @harrimahlstrom7706
    @harrimahlstrom7706 Рік тому

    Awesome video, finally some high quality enterprise software engineering insights and not only this high level shit one will find most of the time!❤️🔥

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

      You mean you’re wanting to develop something that’s not just a todo list? 😮

  • @SzymonRta
    @SzymonRta 2 роки тому

    Great content!
    One thing to note is that you could make use of that pop filter on microphone :)

    • @DevMentorsEN
      @DevMentorsEN  2 роки тому

      Thanks, yes, audio, just like video will get constantly better over time :)

  • @maciejpszczolinski5726
    @maciejpszczolinski5726 2 роки тому

    Great video. I see however that modules are using same(shared) IoC container. Kamil Grzybek once done modular monolith where each module has it's own IoC container. What do you think about such approach? Pros/cons? Maybe you can extend your modular course with such variant as well?

    • @DevMentorsEN
      @DevMentorsEN  2 роки тому

      Yes, you could certainly do it e.g. using Module type built into Autofac container, but in the end, it all boils down to the question, whether you really need it, and what's the benefit? As long as you keep using abstractions, and the implementations within each module are marked as internal types, etc. it's not really a game-changer (IoC module) or so :)

  • @edgarhdz.2974
    @edgarhdz.2974 2 роки тому

    Los encontré justo a tiempo, apenas van en el #2

  • @obichoks
    @obichoks 2 роки тому +1

    How is atomicity handled in the event driven system. For instance, creating a user should create a wallet but how do we deal with the case where after the user is stored in the db, there is an outage so the wallet isn't created?

    • @DevMentorsEN
      @DevMentorsEN  2 роки тому +2

      At first, you need to make use of the Outbox pattern to ensure the guaranteed delivery of the events (and Inbox to ignore the potential duplicates). If you need more than that, such as some kind of orchestration on top of multiple modules, Saga might be helpful. It's pretty much the same when working with the microservices :) Check out our more advanced project for more building blocks github.com/devmentors/Inflow

    • @khuiification
      @khuiification 2 роки тому

      @@DevMentorsEN How would you go about implementing the Outbox pattern? Would you use transaction log tailing, polling or something else? This is the biggest smell of EDA for me, relying on transaction log tailing feels kind of hacky but there seems to be no better alternative, at least not one that i'm aware of.

    • @DevMentorsEN
      @DevMentorsEN  2 роки тому

      @@khuiification outbox can be tricky indeed - in our sample, in the main solution for Inflow project, we simply commit the events to be published to the DB using the same TX as for our domain models. However, when you think about scaling, this could easily result in sending the same events multiple times - thus you might think either of some smart partitioning, distributed locking (e.g. redis) or other approaches that could handle such cases.

  • @place53
    @place53 2 роки тому

    How is upcoming modular monolith course different from already existing one? I'm asking because I recently bought it, haven't finished it yet.

    • @DevMentorsEN
      @DevMentorsEN  2 роки тому

      The upcoming course will be a comprehensive one, about 20 hours long, with a much more sophisticated domain and in-depth topics regarding e.g. event-driven architecture and all its challenges, microservices transition, etc. :)

  • @sunnypatel1045
    @sunnypatel1045 2 роки тому +1

    Thank you for this guys. Would you mind doing a course on event sourcing please.

    • @DevMentorsEN
      @DevMentorsEN  2 роки тому +1

      Thanks, one of our friends is an expert in that topic, but we haven't decided yet if we're going to work on that in the near future.