dotGo 2019 - Kat Zień - Achieving maintainability with hexagonal architecture

Поделиться
HTML-код
  • Опубликовано: 27 ноя 2024

Комментарии • 40

  • @DannySchimke
    @DannySchimke Год назад +3

    Thanks for this great talk!
    I am still a bit confused how to apply this to go-code. I am still searching for a best-practice/often used way, how to structure the packages for a hexagonal-architecture-driven app. Should every layer be in its own package ("domain", "app", "infrastructure") or should there only packages like "service" and we have to know to what layer it belongs? I stop now, I have many more examples for such questions :D

  • @neoloaded
    @neoloaded 2 года назад +1

    The interesting outcome of adopting a Hexagonal Architecture pattern is - you can audit the effort spent on developing the actual domain layer vs all the interfaces in the application layer to talk to the external world. Even a simple audit of Git commits will show where the spread of effort is.
    A personal philosophical point is - modern Cloud-based app development has a highly skewed ratio towards interfacing with external services than improving the domain layer. Utilising external providers for non-core components is great, but is the Application development then just an assembly line for combining core parts produced elsewhere (borrowing an analogy from automobile manufacturing) and later slapping the brand logo on the assembled product?

  • @Velobetty
    @Velobetty 5 лет назад +4

    Enjoyed this talk and interesting to see these patterns applied to Go.

  • @alessandrob.g.4524
    @alessandrob.g.4524 3 года назад +2

    Don't you have an example code?

  • @froop2393
    @froop2393 2 года назад +1

    17:05 thats the key point of the talk.

  • @JanacMeena
    @JanacMeena 4 года назад +4

    Great talk for a beginner like myself. Thank you.

  • @pricesmith8450
    @pricesmith8450 3 года назад +2

    why would she not give examples in these talks? not throwing shade, just dont get it... at all

    • @froop2393
      @froop2393 2 года назад

      Then you would see that the effort is to high...

  • @andrewshatnyy
    @andrewshatnyy 4 года назад +6

    Any way these concepts can be explained with a real life scenario? This all reminds me Russian University so much high level abstract maths but no concrete example ruins the subject for many engineers. I appreciate the idea walkthrough but it still missing the application :(

  • @32BitChronicles
    @32BitChronicles 4 года назад +4

    very interesting talk, the only bad thing is that the constant camera changes are very distracting

  • @WebUser-d4i
    @WebUser-d4i 7 месяцев назад

    ToMuchTheorieException !!!

  • @a0um
    @a0um Год назад

    Onion, Hexagonal, Screaming, Ports and Adapters, …why not just “domain-centric service architecture”?
    Once you put the domain model at the center the rest follows naturally.

  • @rodelias9378
    @rodelias9378 3 года назад

    Awesome talk!!

  • @trozzonick77
    @trozzonick77 4 года назад +2

    Hexagonal was good when was taught about it, big monolithic applications. Using in in a real microservice architecture feels like a massive overhead.

    • @lule642
      @lule642 3 года назад +2

      What so you prefer?

  • @bunnihilator
    @bunnihilator 2 года назад

    this is gold

  • @notangryjustdismayed
    @notangryjustdismayed 5 лет назад +8

    that glass of water right next to the laptop is making me nervous

  • @alessandrob.g.4524
    @alessandrob.g.4524 3 года назад

    You nailed it, girl!

  • @acupsf
    @acupsf Год назад

    Yes, don't over engineer/over optimize at the beging

  • @bacharsaleh6984
    @bacharsaleh6984 5 лет назад +10

    Nice talk ,but I have heard this explanation more than 5 times by different speakers. It's better to add something more valuable to the talk than repeating.

  • @ErincFrtna
    @ErincFrtna 5 лет назад +3

    I think Kat’s gophgercon presentation is much more better.

    • @fingesso
      @fingesso 5 лет назад

      Thanks for the feedback (and I'm glad you liked that one). If you don't mind elaborating, what was better in the other one?

    • @namazbekbekarysuly9112
      @namazbekbekarysuly9112 3 года назад

      Are you about gophercon uk 2018. I will take a loot at it too.
      Thanks.

    • @alessandrob.g.4524
      @alessandrob.g.4524 3 года назад +1

      @@fingesso You are not Kat Zień!

  • @farhadegza2
    @farhadegza2 5 лет назад +4

    It had a nice start with engaging the audiences but then got boring by just reading from the laptop.

    • @fingesso
      @fingesso 5 лет назад +4

      Thanks for the feedback! I agree that the delivery could have been more polished, but I had very little time to prepare & it's a very short slot so I had to make sure I stick to the script. I haven't been doing public speaking for that long so the nerves still show up at events of this kind :)

  • @kalekold
    @kalekold 5 лет назад +4

    These patterns are exactly what the Go team were explicitly trying to avoid!

    • @ItslennyDe
      @ItslennyDe 5 лет назад

      Could you elaborate on that?

    • @fingesso
      @fingesso 5 лет назад +1

      As above, if you want to start a discussion, start with some constructive feedback. Do you have any links to materials backing your statement? Are you part of the Go team? Are you saying that people shouldn't be applying this design pattern to their Go code? If so, why?

    • @kalekold
      @kalekold 5 лет назад +5

      @@fingesso
      "Clear is better than clever."
      - Rob Pike
      "You should be thinking about writing simple clear code rather than trying to make the cleverest, densest stuff you can."
      - Rob Pike
      ruclips.net/video/PAAkCSZUG1c/видео.htmlm35s
      In the talk above, even she has trouble trying to explain what the hell she is on about.

    • @Dolanor
      @Dolanor 3 года назад +3

      @@kalekold Hi,
      I must say that the hexagonal architecture has been used in a few packages inside the stdlib.
      The image package for example declares the image.Image interface of each concrete image implementation. And a image/png.Reader.Decode returns an image.Image.
      And the quote from Rob is more about "clever" one-liner that are unreadable afterwards… Or things like template meta programming.
      The hexagonal architecture is quite explicit and boring in the end, not so "clever".

    • @namazbekbekarysuly9112
      @namazbekbekarysuly9112 3 года назад +2

      Author of the comment certainly doesn't know anything what he is talking about.
      Introducing some patterns to your architecture does not necessarily mean it is going to be bad.
      It mostly depends on how you will implement them.

  • @in9952
    @in9952 5 лет назад +9

    Seems she doesn't even understand what it's all about.

    • @fingesso
      @fingesso 5 лет назад +8

      Care to tell me what it's all about then? ;)
      I was asked to prepare an 18 minute talk based on a talk which I normally give in 45, so naturally it doesn't go into all the details. Granted, the delivery could have been more polished (I had very little time to prepare and the timing was strict), but I stand by the content 100%.

    • @Velobetty
      @Velobetty 5 лет назад +11

      She explained the topic and clearly understands it perfectly well. I look forward to your presentation.

    • @methodsignature
      @methodsignature 4 года назад +2

      @fingesso imho you do seem to know the content well. Thanks and this was a good intro to Hexagonal for me.
      i would like to challenge the notion that the point of DI/IOC is "to keep changes local". That is true for DI, but not true for IOC.
      I like the explanation of IOC in Clean Architecture. It gets at the WHY we should use IOC. Uncle Bob actually sets up the interactor (application) layer as the core, most independent layer in Clean Architecture. That is where business rules live. When the core then needs to change it is b.c. of a change in business rules and other layers must fall in line. It is important that the Interactors are completely independent b.c. you don't want a change in, say, how the API adapter is defined to cause the Interactor layer to change and end up having a knock on affect to yet other things that depend on the Interactor layer.
      The architecture helps drives maintainability through this inversion. When something "less central" needs to change, it won't have impact on more central layers that impact a greater share of the system. The same seems to apply for Hexagonal, except that the domain is the core of that system.
      Also, maybe you misspoke that "if the domain needs to change, you shouldn't really need to change the outer layers" Better would be "if implementation details within the domain need to change, ...", but that is probably more of a distraction in that part of your presentation. By definition, changing the interfaces declared in the domain will require related outer layer adapters to change.
      - Just another aspiring systems architecture student seeking knowledge and happy to have my understandings challenged.