Гексагональная архитектура и микросервисы

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

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

  • @serge3268
    @serge3268 10 หลายเดือนก่อน +11

    «Мне очень не нравятся аббревиатуры в названиях классов», «так называем класс Api, …. следующий класс Spi» 😂
    Видео очень интересное, спасибо.

    • @shurik_codes
      @shurik_codes  10 หลายเดือนก่อน

      Да, я такой)

  • @inzagher
    @inzagher 7 หลายเดือนก่อน +10

    Вот интересно, одному мне показалось, что решение слишком переусложнено? По мне, схема, которая используется в большинстве спринг бутовых приложениях вида controller(listener, scheduled и т.д.) -> service -> repository (rest-template, kafka-template и т.д.) работает по тем же принципам, но не переусложнена деталями и допабстракциями. Пока ни разу не сталкивался с гексагоналкой, представленной именно в таком виде. Автору огромное спасибо за разъяснение принципов на практике.

    • @walcermelodia
      @walcermelodia 4 หลายเดือนก่อน +1

      Слоистую архитектуру люди научились варить)
      А вот с гексагональной и ддд у большинства проблемы с пониманием + каждый по своему трактует

    • @lexxx1994
      @lexxx1994 3 หลายเดือนก่อน +1

      И там и там есть плюсы и минусы. Иногда классическая трехслойка в одном модуле будет предпочтительнее.

  • @senin24
    @senin24 8 หลายเดือนก่อน +7

    Титанический труд автора и бесценный контент. Как мне его не хватало пару лет назад. Спасибо за труд. По гексоганальной архитектуре мне так же понравилась книга Get Your Hands Dirty on Clean Architecture - там автор тож от теории сразу переходит к практике создания структуры приложения по гексагону, но в книге даже все попрорще, чем в этом видео. В этом видео прям от и до показана структура приложения. И как красиво и просто можно от монолита переходить к распределенным микросервисам. В случае если это действительно понадобилось, а не дань моде.

  • @hackim2554
    @hackim2554 10 หลายเดือนก่อน +6

    Снимай дальше!!! Отличный контент, я бы хотел увидеть ещё про написания правильной веб архитектуры в современном backend

  • @Тимур-л1м
    @Тимур-л1м 10 หลายเดือนก่อน +2

    Мне больше понравился доклад от DDDevotion по чистой архитектуре, но там не показывали процесс разделения на модули и т.п.
    Я сейчас как раз пишу проект с гексагональной архитектурой, но отдельно на модули его я так и не решился разделить. Спасибо вам за это видео, сегодня постараюсь применить полученные знания)

  • @RatchetTV1515
    @RatchetTV1515 8 วันที่ผ่านมา +1

    Однозначно лучший джавист

    • @shurik_codes
      @shurik_codes  7 วันที่ผ่านมา +1

      Да ну нееее... Но спасибо)

  • @resolution07
    @resolution07 3 หลายเดือนก่อน +2

    Не показывайте это КРУДОделам, у них инфаркт случится

  • @viktorperov9020
    @viktorperov9020 5 หลายเดือนก่อน +3

    Не канал, а золотая кладезь знаний. Каждый видос вбирает в себя столько крутых и полезных знаний, что прям вау. Респект тебе, дружище, за такой контент

  • @БогданЗараник
    @БогданЗараник 10 หลายเดือนก่อน +8

    блин, какой же классный контент. Вот нигде такого не видел, если честно.

    • @a1dwow
      @a1dwow 10 หลายเดือนก่อน +1

      много спорных моментов, но в комментарии их не укажешь все

    • @shurik_codes
      @shurik_codes  10 หลายเดือนก่อน +4

      Было бы желание)

  • @БогданЗараник
    @БогданЗараник 10 หลายเดือนก่อน +2

    Про Spring ACL вообще только на этом канале впервые увидел)

  • @baxiskerimzade2690
    @baxiskerimzade2690 10 หลายเดือนก่อน +4

    Где же найти столько свободного времени чтоб это всё посмотреть ?))

    • @shurik_codes
      @shurik_codes  10 หลายเดือนก่อน +2

      Ну, яж нашёл как-то время это всё записать)

    • @baxiskerimzade2690
      @baxiskerimzade2690 10 หลายเดือนก่อน +1

      @@shurik_codes спасибо большое
      Продолжайте
      Мы обязательно все посмотрим )

  • @АлександрВолков-я6й
    @АлександрВолков-я6й 9 หลายเดือนก่อน +2

    Спасибо за классный контент.
    Расскажи плиз что думаешь о Java modules ? Заметил что не используешь в этом тестовом проекте их. Что думаешь над возможностью скрыть часть пакетов с помощью Java modules ?

    • @shurik_codes
      @shurik_codes  9 หลายเดือนก่อน

      В целом удобный инструмент, хотя и не решающий всех задач при работе с пакетами, хочется чего-то большего. Вообще код этого проекта распределён таким образом, чтобы не возникло проблем при внедрении JPMS. Но это не продемонстрировано для экономии времени)

  • @aleksey2793
    @aleksey2793 2 หลายเดือนก่อน

    Верно ли я понял, что в реализации гексагональной архитектуры нужно под каждый метод класса порта писать отдельный интерфейс? Т.е. порт - это по сути один метод? Или же можно делать порт с несколькими методами?

    • @shurik_codes
      @shurik_codes  2 หลายเดือนก่อน +1

      Можно писать и несколько методов в одном порте, никто не запрещает. Я просто так трактую принцип разделения интерфейса.

  • @MrDartSaS
    @MrDartSaS 9 หลายเดือนก่อน +1

    уау, сочный контент, посмотрел в захлеб, по теме все делают по разному, увидел еще один вариант реализации))

  • @liliabekuzinaensosense8987
    @liliabekuzinaensosense8987 6 หลายเดือนก่อน +2

    Спасибище!

  • @psergeev77
    @psergeev77 6 หลายเดือนก่อน +1

    красиво!
    Спасибо, Александр

  • @e-researcher
    @e-researcher 2 หลายเดือนก่อน +1

    👍

  • @БогданЗараник
    @БогданЗараник 10 หลายเดือนก่อน +1

    А кто может подсказать, что за плагинчик под идею с @simple 0%? Это про конгитивную сложность кода что-то?

    • @shurik_codes
      @shurik_codes  10 หลายเดือนก่อน +1

      Code Complexity

  • @nickelakov6401
    @nickelakov6401 10 หลายเดือนก่อน +1

    🔥🔥🔥

  • @ИванПавлов-э6у
    @ИванПавлов-э6у 10 หลายเดือนก่อน +3

    Один глаз на нас, другой на Кавказ.
    А видос - класс)

    • @shurik_codes
      @shurik_codes  10 หลายเดือนก่อน +2

      Ох уже эти ваши шуточки про мои глаза...

  • @sergeyshcherbakov3653
    @sergeyshcherbakov3653 8 หลายเดือนก่อน

    сложна. восхищаюсь людьми, которые способны держать в голове такие схемы зависимостей (без иронии). но у меня вот вопрос практического свойства: как организовано версионирование модулей?
    некоторые зависимости встречаются по несколько раз в pom файлах модулей: customer-shared - 6 раз, catalogue-shared - 4 раза, customer-spi-catalogue - 4 раза, catalogue-api - 3 раза. И это у нас всего две бизнес-сущности - Customer и Catalogue, учебный пример!
    При изменении версии того или иного модуля, как мне кажется, довольно легко забыть внести соответстветствующие изменения во все остальные помники смежных модулей... Вы как с этим справляетесь?
    Если где-то ошибся или неправильно понял автора, заранее прошу прощения 😇

    • @shurik_codes
      @shurik_codes  8 หลายเดือนก่อน +1

      Обычно нет никаких проблем ручками обновлять версии, но вообще есть плагин versions, который позволяет упростить работу с версиями: www.mojohaus.org/versions/versions-maven-plugin/index.html

  • @elsalvadore7063
    @elsalvadore7063 7 หลายเดือนก่อน

    Отличное видео спасибо Вам большое!!! Тоже использую гексагональную архитектуру, но не разделяю по отдельным модулям порты ведь порты относятся к доменной модели? Может поправите если не так?

    • @shurik_codes
      @shurik_codes  7 หลายเดือนก่อน

      Ну, домен делится на ограниченные контексты, которые реализуются в виде модулей, а каждый порт относится к тому или иному ограниченному контексту.

  • @ЕвгенийАлексеев-о9э
    @ЕвгенийАлексеев-о9э 8 หลายเดือนก่อน

    Александр, большое спасибо за видео. Получается, можно обойтись без доменной сущности, которая в ядре была?

    • @shurik_codes
      @shurik_codes  8 หลายเดือนก่อน

      В операциях чтения - да

  • @dmaberlin
    @dmaberlin 8 หลายเดือนก่อน

    Code Complexity - какой профит от этого плагина?

    • @shurik_codes
      @shurik_codes  8 หลายเดือนก่อน +2

      Оценка когнитивной сложности, ставил ради интереса

  • @androidandroid1893
    @androidandroid1893 10 หลายเดือนก่อน +1

    большое спасибо автору

    • @androidandroid1893
      @androidandroid1893 9 หลายเดือนก่อน

      и все-таки какая то магия происходит с produces = "application/vnd.catalogue.product-category.v1+json (в моей редакции без selmag). Запрос GET localhost:8080/api/catalogue/product-categories/1 Accept: application/vnd.api+json (и в других редакциях) возвращает 406 Not Acceptable. Лог Could not find acceptable representation .

    • @androidandroid1893
      @androidandroid1893 9 หลายเดือนก่อน

      Не. Магии нет. Не было getter-ов в ProductCategoryPresentationV1

    • @shurik_codes
      @shurik_codes  9 หลายเดือนก่อน

      А так и должно быть, если метод возвращает "application/vnd.catalogue.product-category.v1+json", то единственное корректное значение заголовка Accept - именно "application/vnd.catalogue.product-category.v1+json"

  • @mikhailkarpovdev
    @mikhailkarpovdev 10 หลายเดือนก่อน +3

    Теория рассказано емко и исчерпывающе, но реализация... Сложить каждый класс/интерфейс в свой пакет и обернуть каждый пакет своим модулем, а потом жонглировать модулями - не означает, что вы реализовали гексагональную архитектуру.

    • @shurik_codes
      @shurik_codes  10 หลายเดือนก่อน

      Ну, "жонглирование модулями" вообще не про гексагональную архитектуру) Я не совсем правильно выбрал название, сделав акцент именно на гексагональной архитектуре.

    • @Алексейм-с7б
      @Алексейм-с7б 10 หลายเดือนก่อน

      Так расскажи