Clean Architecture vs Domain-Driven Design (DDD) - Understand the Difference

Sdílet
Vložit
  • čas přidán 2. 06. 2024
  • In todays video, we'll talk about CA vs DDD.
    Although they are often used together, they are actually completely different things. In this video we'll break down what the Clean architecture is, what Domain-Driven Design is, and what is the difference between them.
    Connect with me on 'em socials:
    Twitter: / amantinband
    LinkedIn: / amantinband
    GitHub: github.com/amantinband
    Check out all my courses on DomeTrain:
    dometrain.com/author/amichai-...
    Support the channel and get the source code:
    / amantinband
    Thanks for watching, don't forget to like & comment & subscribe! ❤️ 💻
  • Věda a technologie

Komentáře • 45

  • @kmcdo
    @kmcdo Před 4 měsíci +2

    you've been engagement'd! Loving the fresh vods lately - keep 'em coming!

  • @FalcoSparverius
    @FalcoSparverius Před 4 měsíci +1

    Good way to start the week, thanks so much!

  • @Codewrinkles
    @Codewrinkles Před 4 měsíci +2

    This was one of the key points in my latest video too. This common misunderstanding is very widespread and one of the major reasons why people tend to struggle with understanding software architecture in general.

  • @yevvgor
    @yevvgor Před 4 měsíci

    Thanks! Crystal clear.

  • @MehediHasan-xd6rj
    @MehediHasan-xd6rj Před 4 měsíci

    Many thanks for the video and expecting more :)

  • @ferventurart
    @ferventurart Před 4 měsíci

    Hey Amichai thanks for your explanation it is clear!

  • @ylazerson
    @ylazerson Před 4 měsíci

    Great video - thanks!

  • @MrJonnis13
    @MrJonnis13 Před 4 měsíci

    Excellent video indeed.

  • @tanglesites
    @tanglesites Před 4 měsíci +2

    I really like these videos because Amichai talks about the more advanced concepts that are not covered anywhere else on the internet. Because in todays market of developers, you are not getting hired with your typical self-taught You-Tube education. Your projects are going to need some complexity to showcase that you are not just some code-monkey, or react-andy. Before these videos I could not map a domain to schema, or had any idea on to create a domain to begin with. I feel like I had that level of professionalism to my projects needed to get noticed by employers. I think the only thing I have not seen on the internet is how domain events are implemented together with something like Mass Transit or RabbitMQ. Excellent explanation of how separation of concerns synergizes with battle tested patterns and architectural principals to produce quality code.

  • @nirajchandrajoshi
    @nirajchandrajoshi Před 4 měsíci +1

    Great content I found today

  • @islamelgaidi1821
    @islamelgaidi1821 Před 4 měsíci

    Thanks for the video

  • @user-zg7gy6dh2y
    @user-zg7gy6dh2y Před 4 měsíci

    Thanks for your videos, Amichai.
    My question will sound very specific but who knows... In my industry, experts are referring to real-world objects as "manufacturable" and "manufactured". But the current codebase refers to the corresponding entities as "manufacturableMachine" and "manufacturedMachine". Is there any recommendation on using either language in the codebase? The actual spoken terms, or more formal terms? Or if there is any kind of standard regarding this question, is it bothersome that the words used to refer to these entities are adjectives or past participles?

  • @knightmarerip711
    @knightmarerip711 Před 3 měsíci +1

    Really good vid. However, I kinda got confused when you started talking about the Application layer. Why do you have the application layer talking to the Infra layer? I thought the application layer can only communicate with the domain layer.

  • @ransandu
    @ransandu Před 4 měsíci +1

    Agreed what you just said. Also, it's required to understand that DDD != CA.
    I have seen people claim they have done DDD because they have implemented CA. Which is wrong.
    DDD can be used to model your problem domain but it should not influence CA.
    A tactical design decision tree can be used to identify business logic patterns and architecture patterns based on the subdomain identified (supporting, generic, and core)

  • @danielolajumoke4389
    @danielolajumoke4389 Před 4 měsíci +1

    God bless your heart Amichai. Struggled with the relationship between both concepts for quite a while now

  • @ono48
    @ono48 Před měsícem

    Clear as mud!

  • @Moosa_Says
    @Moosa_Says Před 4 měsíci +3

    it would be really good if you can show an example project.

    • @amantinband
      @amantinband  Před 4 měsíci

      What specifically would you like to see?

    • @Moosa_Says
      @Moosa_Says Před 4 měsíci +1

      @@amantinband maybe an example project of bank where each module is divided in it's own layer as you explained. where will be the UI, where will go the validations, models, business logic and where will be the db access layer etc..

    • @amantinband
      @amantinband  Před 4 měsíci

      I did something similar in this video, check it out - czcams.com/video/1OLSE6tX71Y/video.htmlsi=k7Xh-tnPnGHWTJz3

  • @serb1146
    @serb1146 Před 3 měsíci

    May we say that DDD, is when you develop little framework before for the specific application?

  • @unhandledexception1948
    @unhandledexception1948 Před měsícem

    from your courses would u suggest viewing the DDD before the Clean Architecture?

  • @richaaa_.m
    @richaaa_.m Před 4 měsíci

    hi, is the content of the video included in one of your dometrain courses? thanks!

    • @amantinband
      @amantinband  Před 4 měsíci

      Hey, I don't have a section that covers specifically the difference between the two (maybe that's a good idea for future courses). I have in depth courses on both CA and DDD so I would like to believe that viewers would know the difference, but maybe a dedicated sub-section is a good idea for the future

  • @thijsvandervegt3377
    @thijsvandervegt3377 Před 4 měsíci

    Hey Amichai, would it be possible to share the figma files/link for the diagrams/designs you've used in your CA-template? That way we could make similar diagrams for our projects, or update the ones you've used.

    • @amantinband
      @amantinband  Před 4 měsíci +2

      Answered on GitHub, but will drop the link to the figma communite plugin here as well for anyone coming across this comment: www.figma.com/community/file/1334042945934670571/clean-architecture-project-file-system

  • @AlfredNing
    @AlfredNing Před 3 měsíci

    Can you issue a video code to realize the use of the warehouse layer and factory?

  • @RogerValor
    @RogerValor Před 28 dny

    I feel like this is always explained a bit differently, as originally, the domain layer would contain all interfaces and definitions, and the application layer would implement them in the usecases. so strictly speaking the business "code" is in the application, while the domain only describes, but has no logic, however sets the domain language.

  • @evilpapagali
    @evilpapagali Před 3 měsíci +1

    I just don't get why Infrastructure arrow is not from application to infrastructure.
    If Databases are in infrastructure, wouldn't the application be the one who's calling the infrastructure?

    • @evilpapagali
      @evilpapagali Před 3 měsíci +1

      Researching more about the matter, the arrows are not calling process, but dependency.
      For implementation, Application layer could just call interfaces. Infrastructure implements those interfaces and then actually store and read data from DB.

  • @zhaltys
    @zhaltys Před 3 měsíci

    From CA i am not sure that domain layer should contain logic, why is it not in application layer? as part of orchestration. In my experience, domain layer mostly contains domain entities, some constants and hmm maybe some exceptions

  • @kqvanity
    @kqvanity Před dnem

    3:31 to the core layer rather?

  • @techandstream
    @techandstream Před 4 měsíci

    thank

  • @achrefnabil2463
    @achrefnabil2463 Před 4 měsíci +1

    Can you please bro do a typescript clean architecture DDD course ❤

    • @Linkario86
      @Linkario86 Před 4 měsíci +1

      It's the same principles, just using Typescript?

    • @amantinband
      @amantinband  Před 4 měsíci +1

      DDD is language agnostic, and the course would be very similar.
      The Clean Architecture part would be implemented differently, using different libraries and tools, but would also look very similar.
      Maybe in general I do think it is a good idea to port the courses to other languages as well to help viewers understand the content in their preferred language, but don't think I'll have time for it in the foreseeable future

  • @marrowfreeze
    @marrowfreeze Před 4 měsíci +10

    You can’t make me understand. I refuse to

  • @Linkario86
    @Linkario86 Před 4 měsíci

    Hey Amichai,
    What do you think about the idea of using Clean Architecture for Modules in a Modular Monolith?
    On a first glimpse it seems like a good idea, especially since the Data Access can often get messy and Data Access across different Modules is made. With one Infrastructure layer, that wouldn't seem so wrong and confusing.

    • @amantinband
      @amantinband  Před 4 měsíci +1

      Using CA with modular monoliths is very common. Regrading infra, most solutions create an infra layer per module. Shared resources would be extracted to a common project if needed, but each of the modules would have it's own ifra layer

    • @Linkario86
      @Linkario86 Před 4 měsíci

      @@amantinband thank you! The common project is a good idea. In fhe data access we have a lot of cases where many Databases are joined together in each modules data access. That's why I was thinking of one Infra

  • @dave_s_vids
    @dave_s_vids Před 4 měsíci

    Great video, thanks... Smash the like button... I don't suppose you're a badminton player are you? ;)

    • @amantinband
      @amantinband  Před 4 měsíci

      Not at all 😂

    • @dave_s_vids
      @dave_s_vids Před 4 měsíci

      @@amantinband :D I ask because it's a catchphrase from a badminton channel I watch ;)

  • @sheilahbeschorner5309
    @sheilahbeschorner5309 Před 3 měsíci

    *PromoSM* 😈