"Великаны не так просты, как кажется, великаны - они как лук. Многослойные!" (с) Шрек
@ulietaight Жыл бұрын
зашёл ради этого коммента
@arturhimself Жыл бұрын
«Ты запутался в своих слоях, лучок» 😂
@palkan2590 Жыл бұрын
@@arturhimself я ждал тебя
@alexpavlenko4719 Жыл бұрын
Воняют. Доводят до слёз.
@BestDron Жыл бұрын
Все обьесняют это архитектуру очень сложно. Я понимаю её так. 1: Есть слой Core- в нём есть слой Domen и Application 2: в слой application адаптеры для внешних сервисов бд. и ui и ТД. В нём же находиться бизнес логика приложения он зависит только от слоя Domen. 3: Domen слой самый независимый он не чего незнает о других слоях. Вся связь между предметной областью и другими частями приложения в слои Application он знает о бо всех слоях, но лучше через интерфейсы. Главный принцип слой домена независимый.
@falsetrue7910 Жыл бұрын
Ждал продолжения серии видео по архитектуре, очень полезно! Спасибо Жду чистую архитектуру, гексоганальную, реактивную
@armenchik_dzhan Жыл бұрын
@UlbiTV Отличный ролик, очень хорошо описал суть DI и то, как изолироваться от базы данных и прочей инфраструктуры 👍. Единственное отмечу один анти-паттерн, который ты используешь. Это анемичная доменная модель. По-хорошему в больших сложных проектах Логику нужно не просто класть в service. А распределять между 3-мя объектами: service, entity, value object. И, как правило, чем правее, тем лучше. Потому что если всё писать в сервисе, один метод может разрастись на 100 строк и вместо читаемой бизнес логики ты получишь так называемые transaction scripts. Transaction scripts и анемичные модели могут нормально работать в простых кейсах, без большого количества логики. Но если у вас большой сложный домен, это становиться гораздо труднее читать, поддерживать, понимать и т.д. Доменная модель - это не описание данных, это в первую очередь описание поведения тех или иных сущностей, а данные второстепенные и по возможности инкапсулируются, а объекты этой доменной модели являются не "глупыми", а "умными", они содержат методы и value object-ы которые тоже содержат свои методы. Для саморазвития в этом направлении рекомендую книжку: Implementing Domain-Driven Design А также статьи: fowler: - martinfowler.com/bliki/AnemicDomainModel.html - martinfowler.com/bliki/ValueObject.html enterprise craftsmanship: - enterprisecraftsmanship.com/posts/domain-vs-application-services/ - enterprisecraftsmanship.com/posts/nesting-value-object-inside-entity/ - И много других интересный статей - enterprisecraftsmanship.com/posts Не для того, наверное, ООП было придумано, чтобы императивно писать всю логику в сервисах =)))
@AmirLatypov9 ай бұрын
И тем не менее, от ООП продолжаем уходить ;). Чтобы был не один большой сервис, можно сделать несколько. Передавать «глупые» структуры данных намного легче и надежнее, чем умные модели. Во всяком случае долгосрочно. Поэтому Unix way подход - функция принимает на вход данные, а не классы со своим внутренним миром.
@Вячеслав-ж1т9ь Жыл бұрын
Кстати отличное объяснение инверсии зависимостей и внедрения зависимостей. Почти в любой литературе примеры настолько абстрактные что пока на практике не столкнешься не поймешь. Спасибо за видео! Просто лучший!
@IlsurGabdulkhakov-w8f4 ай бұрын
Спасибо большое, после многих лет работы погружаюсь в тему архитектуры и открываю для себя новый, неизведанный но невероятно интересный мир
@magister-iy7rq Жыл бұрын
было бы прекрасно посмотреть реализацию на разных архитектурах, т.е. не маленькие условные примерчики, а конкретную реализацию
@ФерзьБлатной-г4н Жыл бұрын
есть в курсе у улбика
@pesilwoof9 ай бұрын
Смотрю 3й ролик, ты умеешь хорошо, чётко, без воды всё объяснить. Спасибо за работу!
@ded-insult Жыл бұрын
Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?
@АлинаСусликова Жыл бұрын
Очень наглядно предоставлена информация!!! спасибо, Тимур, за ваш труд! Визуал максимально понятный и эстетичный!
@СтепашкаСокович4 ай бұрын
скорее всего, это одно из лучших русскоязычных видео по архитектуре
@ЭзамАппаева Жыл бұрын
Ура! Мы ждали. С возвращением🎉 Спасибо за труды!
@Akhmad_Dag3 ай бұрын
Пишу на Python, но все было четко и ясно. Спасибо!
@gansgarnett4516 Жыл бұрын
Лучший! Учу C++ но периодически смотрю твой канал для расширения кругозора, ведь те вещи о которых ты говоришь также хорошо ложатся и на другие ЯПшки. Обнял, поднял)
@valbv Жыл бұрын
Спасибо за ролик! Во время просмотра была мысль, что визуал очень приятный. Донесение сути информации без воды тоже радует "Чистой архитектура" Роберта Мартина - замечательная книга
@MarkA12 Жыл бұрын
С такой структурой как начал работать, сразу стал кайфовать
@haykyolyan2511 Жыл бұрын
Спасибо автору, комментарий в поддержку
@bobbybob628 Жыл бұрын
сначала лайк не глядя, потом смотрим спасибо, Тимур) пошел смотреть
Спасибо, полезное видео. Хорошо изложено. Можно было бы добавить примеров кроме интернет магазина, но все итак предельно структурировано.
@krimax0 Жыл бұрын
Спасибо большое за разжеванный контент! Я закрыл практически все свои пробелы в знаниях backend. Очень редко пишу комментарии, но хотел тебя под бодрить тебя своим комментарием. Я очень расстроен что подобные ролики получают мало просмотров. Удачи!
@Копилкапозитива-щ1ъ Жыл бұрын
все красиво на бумаге - но забыли про овраги )) надо бы практический курс применения этого всего - уверен там будет куча подводных камней, особенно связка одной доменной модели с другой
@romanbush51645 ай бұрын
Спасибо наконец-то приходит понимание DDD архитектуры, так вот что это стандартные сервисы и репозитории, слоистая архитектура.
@artyomsultanov5204 Жыл бұрын
Тимур, большое спасибо! Отлично объяснил!
@vakhr Жыл бұрын
Круто, спасибо большое. Очень детально и интересно
@maksimkraev2237 Жыл бұрын
Спасибо большое! Как всегда, очень понятное объяснение))
@shittywizzard5727 Жыл бұрын
Отличный видос, ждем новых. Обнял-приподнял :D
@some_body_qtyeeuy Жыл бұрын
Супер! Очень полезный ролик! Спасибо
@НикитаТорбенко Жыл бұрын
Братан, поздравляю с защитой диплома, спасибо за контент, ты топ
@helenit4365 Жыл бұрын
Тима, с защитой диплома магистратуры МГУ и получением премии "Прорыв года" в айти!!!!!
@adelinaromanova8353 Жыл бұрын
Ого!!! Поздравляю!!!
@vitjaz_7591 Жыл бұрын
написанное в видео очень сильно напоминает нест. очень годное видео, спасибо за объяснения!
@ivank.5319 Жыл бұрын
Спасибо, как бы это все ещё понять и собрать.
@НиколайВербило3 ай бұрын
Подобное архитектурное решение очень хорошо, и автор выложил материал лаконично и по факту. Но я бы выносил бизнес-логику из сервисов в другие классы и по очень простой причине: бизнес логика не должна ни от чего зависеть. В случае, если она лежит в сервисе, который зависит от репозитория, могут возникнуть сайд-эффекты, а если использовать сервис, как место соединения бизнес-логики и репозитория, то архитектура из ролика превращается в отличнейшую. (Класс с бизнес-логикой не должен ни от чего зависеть. Он должен получить данные, обработать их и отдать)
@natalyaiv3414 Жыл бұрын
Спасибо! ❤👍 Поздравляю с защитой!
@irinafadeeva13878 ай бұрын
Спасибо за ролик! Все четко и понятно объяснили)
@Андрій_Ляшенко Жыл бұрын
Все по полочкам, супер!🎉 Спасибо
@ВикторОрлянский-я5ц Жыл бұрын
Тимур, спасибо за ролик, как раз во время. Качество контента и обновленный визуал радует!
@СтасМилосердов-и6ж Жыл бұрын
Большое спасибо за контент, очень грамотно объясняешь! Смотрел твои видео по vue, очень сильно помогли, особенно трехчасовое Очень бы хотел еще один урок с vue 3, nuxt и typescript Думаю зайдет шикарно
@nik_markio Жыл бұрын
Крутой видос, большое спасибо)
@Sergey.Aleksandrovich.P-37rus Жыл бұрын
Просмотрел до конца...подписался,+лайк
@НиколайСеливанов-и2в Жыл бұрын
Привет. С возвращением. С защитой диплома. 🎉
@АртемРащепкин-ф4н Жыл бұрын
Все четко и доступно! Спасибо!😊
@cheshiressmile1404 Жыл бұрын
интересно, но не хватает ещё большей конткретики. Было бы круто небольшое приложение запилить по всем традициям луковой архитектуры
@kennyotsu4357 Жыл бұрын
Плюсы: звучит вкусно Минусы: хочется плакоть….
@ИльясЖунусов-э6ч Жыл бұрын
на самом деле на практике это в разы легче понять )
@yundon8182 Жыл бұрын
Просто Тимур любит утрировать и пугать своим тоном голоса, перечисляя много всякого
@xyzw7777 ай бұрын
11:55 неа😅, в реальности бизнес модель меняется каждый день, а вот инструментарий почти константа
@alpenapple Жыл бұрын
Спасибо тебе!
@ValentinProtasevich Жыл бұрын
Огромное спасибо, очень полезное видео)
@assetdev1859 Жыл бұрын
лучший тимур!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@АльбертАлександров-ч9ж Жыл бұрын
Очень круто! Спасибо большое за видео!
@ИльясБикенов Жыл бұрын
Спасибо большое за контент!
@NazarKovalchuk-i6t Жыл бұрын
Раскрыл луковицу по слоям КРУТО)
@darkside2436 Жыл бұрын
Монтаж огонь 🔥
@gooseman557811 ай бұрын
8:22 как создание/удаление чего-либо в системе может НЕ зависеть от БД? и КАК взаимодействие с БД может быть там же, где UI/API/Обработчики/Контроллеры ??
@extense1337 Жыл бұрын
Отличный видос, молодец, круто вышло
@ilyapro2815 Жыл бұрын
Тимур, спасибо за такой хороший ролик! И, особенно, за примеры и пояснения. Этот ролик я бы рекомендовал сразу после ознакомления c SOLID принципами, чтобы S и D закрепить.
@dima__rx5fw3rm1n Жыл бұрын
Я смотрел курс архитектуры на джаве, у них там какой-то персистенс слой часто фигурирует. Что бы он мог делать?
@fgood574 Жыл бұрын
Автор супер объясняешь, но ещё будет плюсом если видео будут заточены под телефон) иногда с телефона смотрю, и надписи плохо видно. Вот как пример ютуберы Владилен итд даже через телефон их удобно смотреть, не знаю как они настроили, но думаю можешь взять на заметку)
@abraham33454 күн бұрын
Может проще пересесть на комп чем заставлять автора подстраивать логика как для ПК так и для тлф? Такие видео конспектируются, а не просто смотрятся, с телефона точно этого не сделать
@feliche-demiannetliukh37035 ай бұрын
Класный ролик, смотрел ролик по SOLID давно, но только наконец понял DIP. + начал понямимать dependency injection патерн не в призме фреймворка, а больше как паттерн P.S. Класный неон стиль кстати, глаза радует)
@iforcewmaster3049 Жыл бұрын
Очень круто и по-взрослому выглядит эта архитектура. Хотелось бы видос, типа "создание приложения с 0" на её основе
@роматарасов-о8л Жыл бұрын
очень крутой видос СПАСИБО!
@eldiiarsaparbekov5397 Жыл бұрын
Как всегда огонь🤯🤯
@brearey Жыл бұрын
Спасибо. Вопрос: можно ли без type script на java script имплементировать такую архитектуру?
@tetraf0ur Жыл бұрын
да
@РоманДиохтиовский Жыл бұрын
Хотелось бы увидеть пример такой слоистости на Реакт или Вью
@ell1ar Жыл бұрын
Луковая архитектура под бэкенд. Под фронтенд всякие FSD, модульные простые архитектуры
@bimal163 Жыл бұрын
Ты вернулся !!!)
@Akonitx Жыл бұрын
Очень круто описал. Было бы круто видос, прям фулл гайд, как структурировать папки/файлы в проекте и главное как правильно их наименовать. Либо скинь пж, где можно об этом подробнее почитать.
@-dubok- Жыл бұрын
Лучшая архитектура серверного приложения, как по мне - это EDA (Event Driven Architecture), то есть основанная на событиях. Потому что сервер лучше всего работает в асинхронном событийном режиме, в режиме реагирования на события. И особенно хорошо, если построено всё по DDD.
@xyzw7777 ай бұрын
в банке нужно было перегнать кучу объектов, посчитали миллион шт/час через асинхронное апи, миллиард шт/час из одной бд в другую... как думаете что руководство банка подумало о EDA\DDD и т.п. в этот момент ;)
@-dubok-7 ай бұрын
@@xyzw777 пф, а где вы видели приложение, которое напрямую гоняет данные между БД? Сравнение вообще не корректное.
@xyzw7777 ай бұрын
@@-dubok- erp\pdm и т.п. гонять данные между бд это etl, а обмен между разнородными источниками свойство нормальной бд
@-dubok-7 ай бұрын
@@xyzw777 для всего свои инструменты. Без EDA/DDD вы не сделаете нормальную распределённую систему, у вас всегда будет монолит со всеми его недостатки в сложной системе (спагетти, связность). А такая вещь как перегонка данных между базами - это не относится к общей архитектуре приложения, это может быть всего лишь частью сложной системы, которая построена по EDA, но внутри каждого модуля, конечно же, монолит. EDA - это клей между независимыми монолитными модулями. Без него у вас будет монолит из монолитов. А с ним у вас распределённая система, состоящая из монолитных модулей.
@xyzw7777 ай бұрын
@@-dubok- производительная система всегда монолит. никто не мешает десяткам бд обмениваться инфой без костылей "внешнего" чужеродного кода, вопрос лишь для чего: горизонтальное масштабирование или отделение своей части от частей другого программиста. например на sql view с тригерами mssql я как-то написал учетную систему у которой не было ни одной строки "внешнего" кода, т.к. клиент был ms access где формочки сделаны мышью... как видите ни то что луковой архитектуры не понадобилось но и вообще фронт\ui разработчиков как таковых. _"спагетти, связность"_ вряд-ли вы про goto, только вы знаете что имели в виду
@SeydametBilyalov Жыл бұрын
Спасибо за видео. Но есть ли пример, пусть и не большого, но рабочего проекта с использованием такого подхода? Google много выдает такого. Но хотелось бы услышать от тебя: «вот репозиторий на GitHub с проектом в котором хорошо показано принципы и подходы о которых я говорил»
@vtsel-lp4jv Жыл бұрын
Очень хотелось бы подробный(как всегда) ролик по FSD🙌
@ilyapro2815 Жыл бұрын
про FSD рассказывалось в рамках другого видео из этого же плейлиста.
@moranyt82998 ай бұрын
Так, походу я понял, надеюсь меня теперь возьмут на джуна с такими знаниями =)
@Andrey_Ks1111 ай бұрын
Немного запутался. Правильно ли я рассуждаю. Получается что в domain model мы создаем интерфейсы моделей. В repository пишем интерфейсы для бизнес логики. А в services мы реализуем эту логику. А на слое infrastructure мы уже используем наши сервисы? Или же реализуем новый функционал, например связь с бд, на основе тех интерфейсов, что находятся в ядре. Верно рассуждаю?
@meteysh8 ай бұрын
Очень круто! 🎉
@МаксимМухарёв-п8г Жыл бұрын
Очень полезно, спасибо!
@igor_cojocaru Жыл бұрын
Спасибо, очень интересно. Как бы хотелось пример использования этой архитектуры во фронте... Не совсем понимаю где в этом случае будет логика обработки ошибок в каком-нибудь формуляре.
@vendjin Жыл бұрын
Извини меня за вопрос не по теме, но какую версию вебшторма ты используешь? Тк на последней версии 2022 и 2023.1 при работе с MUI дико фризит
@hhullen9 ай бұрын
Можно не обьяснить один момент пожалуйста. В контроллере создается DTO объект и передается там в сервис, например, чтобы записать в БД. Там, для записи в БД, эти данные конвертируются в другие структуры из db/entities. Так вот, для чего тогда вообще структуры из core/entities?
@i_ve_given_up Жыл бұрын
Интересно узнать мнение: важно ли согласовывать архитектуру бэкенда и фронтенда? Есть ли какие-то более удачные варианты использования архитектур фронта и бэка, которые дают приемущество? Например, слоистая на бэке + микрофронтенд = ...
@Fartek2 Жыл бұрын
это два независимых приложения, они никак не должны быть связаны никакой архитектурой
@BestDron Жыл бұрын
Swager в помощь, и все проблемы решаются. Архитектура Бека зависит от безнес задачи. Иногда нахер не нужны все эти архитектуры и люди натягивают сову на глобус.
@gingun957 ай бұрын
Для новичков в жтой теме ок видео. Но если копать глубже, то стоило хотя бы поговоить про use case на слое сервисов и анемичные модели и их проблемы на слое домена. Слой сервисов тоже описан не оч хорошо как и слой домена. Опять таки обычно слоистая арзитектура за ручку с ддд идёт в паре, а это тоде тема нн простая. Крч как по сне наверное стоило сделать серию роликов, которая почтепенно углублялась бы, ечли всё-таки стремиться к более полной картине. Если такого стремоения у автора нет, то и так как есиь сойдёт.
@gabblz480 Жыл бұрын
Примерно архитектура Angular, как я понял
@andrewskripko2311 Жыл бұрын
Неплохое видео, но. 1) то что вы называете слоями - я бы назвал функциональным назначением. Ибо получается что 3 "внутренних слоя" и создают ядро домена. А если модель у вас лежит ниже всех - то она не может не от кого зависеть и получится как минимум анемичной (что не всегда удобно, но надёжнее). Обычно выделяют Data (откуда и куда данные берутся) / Domain (бл) / View(как это попадёт в глаза юзеру - форматирование, локаль и тд) layer. (можно ещё выделить application / render layer) 2) архитектура = правила устройства системы. А отражаться они могут в названиях файлов, папок, классов, методов и тд. Так и в том, кто от кого может зависеть, а кто нет. Ну и какой код в какой функциональный файл (модель, контроллер, кейс и тд) ложить. 3) я бы сказал что универсальные архитектуры существуют. Только для большинства проектов это будет оверинжиниринг. 4) лучше, как по мне, разбивать папки так = слой > сущность > функционал. Из сущностей можно делать удобные модули для DI. 5) не хватает упомянания DDD как связующего всех этих архитектурных стилей и подходов
@ПётрПетров-д2ч4х Жыл бұрын
Приятное видео!
@yashkevich81646 ай бұрын
Очень хорошее видео, автор крут овсе объясняет. Я только не понял зачем перегонять ответ из БД в другую ДТО в Кор слой? Если мы используем ОРМ мы и так оттуда достанем полноценную Энтити. И еще вопрос. Вот как говорит автор мы делаем несколько интерфейсов Репозиториев и имплементим их в сервисы, что бы потом можно было лекго подменить реализацию, будь то из файла или из БД. А вот если нам надо будет Юзера достать с другого Апи например, как это правильно сделать?? Предположу что делаем некий Провайдер интерфейс и инжектим его в новый Репозиторий ??? и уже на сонове этого провайдера реализуем методы репозитория??? А если в дальнейшем будет несколько версий Апи, то нам уже придется делать провайдер интерфейс и на его основе реализовывать разные провайдеры и инжектить их в репозитории???
@seregaant685 ай бұрын
Блин, не понял одного, а как это связать с фреймворками (React, Django, ...)?
@AntonyMadaliev Жыл бұрын
спасибо за контент!
@Vedar. Жыл бұрын
🔥🔥🔥
@seryozhamangushev9638 Жыл бұрын
Давно ждал, но ты не делал. Пришлось покупать лекцию по ней. Очень крутая тема. Однако в одном видео о ней сложно рассказать, там много подводных камней и кстати первая слойка, Dto называют. Затем уже идёт Сущность например модель пользователя, только потом контроллер и репозиторий. Короче это довольно тяжёлая часть архитектуры и в одном видео показать сложно, но у тебя получилось хотя бы похожее что - то.
@gizmolo4 Жыл бұрын
IoC контейнер, все-таки ) предыдущие видео очень хорошо все было, тут немного сумбурно ( ну и всем посмотревшим - все это очень сложно осознать без практики, и как сказал Тимур - не сущестует архитектуры, прибитой гвоздями )
@kronohcr2436 Жыл бұрын
С чего начать изучать программирование: с PHP или c++/c#?
@ya_araik Жыл бұрын
Был бы очень благодарен за объяснение от тебя технологии grpc
@IlyaKuznetsov1983 Жыл бұрын
Молоток!
@shalidor1619 Жыл бұрын
Не знаю, почему все решили, что меняется именно верхний слой. На практике меняется всегда именно бизнес логика, а конкретно домейн (от чего все и зависит в этой архитектуре), а как раз орм бд и фреймворк не меняются. Такое ощущение, что вся эта слоеная архитектура просто борется с соломенным чучелом.
@ivan_tyurin10 ай бұрын
Эта архитектура больше направлена не на переделывание одного и того же, но с другими технологиями, а на расширение или разделение существующего приложения
@kozii-d Жыл бұрын
Вопрос касаемный DTO. Если мы пишем приложение на TS, то зачем эти DTO определены ввиде классов? Разве мы не можешь для описание этих данных использовать те же интерфейсы?
@dianadvoryak Жыл бұрын
круто !
@devKenny11 ай бұрын
Красавчик вообще
@HEX_CAT Жыл бұрын
❤❤❤
@Списокпокупок9 ай бұрын
Делай еще паузы после предложений, а то воспринимается все как одно и как то можно еще обозначать переход к следующему абзацу/главе, чтобы зритель мог разделять информацию
@alerya100 Жыл бұрын
доволі непогано коли я починав вивчаиті цибулькову архітектуру.
@Ivan-qp8yd Жыл бұрын
Мне интересно как часто разработчики меняют орм или фреймворк или хотя бы базу данных на больших проектах?
@gizmolo4 Жыл бұрын
не часто. Но вот приделывать какой-нибудь кэш - вполне себе частая история, и когда у тебя хранение отделено от логики, это все делается буквально одним движением руки
@AlexanderAlexander-z1d Жыл бұрын
Привет! Тимур! В каком редакторе делаешь такие видео? PS: В старых видео мелковат шрифт бывает, в этом показался крупноват.
@VanyaMate Жыл бұрын
Вопрос связан с DI-контейнером, думаю. А как объяснить ему, какую реализацию нужно подставить, если мы создали несколько? Если вручную указывать, то тут всё понятно, но а если используем DI-контейнер?
@norskiy9765 Жыл бұрын
Здравствуйте! Какие курсы по javascript с нуля посоветуете на ютубе?