Modularizing the Monolith - Jimmy Bogard - NDC Oslo 2024

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

КОМЕНТАРІ • 28

  • @kedzior-io
    @kedzior-io Місяць тому +1

    I have been writing all my software like this for the past 6 years, never needed any other way. Fantastic talk.

    • @theanswer_19
      @theanswer_19 Місяць тому +1

      How big is the team modifying the code ? Wondering how, let's say 10 modules live together and evolve over time. Will some get orphaned ? Will deployment be a bottleneck with multiple teams owning this monolith?

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

    This is a fantastic talk and it has been featured in the last issue of Tech Talks Weekly newsletter 🎉
    Congrats!

  • @brynyard
    @brynyard 2 місяці тому +8

    Somebody seriously needs to make a talk why _not_ just turn everything into completely independent modules. Or at least where to put the boundaries.
    Hint: There is a cost to it, just as the cost of updating a monolithic codebase.

    • @Alex-lu4po
      @Alex-lu4po 2 місяці тому

      Oh. Would love that!

    • @bjojosimpson
      @bjojosimpson 12 днів тому

      Exactly.
      A module is not an entity, instead the same rules applied to find the boundaries of a Microservice can be applied to design a module.
      A module can have just a single entity if it doesn't depend on anything else in the system.

  • @bjorkgren.tobias
    @bjorkgren.tobias 2 місяці тому

    Will be an interesting watch!

  • @OttoGebb
    @OttoGebb 2 місяці тому +4

    > Meaning changes when going from module to module, here it's not ItemPrice, its CatalogItemPrice. There it's not ItemPrice, it's CartItemPrice.
    Reminds me of bounded contexts from DDD (the meaning of a laguage term changes from context to context). Why no reference to that, Jimmy?

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

      (From my experience) people start rolling their eyes every time they hear about complex concepts such as ddd, solid, xp, structured design, etc. it's easier to make them understand the rationale behind the concepts and only then say "...and that's what DDD/SOLID is about"

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

      ​@@FenelZ "complex" lmao the only complex thing is my inferiority complex

  • @juveraey
    @juveraey Місяць тому

    been there 3years counting. not seeing the ends yet. decoupling is hard

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

    How many fundamentally different commercial business processes that can be embodied in software are there really, given that details can be parameterized or templated? Am I wrong in thinking the same wheels are being reinvented over and over again?

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

      > Am I wrong in thinking the same wheels are being reinvented over and over again?
      No, your hunch is absolutely correct. That's why GitHub exists - programmers got tired of writing the same stuff over and over.

    • @weareham3068
      @weareham3068 8 днів тому

      They definitely are being reinvented over again, but that’s because people have slightly different business structures even in the same industry. If every business were structured exactly the same, there would be no differentiation in the market.
      For example, everything involved in home maintenance would be easier and cheaper if every house were identically built. However, for a variety of reasons, we would never do that.

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

    3:56 bis 6:30 the Problem with boundaries and Microservices, führt zu wir wollen Modularisierung ohne big ball of mudd

  • @StingSting844
    @StingSting844 Місяць тому +1

    While the ideas are okay i still don't see how this enables us to deploy easily without stepping on other teams' toes.
    Thats an incredibly huge benefit of microservices. Also if we have follow these rules to build maintainable monoliths why can't we follow the proper microservices rules?

    • @weareham3068
      @weareham3068 8 днів тому

      Did you watch the video? His whole point is that you won’t know where to draw the boundaries around your micro services until you start building as a monolith.
      You figure out which features should be grouped into modules (microservices) by investigating how frequently they reference each other; not the other way around.

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

    When was this originally aired

    • @nyrtzi
      @nyrtzi Місяць тому +1

      It seems that the event itself where this was recorded was in May this year.

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

    25:54 hidden ads exposed

  • @Elmiger
    @Elmiger 2 місяці тому +5

    Most of these points seem to be applicable to microservices in a monorepo aswell. Yes deployment topics are difficult but there is a high chance that you are going to end up with threading/performance issues on huge services which are no bit easier to debug imho. Once you run into performance / memory issues you probably wish you could narrow the search down to one kubernetes pod of service x instead of "the application". Not saying i dont like modular monoliths, they are the way to go for new projects id say. But nothing more.

    • @Rick104547
      @Rick104547 2 місяці тому +4

      There are many ways of finding performance bottleneck to for instance an endpoint (just logs will give you that) or even line level with profilers.
      Not sure how microservices makes that easier imho.

    • @Elmiger
      @Elmiger 2 місяці тому +1

      ​@@Rick104547Sure, never said its impossible :) multiple deployment units should have less complexity and therefore less potential breaking points. Splitting off functionality that is mature to some degree seems to be the way to go in my opinion. Still, having worked with microservices for quite a while i wouldnt recommend the "micro" part, especially not as a starting architecture for a new project.

  • @vincentcifello4435
    @vincentcifello4435 2 місяці тому +4

    With all due respect, there are so many self-contradictory statements here that one could literally say they are modularizing their application when doing the exact opposite.
    Where exactly in that vertical slice pipeline from database to ui does it receive or transmit data to another slice?
    The obvious answer is nowhere. If you are sharing data, then the slice is not modular because it can’t complete its own responsibility. Isn’t that the very essence of a vertical slice?
    Why even bother discussing vertical slices and modularity if you are going to immediately give up and break encapsulation?

    • @RomanRodionov-s6l
      @RomanRodionov-s6l 2 місяці тому

      > Where exactly in that vertical slice pipeline from database to ui does it receive or transmit data to another slice?
      Usually it happens in Apllication Services or Transaction Scripts
      > If you are sharing data, then the slice is not modular because it can’t complete its own responsibility. Isn’t that the very essence of a vertical slice?
      To get different services work together you should always bring some coupling. If your boundaries are correct then the coupling is called "loose"

    • @StingSting844
      @StingSting844 Місяць тому

      Ideals don't usually end up in the implementation though. Someone at some point will make a mistake to break the encapsulation and it's going to end up in the code base.

  • @JonasThente-ji5xx
    @JonasThente-ji5xx 2 місяці тому +1

    First

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

    JAVA OSGI ?