Михаил Непряхин: Максим привет как видно Слышно плюсики пожалуйста, Поставьте
Михаил Непряхин: Сейчас вначале тоже Тормозит или У вас что-то
Михаил Непряхин: да это конечно Странное поведение
Михаил Непряхин: нравится нормально а потом типа нормально достановится конечно прикол
Михаил Непряхин: так значит сегодня сегодня Поговорим Об архитектуре приложение да
Михаил Непряхин: так а Кстати, да О продомашку, я видел.
Михаил Непряхин: Даже кто-то сделал даже кто сделал домашку,
Михаил Непряхин: та один Человек где ничего я сделал сервис Ну, прикольный даже работать
Михаил Непряхин: Ну, это про температуру про Погоду,
Михаил Непряхин: тут, короче Задается город тут, сочи Сейчас не пустим Казань да хочу работать вот в общем
Михаил Непряхин: рекомендую все равно эту бумажку сделать что она довольно полезная
Михаил Непряхин: в целом для понимания. Как оно работает
Михаил Непряхин: так про архитектуру с чего начать
Михаил Непряхин: ну смотрите значит мы можем ничего нам не мешает в Принципе написать проект, в одной файере
Михаил Непряхин: ну ты вот очень длинный файв да но тем не менее
Михаил Непряхин: м Мы бы Там его разбили на какие То части, значит вот у нас была бы какая То часть файла ну Допустим он Там был бы
Михаил Непряхин: две тысячи строк вот но какая то бы часть была посвящена инициативы всего Что У нас Есть
Михаил Непряхин: а видите ли У нас в отличие от Скриптовых языков а у Гоу есть стейт есть рантайм
Михаил Непряхин: Поэтому если вы Скриптовых языках ничего не можете сохранить вы Вынуждены обязательно допустим кэш для коша Использовать радис
Михаил Непряхин: то мы в голову можем
Михаил Непряхин: просто все в фронтаме хранить то Есть создать свой маленький рейс и он будет у нас с тем конфликтом который нам нужен
Михаил Непряхин: ну потому, Что для Родителей еще ведь нужен жестевой поход. То Здесь у нас сеть чтобы не восходить а когда У нас
Михаил Непряхин: свой собственный радис внутри приложения У нас Сети Нет работает быстрее
Михаил Непряхин: вот ну понятно дело что. С базой данных если У нас база данных какая нибудь а позгрыз то Что тут Что там Что на скриптовом языке Что в Голову. Будет
Михаил Непряхин: сетевой подход. В эту базу дан чтобы что то сделать
Михаил Непряхин: Так вот чтобы создать вот этот вот а изначальный какой-то стоит
Михаил Непряхин: ну то есть привести в готовность
Михаил Непряхин: Аа разные Структуры для того чтобы они не Могли работать.
Михаил Непряхин: А и какая то существенная часть
Михаил Непряхин: в нашем одном Файле занимал в Этот Год Я и да Им
Михаил Непряхин: У нас был бы Была бы секция посвященная
Михаил Непряхин: аа хтп серверу ну Мы Пока рассматриваем
Михаил Непряхин: снова в основном Мы имеем дело
Михаил Непряхин: схват Это по сервером Поэтому вот Мы считаем Что какая то часть, посвящена Дтп Серверу ну какая то часть, посвящена
Михаил Непряхин: о базе восхождения в базу, данных. В польше с Номера
Михаил Непряхин: опять, же у нас основная база это поиск.
Михаил Непряхин: Стекки и какая То бы, часть кода отвечала ну, за самую логику то есть что вообще происходит
Михаил Непряхин: а Можно ли ну, то есть как бы э
Михаил Непряхин: вот это вот выделение части с логикой
Михаил Непряхин: Она не обязательна на самом деле
Михаил Непряхин: то есть мы можем вот прямо, вот хтп роучки например, Иметь. Часть Этой логики и оно все будет работать
Михаил Непряхин: вот Это опять Же для удобства То есть Как бы выносится в отдельную Секцию для того чтобы
Михаил Непряхин: ну Не путать ух с котлетами ну Это же как Бы
Михаил Непряхин: а в чем проблема? У нас Кода очень много Их Прям Реально много
Михаил Непряхин: и чтобы как-то какие-то границы провести
Михаил Непряхин: а Начинается вот это вот Придумывание по Какому, Признаку разделить как Их разделить
Михаил Непряхин: а как сделать так чтобы изменения
Михаил Непряхин: небольшие, Не касались. Переписывания, всего проекта чтобы это легко Делать было и вот Поэтому как бы архитектура и появляется для того чтобы решить эту проблему ну во Первых да какую проблему решила архитектура
Михаил Непряхин: значит это Борьба с сложностью значит Мы хотим, Бороться со сложностью
Михаил Непряхин: Ну на самом, деле дождь Не То что там прям
Михаил Непряхин: несколько пунктов, один Пункт главная проблема которую решает архитектура борьба со сложностью
Михаил Непряхин: и дальше уже там состоит из-под пункта значит как именно решается борьба со сложностью Там от Разделения
Михаил Непряхин: но Куски Там на какие-то логические Куски ода катагруппировка Это выделение границ.
Михаил Непряхин: Какие-то границы где вот они проходят для того чтобы
Михаил Непряхин: отделить какие то. То. Есть сделать какие то. Модули
Михаил Непряхин: э что в микросервисах у нас вот когда на микросервис и бьем на наше приложение
Михаил Непряхин: что когда мода была на монолиты
Михаил Непряхин: просто вот ми между микросервисами здесь появилась сеть а
Михаил Непряхин: то, есть как бы есть какие-то модули
Михаил Непряхин: модули только когда это микросервис это у нас здесь вот сеть между ними появляется а если у нас монолит То Этой сети Нет То Есть потому что все это в рамках одного ронтайма происходит и Мы экономим на сети
Михаил Непряхин: вот и Поэтому вот это вот
Михаил Непряхин: Там, типа лет семь назад когда микросервисы шагали По планете семи Большими Шагами
Михаил Непряхин: они Преподносились как решение всех. Проблем решения всех. Бед
Михаил Непряхин: а на самом деле как бы часть проблем конечно главная решимость но и Появились другие проблемы например когда у вас самая большая проблема,
Михаил Непряхин: аа когда у вас есть микросервисы
Михаил Непряхин: точнее Давайте так, как У вас один сервис и одна база данных
Михаил Непряхин: когда У вас много сервисов У Каждого сервиса своя база данных
Михаил Непряхин: то есть как бы, принято так вот У вас сервис и рядышком с ним живет своя собственная база данных
Михаил Непряхин: и идея в том, что.
Михаил Непряхин: Чужой сервис в чужую базы данных не ходит вот они только в свою базу, данных ходят
Михаил Непряхин: а если, чужой сервис вроде ходит в вашу базу, данных это антипатран антипатия называется шеррот, дето бэйс
Михаил Непряхин: Поэтому у Каждого микросервиса своя база данных
Михаил Непряхин: им монолита Была Раньше, своя база данных
Михаил Непряхин: Но только когда У вас Были транзакции. В рамках Монолита
Михаил Непряхин: То У вас вот Там транзакция начиналась а Там Беги Дискомит и все было хорошо
Михаил Непряхин: с Транзактом Проблем, Не было а когда у вас вот много микросервисов то у вас появляются распределенные транзакции
Михаил Непряхин: а ну то Есть вот как бы Поэтому
Михаил Непряхин: вот это проделение Еще если, у вас вы понимаете что у вас есть редакции между микросервисами
Михаил Непряхин: то не надо их Делать отдельными сервисами сделать один очень очень много сэкономить на головнике с распределенными транзакциями Нет
Михаил Непряхин: То есть вот Это вот критерий как правильно поделить
Михаил Непряхин: он ну как бы он Не имеет какой-то четкой формулировки Не имеет понятного а определение и и
Михаил Непряхин: и как и все в Принципе в архитектуре
Михаил Непряхин: то есть если, вы ну понятно что у нас будет какой-то шабон да мы будем, смотреть Как примерно делать
Михаил Непряхин: как как мы будем, делать архитектуру ну вот Мы по этому шаблону будем работать то есть у нас будут отдельные вот свои свои содадаторами контролерами и доменом для того и с кейсами вот мы в Этой модели будем работать.
Михаил Непряхин: Он но цель на самом деле донести принципы
Михаил Непряхин: и стараться постоянно отвечать на вопрос зачем то есть как будут думать. Размышлять
Михаил Непряхин: а Что Мы Теряем в Этом подходе Что Мы выигрываем
Михаил Непряхин: и вот Так вот Там, примерно золотая середина где-то появится
Михаил Непряхин: и вы все равно будете постоянно. Экспериментировать То есть У вас все равно сервисы будут отличаться один От другого
Михаил Непряхин: а конечно если Вы Работаете в команде если Вы темлит то в ваших. Интересах
Михаил Непряхин: что вот У вас Есть Допустим три сервиса
Михаил Непряхин: команде чтобы Они все Были Одинаковыми.
Михаил Непряхин: Потому что если. Они будут разными У вас люди в подчинении и они начинают специализироваться на своих каких-то Кусках и они ну им трудно будет переключаться между ними вот но Разработчики если, им Не фиксировать какую То конкретную Там структуру папок
Михаил Непряхин: они все равно постоянно экспериментируют постоянно Ищут какие-то более удачные варианты То Есть тут так попробовали Там сяк и очень все равно очень сильно зависит зависит от Домены То есть вот
Михаил Непряхин: У вас есть какой-то Предыдущий опыт да То есть вот если вы бендер например То У вас там Сто процентов есть какое-то свое видение Но Вот вы до этого работали на каком-то фореморке
Михаил Непряхин: с каким-то языком и У вас Примерно
Михаил Непряхин: есть видение как вы Вот раскладываете Кот по папкам
Михаил Непряхин: ну понятно что Если, вы с фронта вам чуть сложнее ну да вот как бы смотрите на текущую вот структуру как Я буду показывать
Михаил Непряхин: Вот Но в целом здесь Нет каких То дом и постоянно. Идет. Процесс поиска Что еще Можно
Михаил Непряхин: Подкинуть как еще Можно разделить как, Еще Можно упростить жизнь
Михаил Непряхин: и но в целом вот этот вот Ммм вот этот вариант структуры, он такой ну близко к эталонному, То Есть вот этот вот То если вы будете по нему делать Проект
Михаил Непряхин: ну это будет в Принципе вот плюс-минус как и в любом Другом Языке какие-то сложившиеся практики бенджамин я Имею в виду вот но вообще чем новея язык.
Михаил Непряхин: Типа там кудрин либо ну Раз, там как бы Своя Философия Там какой-то сложившаяся. Нет
Михаил Непряхин: Архитектуры тем ну. Чем на язык тем больше как, бы Прогрессивнее вот эта. Вот структура и больше
Михаил Непряхин: Она заточена на То чтобы да была Гибкость То Есть
Михаил Непряхин: в чем проблема да когда Мы будем писать все в одном файле
Михаил Непряхин: Мы захотим делать какие то изменения
Михаил Непряхин: Ну, то есть про Будет проходить Время мы будем дописывать какую то Логику и и можно Это выразить графиком
Михаил Непряхин: значит вот у нас ээ здесь время
Михаил Непряхин: по Этой шкале а по Этой шкале ну как, бы время проходит а по Этой шкале сложность
Михаил Непряхин: сложность ну сложность это в скобочках как долгие доработки то есть это тоже время только это время как бы жизненного цикла проекта а это время
Михаил Непряхин: на Доработку по Стечению времени ну Будем говорить Что это сложность
Михаил Непряхин: и Вот вначале Мы очень за короткое Время
Михаил Непряхин: Можем Быстро Делать какие то изменения но потом с течением временем сложность растет очень сильно
Михаил Непряхин: и вот по сути наша задача
Михаил Непряхин: вот Эту кривую ну вот из этого состояния сделать чтобы Она была ну Примерно вот Так вот
Михаил Непряхин: Или Там Пусть и вначале Мы долго Будем Делать доработки но Потом чтобы вот Она росла очень медленно
Михаил Непряхин: короче если растет быстро, то типа где то уже вот здесь
Михаил Непряхин: э Мы все Проект Мы обязаны переписать Не то что обязаны его рациональнее переписать заново потому что его поддерживать становиться, невозможно вот а и когда у вас Хорошая архитектура то в Принципе вы какую-то верха в начале
Михаил Непряхин: То Есть У вас будет чуть дольше все делается потому Что Там какие-то Бойлерполеит какие-то шабовые нарушения, ну в Принципе вот эта кривая она такая как бы сложность изменения проекта она со временем не Будет сильно меняться
Михаил Непряхин: ну это как бы так условно если вы один будете работать на проекте если к вам кто нибудь придет то он все равно там все сломает и у вас там все запутается и
Михаил Непряхин: здесь к сожалению. Никакие кудрин Не помогают потому Что как бы да Есть Окей Практика у интервью Но она такая как бы это
Михаил Непряхин: Хоть что нибудь лучше чем ничего Но Если коллега Написал полную фигню как правило вы Вам ничего не остается кроме как там какие То косметические правки ввести и принять это, дело
Михаил Непряхин: вот аа Поэтому в наших интересах
Михаил Непряхин: сделать архитектуру таким образом чтобы были понятные правила потому что если правил. Нет или они Какие То Сложные
Михаил Непряхин: То Вы Не сможете интервью, объяснить что он сделал Не так
Михаил Непряхин: ну и вообще если Человек видит какие-то Вот как Вот до этого было Написано там Модле То Он Не дурак Он все равно как бы видит считывает Систему и понимает как вносить изменения в эту систему Если система Есть
Михаил Непряхин: Поэтому важно. Чтобы эта система правил. Была Несложная логичная
Михаил Непряхин: и Не Противоречия каким-то Там, Внутренним чувствам Прекрасного вот этого человека который будет делать доработки вот Поэтому он
Михаил Непряхин: Э когда мы говорим об архитектуре да как и Подытоже отчего мы добиваемся мы Хотим, чтобы были. Правила
Михаил Непряхин: по которым пишется пишутся части. Проекта мы Хотим, чтобы эти правила были. Простые как можно проще уж сложные правила не будут прерываться, вот проблема дидди вот есть такая практика дереди
Михаил Непряхин: почему не прерывается слишком сложно слишком сложно слишком много правил написали две книги ну коммун то есть Как бы что-то сложное оно Обречено на смерть ну илины путаницы да то есть Как бы все понимают дядя по-своему вот и
Михаил Непряхин: значит с другой стороны архитектура Должна Позволять легко Делать доработки. Потом чтобы это Было Недорого
Михаил Непряхин: ну а какая бы ни была хорошая архитектура если у вас Проект, динамично развивается
Михаил Непряхин: то ну все равно когда то настанет момент когда его надо будет переписать
Михаил Непряхин: неминуемо как бы сто процентов? Когда вы Пишите проект и понимаете что вы будете долго на нем работать ну в Этой Компании например да То просто как бы фиксируйте У себя в голове это будет все Переписано
Михаил Непряхин: если это будет Активно развиваться То это будет Переписан через полгода если это будет ну есть провер есть сервисы Которые совсем слабо развиваются ну значит бот переписано через Два года через три года ну как То Так
Михаил Непряхин: но если что То активное Пишется неминуемо будет Переписано
Михаил Непряхин: Это значит вы должны заранее проект писать Так
Михаил Непряхин: что бы его было несложно переписать
Михаил Непряхин: и здесь нам тоже приходит. На помощь архитектура которая говорит что если вы Будете придерживаться определенных Правил то переписать Этот проект, будет несложно
Михаил Непряхин: Так но этим вопросом во франции одна проблема. Архитектуры почему то считается что чем сложнее Тем круче но чтобы на конференциях Было что рассказать
Михаил Непряхин: вот Поэтому как бы мой месседж такой что если что-то сложное То Прям мы
Михаил Непряхин: скорее отвергаем То есть это должно быть что-то такое чтобы вот оно приносило пользу но можно было понять Любому
Михаил Непряхин: ну и желательно чтобы была Прозрачность простота чтобы можно было взять точку Входа какую-то в приложение и пройти, весь путь, то есть Мы потом сюда заходим в этот Модуль в этот модуль в этот Модуль в этот модуль какое-то дерево чтобы было и Мы потом Берем, и точка Выхода
Михаил Непряхин: если Мы ее так прийти Не можем если Там Нам надо что-то
Михаил Непряхин: если У вас Какой То здесь блэк бокс есть есть блокбокс
Михаил Непряхин: то это ну тоже как, бы архитектура обречена на смерть потому что, она ну любой Человек должен взять и просто вот размотать полностью клубочек посмотреть как оно устроено
Михаил Непряхин: чтобы танки нести изменения Поэтому и френворки не прерываются в гоу Поэтому и Какие то
Михаил Непряхин: в Сторонние библиотеки по управлению зависимостями тоже Не прерываются гол
Михаил Непряхин: потому что они вот добавляют вот этой вот магии ау, гоу изначально философия Что должно быть все просто прямолинейно Без Маги
Михаил Непряхин: так один микросервис где большинство Мод или пять шесть Чтобы Избежать между транзакцией вся. Страна микросервиса немаленький со своим домом
Михаил Непряхин: ну Сейчас вот об этом еще поговорим об этом поговорим сложная тема,
Михаил Непряхин: а когда дублирование кода между прочим допустимо
Михаил Непряхин: ну желательно Чтобы Кот Не Дублировался Поэтому У, нас же есть вот приватные модули которым Там чарли на втором Уроке Или Тратим смотрели То есть То что можно Переиспользовать оно должно выноситься в отдельной модули чтобы другие сервисы Могли, его Пересиспользовать
Михаил Непряхин: но в коде на Голову. Да У вас иногда Будет дублироваться код тут как бы
Михаил Непряхин: вот эта простота она немножечко вит в разрез с принципом драй а драй эта дон тропить его сыров. Ну типа Не повторяйся
Михаил Непряхин: А ну час поговорим вот она Сейчас поймем ее так
Михаил Непряхин: дальше значит почему в общем-то да почему Мы все в одном файле Не можем написать понятно значит дальше и как По каким Частям разбить Кот значит на какие части он гется
Михаил Непряхин: ну во Первых Всегда есть какая там а кор логика значит Ммм
Михаил Непряхин: хотелось бы ну Или еще лишь скейсами называют и скейсами называют
Михаил Непряхин: то есть какая-то вот суть того Что происходит в приложении Мы заходим смотрим значит Мы Идем
Михаил Непряхин: здесь Мыдем фреддис что-то делаем сохраняем Или достаем а Идем впоследствии и просто какая-то функция
Михаил Непряхин: вот Эти, вот компоненты они обычно как бы можно одной строчкой написать что Мы Делаем
Михаил Непряхин: это называется абдус кейсы и они по Сути являются нашей программой,
Михаил Непряхин: аа с сутью того что мы делаем ну, вот например здесь у меня в этом примере
Михаил Непряхин: находится в пакете из кейс Вот Допустим Создание профайла да
Михаил Непряхин: значит Идем в редис проверяем По ключевой департаментности Не обработали малимо уже этот Ключ создаем какую-то модель доменную
Михаил Непряхин: Влидацию делаем сохраняем базу отправляем в Кафку, отдаем наружу
Михаил Непряхин: а смотрите если разобраться Так Что Мы здесь делаем Мы довольно много всего делаем
Михаил Непряхин: ну смотрите как оно написано оно написано
Михаил Непряхин: одной строчкой ну да понятно, и какие то операции
Михаил Непряхин: если, мы Сейчас начнем здесь вот про рэдис расписывать довойку
Михаил Непряхин: Она будет большая Она займет весь экран и у нас фокус, внимания, размоется
Михаил Непряхин: и Мы не увидим сути да то есть Мы Вот будем в детали
Михаил Непряхин: вдаваться здесь и смотреть как именно Мы Там Это делаем То есть Мы открываем соединение с Рейсом Там обрабатываем Ошибки конкретные Ради, соски
Михаил Непряхин: ну и Так далее ну с средством еще Допустим ванна тут Короткая была бы запись солидации какая там влидация ну было бы там не знаю пять Строчек можно в отдельную функцию не вносить было пять Строчек
Михаил Непряхин: спас грей с подгрусь, сложнее под взглядом много Чува То здесь было где То два экрана Кода
Михаил Непряхин: опять, Же как бы если Это выносить сюда Же в одну простыню То и
Михаил Непряхин: Мы вместо того чтобы узнать Что делает приложение
Михаил Непряхин: будем смотреть ну как бы то мы видим как бы суть Окей вот мы идем в познер и потом вот Это вот расписывается Логика с Подверой
Михаил Непряхин: короче говоря У нас Будет размываться фокус
Михаил Непряхин: и Мы просто Даже Не Сможем и Поэтому отсюда вывод какой значит
Михаил Непряхин: Не писать какую То логику с подробностями
Михаил Непряхин: эти подробности выносить в отдельные Маленькие модули
Михаил Непряхин: и эти модули будут служить нам кирпичиками для того Чтобы мы из них могли эту логику выстраивать
Михаил Непряхин: и по Большому счету наша Программа, Из Этих кирпичиков состоит
Михаил Непряхин: Ну, есть инициативная часть да то есть как бы это отдельный код для инициации мы тоже там посмотрим
Михаил Непряхин: но вот когда у нас уже все занициализировано и работает
Михаил Непряхин: то вот конкретный из кейс который что-то Делает
Михаил Непряхин: Или когда Мы достаем какую-то профиль да Мы Там Эволюция, идем в Возрасте достаем профиль и отдаем его
Михаил Непряхин: а и какие Давайте Так порассуждаем какие У нас могут Быть эти кирпичики
Михаил Непряхин: а значит ну во-первых это То Что Связано с сетью.
Михаил Непряхин: И Это воскрес Это рэдис Это кафка эстри и другой сервис
Михаил Непряхин: а что является кирпичиком в этом случае
Михаил Непряхин: какая то одна Атомная операция То есть не вся работа с подверсом является кирпичиком а конкретно Там, какой-то клиент
Михаил Непряхин: вот Это вот кирпичик, То есть не абстрактный клеит а конкретный кареттон
Михаил Непряхин: иди создай профиль Или там добавь что-то двое достане что-то где-то там какой-то
Михаил Непряхин: и с Рэдисом То же самое То есть подойдет
Михаил Непряхин: сделай то-то и то-то с кафкой там то Же самое ну. Сказка ивана просто отправить ну. Тут Два варианта может Быть в кафку отправить Один запрос
Михаил Непряхин: ииич ну, можно объединить в Один метод вот вот эти вот Кирпичики называются, адаптеры
Михаил Непряхин: то есть вот Один из видов кирпичиков на трактор и и
Михаил Непряхин: еще один вид кирпичиков это когда не сеть значит если это не сеть Ну какие то доменные функции
Михаил Непряхин: самая банальная доменная функция да Влидация
Михаил Непряхин: но в зависимости от домина они могут быть Или не быть
Михаил Непряхин: то есть если у нас простой простой к этапе такое бывает часто когда мы просто что-то кладем в базу данных сохраняем и что-то достаем оттуда
Михаил Непряхин: ну как бы тут тогда доменных функций как бы и не Будет ну какие то доменные модели будут доминахнуться не будут
Михаил Непряхин: вот но если у нас что-то еще сервис дополнительное делает
Михаил Непряхин: у нас же Всегда есть какие-то выходные данные Да У нас Всегда есть какой-то в программе есть какой-то вход
Михаил Непряхин: а Наша Программа и выход и и в зависимости от домина Мы можем Эти данные
Михаил Непряхин: Там что То с Ними Делать
Михаил Непряхин: и Тогда будут Появляться вот Эти вот Маленькие функции которые будут
Михаил Непряхин: что то какого то какие то атомные операции сделать
Михаил Непряхин: их немножко, с ними немножко, сложнее
Михаил Непряхин: потому что как бы это вот с адаптами все просто да понятно как кирпичик, выглядит Здесь кирпичик, он немножечко ну ну важно. Короче просто понимать что, Мы должны. Делать какую-то одну Вещь. И делать это хорошо
Михаил Непряхин: если вы начинаете функцию большую делать то ее нельзя будет Переиспользовать а если функция Маленькая
Михаил Непряхин: то в разных Йоскейсах ее можно будет пристроить и и и Пере использовать соответственно код
Михаил Непряхин: то есть что, вот Эти, Кирпичики можно переиспользовать в разных из Кейсах что, вот эти Кирпичики можно переиспользовать в разных экейсах
Михаил Непряхин: вот наши строительные Блоки и из них Мы уже комбинируем собственно Саму, программу и когда проведена Четкая Граница между
Михаил Непряхин: а вот Этой вот а ядром Логики
Михаил Непряхин: что ядро, Логики оно не занимается какими Там
Михаил Непряхин: ну, вот Саму, суть Мы Там не Пишем вот этот развесистый код ну может быть тут Какой нибудь киев таифы могут быть формы могут быть естественно
Михаил Непряхин: и но не надо как Бы здесь в бизнес-волике, писать Ну как то там какие то подробности
Михаил Непряхин: вы просто выносите это в отдельный Кирпичик
Михаил Непряхин: аа и все и просто его Встраивать в эту логику а потом Через какое-то время
Михаил Непряхин: У вас вот Допустим, один из кейс появляется Другой, юс кейс
Михаил Непряхин: и да какую-то может быть логику ему надо было дописать чтобы использовать но что-то вы можете взять уже из уже существующего. И Тоже, переиспользовать
Михаил Непряхин: и так Появляется Переиспользование и есть У, вас таким Образом а Написан Проект
Михаил Непряхин: То его Переписывание потом Не вызовет много боли
Михаил Непряхин: потому Что вот Эти, вот вещи они
Михаил Непряхин: в целом независимые друг от. Друга и объединяет их все только модели
Михаил Непряхин: понятно, что. Модели у вас будут ну, в зависимости от. Того какой у вас задамен
Михаил Непряхин: вот и понятно, что эти функции они принимают модели эти и возвращают модель эти но тем не менее
Михаил Непряхин: если, вы вдруг, поймете что вот какой то конкретный кейс
Михаил Непряхин: о он просится, уже в отдельный свой микросервис то вы просто и возьмете его посмотрите
Михаил Непряхин: что Ему надо для работы Окей надо кирпичик Вот сет значит отсюда и возьмем воскрес Вот этот возьмем кирпич и Там какая-то Функция отсюда и какая модель объединяет Эти Кирпичики вот какая Там модель Мы ее Возьмем
Михаил Непряхин: и Переносим в другой Сервис
Михаил Непряхин: и То же самое когда понадобится Этот сервис Переписывать что Добавить Убавить вообще все переписать другие кейсы Добавить вы тоже, вы Не будете заниматься переписыванием вот этих Вещей
Михаил Непряхин: вы будете заниматься переписыванием, больше вот этих Вещей
Михаил Непряхин: то же самое с транзакциями да то есть нужно писать ручки вот нас погибловой ручки будут
Михаил Непряхин: их нужно писать Так чтобы они все умели работать из транзакции и без транзакций
Михаил Непряхин: и Поэтому на уровне визкейса вы когда нужно оборачиваете их транзакцию а когда ненужно не оборачивайте и они внутри себя знают Мы вели она в транзакции
Михаил Непряхин: вот про это тоже мы посмотрим это много вопросов, вызывает как и
Михаил Непряхин: во-первых кирпичик очень сильно раздувается во-вторых этот кирпичик
Михаил Непряхин: становится полноценной частью вот Этой вот основной логики а это уже Плохо
Михаил Непряхин: нужно сделать так чтобы кирпичики были независимые и легко комбинировались
Михаил Непряхин: так вот вот на текущий момент все ли понятно,
Михаил Непряхин: и есть ли какие то здесь Вопросы,
Михаил Непряхин: так
Михаил Непряхин: есть реализация связанная с походом в сеть например, в базе данных запрос ну это уже адаптер ну как бы тут же он сразу сдал границу вот Проводим границу сеть Не сеть
Михаил Непряхин: значит Ну Тоже сидите Тушь
Михаил Непряхин: как бы Не важно. Как называется главная суть если Эволюция идет по сети ну. Вот сетевой автор.
Михаил Непряхин: Как понять что ольгу писать функцию в доме индомен лис кейс
Михаил Непряхин: ну. Опять, же смотрите вы спрашиваете конкретный вопрос понятно, ну как бы я храню войку в папке домен да
Михаил Непряхин: Но а
Михаил Непряхин: ну потому что У меня в папке только вот эти вот конкретные кейсы да а я предпочитаю выделять домен и вот как, бы доменные сущности у меня находятся вот в своем, пакете домен
Михаил Непряхин: ну опять, же красивая удобная я сразу, вижу Домина а отменная сущность как бы Или для того вот у, Меня как бы Два типа да ты его тоже можно сказать носит доменной сущности Но чуть-чуть у нее Другое. Назначение Распада. Трудоголи Поэтому я ехал в них отдельно а в дискейся я хранил. Только
Михаил Непряхин: саму суть вот само приложение ну и я стараюсь и как бы по слоям то есть вот для домена допустим для крейта я храню все в Этой детошке, вот надо будет, меня, вынести в отдельный сервис я возьму этот файл, этот файл, ну а здесь придется вот это взять и
Михаил Непряхин: как бы критерий хорошей архитектуры он заключается в том
Михаил Непряхин: насколько легко вам будет, взять и вынести вот это в другой Сервис если, довольно легко бренд дешу Не Совсем бесплатно да тут придется немножко, поработать но вообще это Возможно, то есть Возможно, взять вот это вот и вынести в другой сервис Если, возможно у вас хорошая архитектура
Михаил Непряхин: Если, ой нет невозможно тут, все связано руками и Ногами Плохая архитектура
Михаил Непряхин: ну как бы видите Я вам только могу какие-то Ориентиры дать типа Если, любой Человек заходит в Проект, читает и понимает что происходит хорошая архитектура если человеку нужно неделю и он все равно потом говорит я ни фига Не понимаю как это работает
Михаил Непряхин: и это плохая архитектура потому что, Мы Кот Пишем для читающего Если, Мы Не смогли рассказать историю
Михаил Непряхин: что, делает программа и Человек уже неделю разбирается и все равно говорит сложно это плохая архитектура То есть как Бы нету рецепта как именно Делать
Михаил Непряхин: ну, как ну, вот я Выдаю какие То вот рекомендации да но Если, вы этого же самого добьетесь другим способом другим расположением папок
Михаил Непряхин: ну, это Тоже будет Хорошая архитектура Так
Михаил Непряхин: надмен без функций вся, войка лизка есть Так норм часто ввело ну насчет часто Так Делают, тут как бы Делают, вообще всякое Вы увидите все
Михаил Непряхин: и еще разочаруетесь в людях вот а для меня Без функций
Михаил Непряхин: эээ ну есть, такое поверие вообще как бы вот я Раньше, эндити еще вот эту папку часто Называл но Эндити Это по Сути для Людей
Михаил Непряхин: красный Флаг они считают что Это то же самое что модель а модель вот Раньше, была архитектура мода вьюконтроллер да
Михаил Непряхин: популярная нуу джаве и там вот эта модель подразумевалась что это просто такая
Михаил Непряхин: Тонкая детошка по сути ну, там может быть методами но в целом это в первую очередь модель
Михаил Непряхин: домен как бы говорит о том что здесь
Михаил Непряхин: и не только модели хранятся. Но и функции связанные с Этими Моделями
Михаил Непряхин: и они должны быть оформлены в виде Кирпичиков, быть Маленькими Небольшими самостоятельными Функциями
Михаил Непряхин: Если они Не Участвуют в сети никак потому. Что если они Участвуют в сети То Этого доктора уже
Михаил Непряхин: они сюда Переезжают а и и как бы Это Два разных Мира адаптеры Они тестируются с помощью интеграционных тестов
Михаил Непряхин: это как бы Более сложные тесты нужно нужно поднимать доктор Компост, чтобы протестировать Адаптацию, доменные и
Михаил Непряхин: написать без всякой баз данных то есть как бы Это совершенно Два разных Мира или Сетевой мир. Ненадежный сложный с кучей подводных камней ломучей
Михаил Непряхин: и Мир и
Михаил Непряхин: доменный свой он более стабильный и надежный и редко изменяется а вот адаптер Ну, взяли там решились поменять одного, блокера на другой там на одну базу, данных на другую
Михаил Непряхин: ну или даже не в этом дело в том что ну как-то поменяли подход. К работе
Михаил Непряхин: вот ааа Доменная сущности это то что отражает
Михаил Непряхин: бизнес в коде то Есть ну если, мы занимаемся
Михаил Непряхин: если, у нас в рестораны и Мы развозим пиццу То у нас Так и будут в сущности называться ну как в базе данных там они мапиться будут там бут сущность модель ресторан будет модель там заказ пицца ну как бы то есть мы должны зайти сюда
Михаил Непряхин: и в доменный слой и увидеть э ну как бы из чего состоит вообще наш бизнес
Михаил Непряхин: Вот а давай завтра когда Мы заходим
Михаил Непряхин: ну Мы видим что Мы что-то сохраняем в кафку Мы Там как-то Там Работаем с Подберой ну Сохраняем профайлы со с делом Профаева,
Михаил Непряхин: ну как бы нас это Не так сильно Волнует как то что происходит в доменном свой потому что он ну как бы здесь более ответственная часть
Михаил Непряхин: так если, серость большой то таких, вообще вот Вагон и Маленькая тележка как ими управлять Но тут только Найминг, сломает Голову.
Михаил Непряхин: Ну смотрите во-первых эээ
Михаил Непряхин: с доменной областью да от заменной областью сложно то есть если, У нас прямо, маленький Сервис то можно Все поместить э в папеджидомен
Михаил Непряхин: есть ли У нас развесистый Сервис ну все здесь Нужно создавать другие пекаджи Которые уже будут пофичам
Михаил Непряхин: Которые будут хранить свои модели потому, что если вы в одном пакете, будете хранить модели они начнут пересекаться очень быстро. Поэтому вы тут добавляете папки
Михаил Непряхин: и уже конкретно по доменам это делается
Михаил Непряхин: ты храните свои модели в Этих папках
Михаил Непряхин: а с адаптами вообще такой проблемы Нет потому что ну Окей Допустим у нас позрисовывая
Михаил Непряхин: и вот у меня тут Два кирпичика да то есть у меня вот кирпичик, клеет По файлу тропить кирпичи гетто профайл,
Михаил Непряхин: это просто инициатива мишура то есть и
Михаил Непряхин: эээ идем в базу, данных и конкретно что за дела видите даже я здесь не пишу потому что там это не важно то есть как бы часто когда пишется сервис
Михаил Непряхин: пишут из лягушки на адаптеры а уже потом там отдается ээ
Михаил Непряхин: менее квалифицированным персоналом эти Ручки дописать потому что если они правильно скомпонованы и правильно описаны сигнатуры то вот их просто написать это уже дело. Техники
Михаил Непряхин: ну как бы это такое большое дело. Техники да их надо все Написать убедит что они Работают там Написать Некие интеграционные тесты Это большая, часть работы ну Она более Рутинная
Михаил Непряхин: а более творческая. Часть это вот эти вот кирпичики и найти смучу выделить
Михаил Непряхин: и определить места Где они будут Находиться Поэтому если У вас их Будет вот этих вот кирпичиков здесь находиться пятьдесят штук
Михаил Непряхин: ну понятно, что наверное пятьдесят вы уже начнете теряться и тогда в этом случае наверное тоже стоит здесь Создавать какие-то папки и дальше делить но и
Михаил Непряхин: это как бы один вариант компоновки да то есть это вариант когда У нас
Михаил Непряхин: а маленький либо средний сервис если, понять, что сервис будет большой то вот здесь вот
Михаил Непряхин: аа на верхнем уровне вентерна просто создаются свои домены у Меня, есть пример такой компоновки тоже Сейчас
Михаил Непряхин: м вот вы я от Этой Публичной позиции здесь Э
Михаил Непряхин: у меня домены вот эта папка не черном
Михаил Непряхин: и ну вэб у меня просто конструкторы
Михаил Непряхин: а вот уже вот эта вот структура она находится в папке с названием, замена вот у меня домин эпал
Михаил Непряхин: и внутри эпа у меня
Михаил Непряхин: та же структура тут, Адаптация контролеры дто ну вот индите видите я тут, Еще называл ну я и так так называю
Михаил Непряхин: из киисы!
Михаил Непряхин: Вот и Поэтому Э Если вы опять же зачем так зачем так зачем на этом уровне
Михаил Непряхин: Аа для того чтобы потом взять и вот это выделить в отдельный сервис то есть понимаете что дамен эпл
Михаил Непряхин: становится толстым и просится, уже ээ выделить его в отдельный сервис
Михаил Непряхин: Или допустим у Меня есть вот и
Михаил Непряхин: вот можете сказать и посмотреть вот здесь э, как, Раз, э, вот этот пример который я сказал что,
Михаил Непряхин: человек сделал домашнюю работу вот он здесь вот он так же сделал
Михаил Непряхин: но ведь, вот по этому же примеру, у него паприн тернул и здесь есть нетрадиционный файл ну вот как Раз, он по этому шаблону и сделал и вот домен погода да вот он выделил. А здесь структуру такую сделал
Михаил Непряхин: и соответственно можно сюда дальше добавлять домины
Михаил Непряхин: и таким образом, У вас появляется Граница между заменами
Михаил Непряхин: вот ну единственное что если, вдруг один домен будет Ходить в другой домен вызывать его то надо будет сделать тонкий, адаптор для вызова одного домена другим
Михаил Непряхин: а потом когда вы Вынесете этот обмен в другой сервис То Там Просто появится Сетевой поход. Там будет клиент Написан
Михаил Непряхин: Вот и а на какие есть варианты а можно
Михаил Непряхин: на самом деле вот когда на верхнем уровне Мы здесь создаем домины какие-нибудь допустим то трепал у нас был бы,
Михаил Непряхин: банана и внутри бы, Мы могли свою структуру придумать
Михаил Непряхин: Но я обычно беру вот эту вот тамада и контроль
Михаил Непряхин: то есть То Же самое Повторяю в каждой Папке и и
Михаил Непряхин: короче Делали По-разному как, бы У Меня, в Принципе специализация Вот на Архитектуре приложения и как бы за свою жизнь Я
Михаил Непряхин: проверил множество разных гипотез и Делал разную Компоновку и Я в платформе в Их командах Работал и Мы это еще спускали вниз. Командам продуктовым чтобы они следовали этим
Михаил Непряхин: айван
Михаил Непряхин: также смотрел как людям что заходит что Не заходит как они в итоге Делают, свои. Проекты в целом несмотря на то что.
Михаил Непряхин: Платформенные команды Сейчас есть во всех проектах
Михаил Непряхин: и Они диктуют какие-то правила эти правила все Нарушают То, Есть Нет
Михаил Непряхин: Людей кто бы Следовали вот этим вот каким То, Инструкциям
Михаил Непряхин: и даже если все коды генерится и там Платформная Команда такая хорошая как вавиты там вид одни из самых сильных и
Михаил Непряхин: Поэтому говорить вот конкретно вот как надо делать а как не надо
Михаил Непряхин: вы, все равно в итоге сделаетекет свои выводы и будете Делать немножко, по-своему если У вас Нет идеи на начальном этапе ну просто придерживаетесь вот Этой логики То есть без Разделения доменов на верхнем уровне То есть в этом случае весь Сервис этот Домен
Михаил Непряхин: и Вот этот весь интерну это мог подсчитать что вы как бы и Так уже в Папке У вас просто Один доменный сервис
Михаил Непряхин: Если вы понимаете что вы делаете что-то Большое
Михаил Непряхин: и вы уже понимаете как Это выделить домены
Михаил Непряхин: То можете прямо, на первом этапе
Михаил Непряхин: а создать здесь на верхнем уровне папки
Михаил Непряхин: и соединить их по принципу вот как показано здесь то есть не проблема,
Михаил Непряхин: а на гор работают свои псокитами да работают если да то как они вписываются в подобную архитектуру или в Данном. Случае выносят в отдельный микросервис и работать совсем много
Михаил Непряхин: накладывают ограничения потому что выписке ты это Постоянная Коннекшина
Михаил Непряхин: То Же самое когда Мы работаем с Джерписи с постоянными Коннекшими Там тоже немножечко меняется архитектура и Если у нас сервис Делает что-то эдакое очень сильно параллельное
Михаил Непряхин: то есть вот это вот такая Классическая архитектура она именно про типовой Сервис там девяносто Девяти процентов. Случаев, Сервис выглядит вот так вот таким образом, и все нормально
Михаил Непряхин: но если появляется и что то нестандартное то вы уже
Михаил Непряхин: ну вы обречены на проверку гипотез то есть
Михаил Непряхин: вы поймете допустим что сюда не вписывается, Там какая нибудь какой нибудь пайпайн,
Михаил Непряхин: вы начнете думать, как Это, сделать но
Михаил Непряхин: как бы, моя цель У вас ромбод из кирпичиков. Состоять да то есть Ваша любая архитектура она Будет состоять вот из этих вот мелких кирпичиков. На нижнем уровне
Михаил Непряхин: То есть
Михаил Непряхин: дальше из Этих кирпичиков строятся, вот эти вот кирпичики уже крупные блоки с логикой которые как бы Изкие. Семьи являются
Михаил Непряхин: Еще дальше это становится частью ну как бы и сам сервис тоже кирпичик
Михаил Непряхин: то есть видите у нас как бы три уровня абстракции
Михаил Непряхин: а просто не нужно делать больше три Всегда достаточно. Ну какие у нас абстракции то есть кирпичик на самом нижнем уровне потом вот из этих кирпичиков Состоят вот эти вот юскейсы нашимойки а уже сами из кейсы они а не ее ручки то есть с нас вызывают какой то другой сервис
Михаил Непряхин: и для того другого сервиса мы сами являемся вот таким же кирпичиком ну и все круг замыкается
Михаил Непряхин: и здесь Нет нужды в усложнении абстракции,
Михаил Непряхин: потому что даже если, за вас Там вызывают высоки Или вы делаете что-то суперпараллельное вот эту часть у вас все равно она будет
Михаил Непряхин: и если вы не будете здесь размазывать так вот сильно логику а выносить ее в адаптеры в доменные функции и работать уже здесь с небольшими кирпичиками то у вас Программа,
Михаил Непряхин: эээ ну вот сама суть программы Что, она делает Всегда Будет умещаться на один два экрана
Михаил Непряхин: а это прямо, но круто когда вы можете но вот За Раз,
Михаил Непряхин: без прыжков вот этих сумасшедших когда то есть как бы еще плохой тон когда вас заставляют прыгать вот просто вы Хотите. Прочитать что-то а вас прыгать заставляют То есть там какой-нибудь абстракт на абстракции какие-то там все завернуто все свернуто тут, какой-то Там паттер
Михаил Непряхин: и просто чтобы вот осознать что делает Ваша, Программа, вы прыгаете прыгайте прыгайте прыгайте
Михаил Непряхин: создается ли у вас в голове, вообще понимание что здесь происходит
Михаил Непряхин: ну ты смутная вы же примерно начинаете понимать но вот когда вот оно перед глазами, когда оно в виде
Михаил Непряхин: короткой программы.
Михаил Непряхин: То даже вот это можно очень сильно размазать да мы просто делаем валидацию и достаем проще с базы вот это можно размазать так что вы в Принципе уже не будете уверены точно ли Мы Или Там где нибудь еще что нибудь не Делаем
Михаил Непряхин: то есть
Михаил Непряхин: здесь Мы уже что-то побольше Делаем да то есть и как бы тоже есть Тысяча вариантов как это написать длинно но как бы сложно написать и длинные а Еще не проблема Справляются все
Михаил Непряхин: а вот написать компактно и просто вот тут проблема тут приходится, думать, и
Михаил Непряхин: думать как бы рассказать эту историю так чтобы и вы потом когда залезли поняли что здесь происходит и коллега ваш залез и полномочий происходит
Михаил Непряхин: Не Стоит бояться большого количества кирпичей потому Что они все равно все независимые друг от друга вот если У вас все кирпичи связаны как лапша то это не кирпичи во все кирпичи не должны быть независимы у них зависимость только Одна надоменной модели
Михаил Непряхин: ну потому Что они скорее всего либо принимают обменную модель как Аргумент либо отдают модель модель как Аргумент но вот у меня здесь в случае моей, модели вот У меня Профиль
Михаил Непряхин: вот Поэтому если их будет прямо супердофига ну. И Что ничего Страшного они Же все равно Там Связаны, с какими-то определенными моделями а между Собой Они Независимые Ну, Сколько кирпичей надо взяли и отсыпали в Другой, сервис и Там с Ними Работаете а потом выяснится что какие-то кирпичи можно
Михаил Непряхин: Вообще переиспользовать в Других Сервисах и в Этом
Михаил Непряхин: папку отдельную с приватными Мудрами вынести их и все и проблемы не будут
Михаил Непряхин: Так. Сейчас. Тут еще вопрос иван Давайте сделаем Небольшой перерыв буквально Две минутки и продолжим
Михаил Непряхин: Так. Давайте Дальше посмотрим
Михаил Непряхин: посмотрим вопросы, Так. Если У сервиса два различных кабинета один кабинет аминов второй кабинет для пользователей как То Структуры будут выразить два разных Домина
Михаил Непряхин: а
Михаил Непряхин: ну. Смотрите как можно сделать по-разному. Да хоть разными сервисами это сделать но так как это будет но это будет хоть как два разных юрис кейса то из кейса будет Два разных
Михаил Непряхин: но возможно что они будут эээ да нет они наверное и разные доменные сущности будут ну, да просто Два разных из кейса как бы Ммм Видите что такое домен да вот выиграете это Два разных домена или длямен
Михаил Непряхин: это что то очень Абстрактное то есть если вы спросите двух Человек где Граница домена
Михаил Непряхин: ну типа там скажете какие-то сущности и скажут ну вот это один домен или не один элемент что ты скажешь один для меня крышу Два домена Поэтому
Михаил Непряхин: и это почуйте по ощущениям по опыту по насмотренности здесь и невозможно дать каких-то строгих определений и
Михаил Непряхин: вы смотрите По Ручкам но условно вот у сервиса два личных кабинета но значит Это две ручки То есть один для Админов один для пользователей это как минимум две ручки
Михаил Непряхин: то есть и там еще могут быть еще под ручки да Поэтому даже не важно это один замедлен это разные отмены это может быть все в одном сервисе а может быть в разных сервисах
Михаил Непряхин: они могут использовать и одни и те же модели
Михаил Непряхин: а могут абсолютно разные модели использовать
Михаил Непряхин: то есть это уже больше область про вот эту вот доменную доменную архитектуру то есть Видите. Как бы я вам говорю пока что про крупные маски вот просто про то как важно компоновку делать в Целом компонентов системы,
Михаил Непряхин: вот а вот уже вот это вот как, Там домен организовывать
Михаил Непряхин: отдельная Наука опять, же как, бы я написали Две, книжки на Две книжки
Михаил Непряхин: по вот то что вы задали вопрос да как бы по шадетам мэри кэлвин брейк эванс
Михаил Непряхин: вот вот у него синяя книжка и летмут Красная книжка
Михаил Непряхин: короче говоря как Минимум две книжки, Есть Ну и вот еще куча куча пояснений чего он имел в виду и вот это вот все то есть это Прям но уже тут и заотерика пошла вот как, тут как, делить то есть есть такое понятие как, баун этот контекст
Михаил Непряхин: и как, Там разделить Приложение на и короче типа показано вот два
Михаил Непряхин: два домена дать Потом Продажи Саппорт, и в продажах есть и
Михаил Непряхин: и вот как бы это по Сути книги про то а что здорово если не переиспользовать
Михаил Непряхин: одну модель в везде ну типа это получается такой Год обжиг на любой У него там куча полей
Михаил Непряхин: и вы когда в каком-то Контексте смотрите на этот объект вы такие а мне какие поля из этих двухсот нужны а нужны реально там два поля
Михаил Непряхин: и в Другой, контекст, вы из другого контекста смотрите на эту модель вот пришла вам модель ты смотрит Там, пятнадцать полей а Реально нужно одно.
Михаил Непряхин: Но так. Сделано приложение что. Вы вот получаете Эту модель потому что она вот Везде используется Но это как бы плохой паттер
Михаил Непряхин: он часто его Можно увидеть Но патрон плохой потому что вот по дедди подразумевается что лучше чтобы у вас
Михаил Непряхин: были разделены эти как бы доменты вроде один но у них все-таки как бы еще есть под, доменой то есть Как, бы такие ограниченные контексты балуют контексты
Михаил Непряхин: и часто очень в внутри сервиса тоже делят на эти контексты
Михаил Непряхин: и как бы даже речь Не идет, о Том
Михаил Непряхин: отдельно от отмена Или Нет но о Том что Это какие То ограниченные контексты и модельки Там Тонкие они могут одинаково называться вот и здесь будет продукт называться только У этого продукта будут два поля Которые нужны для этого контекста
Михаил Непряхин: а здесь продукт будет Содержать одно, поле Которое нужно для этого контекста а вообще как бы так по. Жизни типа в продукте там может Быть пятнадцать и
Михаил Непряхин: полей. Ну просто в одних случаях одни Нужны а другие другие и лучшей практикой Являются когда Мы не заставляем разбираться пробираться отправлять все а Мы вот как бы, типа делю и вот Что надо только То имеем надо будет потом ну Добавим Там
Михаил Непряхин: а когда Вон там и Сказки вычитывать допустим добавим там какое то поле вот но эта к врачу же область прямо, сильно эзотерическая сложная
Михаил Непряхин: и и
Михаил Непряхин: дай бог бы просто вот научиться работать уметь видеть гдедактор а где не адаптер это уже очень большой прогресс поэтому Мы будем сосредотачиваться на этом на Написание, Адаптеров
Михаил Непряхин: и Мы будем работать. С простыми моделями доменными там с профилями пользователей и У нас там Не будет какой-то сложной логики но тем Не менее какие-то элементы из я вам тоже покажу мы рассмотрим
Михаил Непряхин: получается э кейс состоит, из адаптеров спивавел Роль понял, ну типа того да
Михаил Непряхин: так можете дать пример функции в доминиении кроме влидации так Мы Давайте Сейчас
Михаил Непряхин: кнуйтесь У меня Нет кроме лидации
Михаил Непряхин: ну Тут, кроме валитации эээ Нет У Меня, Там Там По-моему ничего Такого Не, будет
Михаил Непряхин: ну Сейчас Давайте Глянем небольшой проект, а
Михаил Непряхин: ну Какие То вот тут простые это проверки
Михаил Непряхин: ну тут какая-то логика ну ведь у меня тут очень. Тонкие. Модели как бы у меня здесь кроме конструкторов и валидации доменных кирпичиков Примеров и нету
Михаил Непряхин: потому что ну сложно придумать какой То
Михаил Непряхин: какой-то домен где было бы вот здесь много кирпичков но просто когда вы начнете писать что то Свое,
Михаил Непряхин: вы это почувствуете типа вы так я адаптер положить нет не сеть Куда положить вискиси сделать
Михаил Непряхин: и вот когда такие Размышления появляются место для Домина то есть это какая-то доменная и
Михаил Непряхин: как алексей Там, написал Или это
Михаил Непряхин: аналитика какая нибудь расчет Какой нибудь чего нибудь но опять, Же просипию Баунти
Михаил Непряхин: короче какие То Действия учат Делать Из доменом я думаю как бы, несложно придумать где вы работали
Михаил Непряхин: Это Логика но не сеть
Михаил Непряхин: на каком уровне пишут Начало и конец Б транзакций По идее Это поход. По Сети и должны быть здесь кейс или ошибаюсь Нет не ошибайтесь это патологическийся все правильно без кейса как бы ну и что что
Михаил Непряхин: это что то в транзакции там может быть много логики там используются кирпичики из адаптации
Михаил Непряхин: Поэтому если, вы это не поместите в дискейс то вы утаите
Михаил Непряхин: Э часть важной логики а хотелось бы открыть одно место то Есть счете, важно. Чтобы вот программа Ваша была написана в одном месте если. Вы транзакцию будете Куда То, Другое. Место, убирать То, вы заставите читателя
Михаил Непряхин: То, есть читаете, читаете, Кот вишкейся а потом бах начинается транзакция вы туда Уходите
Михаил Непряхин: и тут, много чего еще происходит и
Михаил Непряхин: абстракции, в голове Держать не Можем вот а если вы еще заставляете тут, прыгать, бесконечно вот Эти прыжки они конечно разматывают
Михаил Непряхин: Но Тогда Внутри открытой транзакции могут Быть походы по сети другие адапторы.
Михаил Непряхин: А ну слушайте ну не пишите вы это антипатиям внутри транзакции не надо Делать ничего кроме операции с базы данных ну Как, бы Делают. Понятно, девушку, Делают.
Михаил Непряхин: Но тут вот и появляется Там
Михаил Непряхин: паттерн транзак шоу аут бокс Там если допустим Мы Там Сказка еще что-то делаем
Михаил Непряхин: а чтобы Рожать долгие открытые контакты ну короче это как бы проблема
Михаил Непряхин: с которой приходится бороться То есть приходится думать, как бы сделать так чтобы Не Было Долгих походов по сети потому. Что это Антипатер Но так много вы будете видеть так Делают Люди
Михаил Непряхин: потому. Что Ну Лениться тратить Время подумать как это Лучше сделать По-другому либо ну это не важно значит как будут ситуации бывают разные
Михаил Непряхин: просто, вы должны, понимать что это не по антипатиям но антипартнер в том плане что если вы так будете злоупотреблять Этими Приложениями сильно замедлится, если вы транзакции будете что-то делать по посети кроме транзакции
Михаил Непряхин: ну да да конечно естественно Так как происходит взаимодействие между платформами не фра командой и продуктовой
Михаил Непряхин: ну платформная команда просто вам какие то без практики испускают сверху а уж ваше, дело Там прислушиваться или нет ну Там лит лит ли Должен как бы решить что Мы берем на вооружение что нет инфраструктурный Код один в несколько и
Михаил Непряхин: проткоманда инфраструктурно куда-то несколько Раз,
Михаил Непряхин: м-м ну короче инфраструктурный Код обычно все-таки это Кот Ген и вы просто сами, для себя генерируете и Вторая часть Этой библиотеки то есть там Всякие блогеры трейсеры метрики обычно это все дается и вы должны это использовать
Михаил Непряхин: это очень часто бывает крым и написано Поэтому вы уж сами. Решаете использовать это или нет но я часто
Михаил Непряхин: переписываю эти Штуки потому что они написаны не очень Талантливыми. Людьми и к сожалению, Там очень часто забаваны
Михаил Непряхин: а стоит бояться большого количества пакете
Михаил Непряхин: да ведь и как по сути Мы занимаемся тем Что просто
Михаил Непряхин: пытаемся сделать так чтобы Кот Не превратился. В спагетти Это все равно неизбежно вопрос времени но Мы эту точку отдаляем
Михаил Непряхин: у каждого модаля свои. Репозиторы или репозиторы общие между Мозгами ну, вот тоже вопрос следующий да
Михаил Непряхин: следующий вопрос то есть ну, хороший правильный вопрос
Михаил Непряхин: вот здесь у меня пример когда у меня юс кейс значит это Единая структура в которую зинжекчины, все зависимости
Михаил Непряхин: то Есть вот он как бы пример депентенси ин джекшн он уже осуществляет и
Михаил Непряхин: довольно дешево потому что как бы это можно сделать с Помощью сторонних приморков можно сделать ну, вот здесь вот только принимать
Михаил Непряхин: надо было вот эти вот
Михаил Непряхин: интерфейсы но одно, как бы не суть главное что, вот здесь оно зин джексона Единая какая-то Есть такая Единая структура можно считать ее как контейнер такой
Михаил Непряхин: Которые Иметь в Себе все зависимости и шарится потом между Юзкейсами и вот здесь куча может быть из кейсов ну так комфортно работать, где-то десять пятнадцать из кейсов потом же перебор становится и надо думать о выделении каких-то доменов как-то дальше делить
Михаил Непряхин: а вот ну где ты штук до двадцати этих из кейсов в Принципе Окей м и любовь, из кейс
Михаил Непряхин: может Всегда, воспользоваться вот этими вот инъекциями которые там уже есть
Михаил Непряхин: и вот этими методами то есть если их будет много то тут, будет ну типа там
Михаил Непряхин: а в посгрее, тут, будет методов вот стука
Михаил Непряхин: там в редисе сколько это будет как-нибудь так и вот любой из этих методов любой из кейс может взять и воспользоваться таким образом Мы
Михаил Непряхин: Получаем легкое Переиспользование а Это, один подход
Михаил Непряхин: То есть как бы на первом этапе я вам предлагаю использовать его как наиболее простой а дальше
Михаил Непряхин: следующие подходы какие могут быть когда мы вот эти вот йоскейсы
Михаил Непряхин: делаем только с теми инъекциями Которые здесь и Сейчас нужны
Михаил Непряхин: То есть если нам нужно только Там один метод вот этот вот то Мы второй метод не тянем
Михаил Непряхин: и когда Вы можно допустим даже один к одному делать у вас просто один из кейс
Михаил Непряхин: и все и вот Он имеет здесь только зависимость и те Которые ему нужны читаю сломан так что
Михаил Непряхин: а вот м
Михаил Непряхин: вам придется Делать много конструкторов от таких потому Что ведь У нас тут нет автоматизации по Эээ Идею
Михаил Непряхин: и У вас появляется много бойлер плейта на сборку и
Михаил Непряхин: просто. Я вам говорю Что как бы на Первых этапах чтобы учиться достаточно Иметь один вот этот вот Контейнер со всеми, независимостями а дальше вот строить столько из кейса сколько вам нужно и То что вам нужно Вы здесь используете
Михаил Непряхин: написали какую-то Ручку какой-то адаптатор кирпичик для другого из кейса потом понимаете ага я могу это переиспользовать вот
Михаил Непряхин: и дальше уже как здесь Усложнять и как вам комфортнее как удобнее это уже дело, вашего вкуса и вы можете здесь экспериментировать опять же как бы здесь никто Не диктует только так и все По-другому никак
Михаил Непряхин: я и
Михаил Непряхин: база данных для каст номер одна, для обоих контекст да
Михаил Непряхин: база данных одна, Ну то есть если смотреть если мы находимся, в рамках одного сервиса то у нас база данных одна чаще всего но таблицы разные таблицы разные обозданных одна
Михаил Непряхин: то Есть как бы ну если мы Делим вот эти на поддомены такие то у нас у каждого подмена своя таблица
Михаил Непряхин: потому что потом когда вы захотите, разделить их физически на разные сервисы а вы Просто по таблицам Легко делится так если они в одной, таблице будут тоже не делятся
Михаил Непряхин: и между ними не должно быть жестких связей потому что если между ними возникают связи ну, либо не надо тогда их делить все-таки это один бау над контекст да как бы они живут вместе не делится оно
Михаил Непряхин: вот иначе, вы получите какую-нибудь распределенную, транзакцию будет только хуже вот
Михаил Непряхин: так домен например, расчетка миссии или промокода ну да да да да если для просчета промокода надо сходить в подгрыз
Михаил Непряхин: то это уже адаптер
Михаил Непряхин: так Давайте дайте Какую-нибудь обратную связь насколько вы Вообще что то поняли понятны ли идеи Не отторгаются ли они Есть ли тут какие то Противоречия с Вашими Внутренними Убеждениями Или все Окей ложится. Нормально все все хорошо
Михаил Непряхин: так супер так напишно данным по плечам Только чувства пробовать Понятно, сложиться нормально так как ей
Михаил Непряхин: Мне кажется, что ну если вы бы Кэнди
Михаил Непряхин: то вы плюс минус как бы ну идей Тут Новых Не, так много было Нужен например проект ну, естественно
Михаил Непряхин: естественно его тут ну, Раз, Только этим и будем? Заниматься да все последующее время поэтому как бы
Михаил Непряхин: у нас тут часть была просто относительно как бы просто Языка а сейчас будет часть уже больше про именно построение проекта
Михаил Непряхин: просто если совсем, тоже не рассказать про язык, ну тут Же Вот как бы Не придется Постоянно откликаться может быть Голосом кто-то хочет что-нибудь спросить
Михаил Непряхин: Можете Тоже, задать.
Михаил Непряхин: Так Окей ладно значит смотрите Мы э очень Много Сейчас еще вопросика почему в диске есть таи профайостракт не лучше ли тая песке есть тракт а то совпадение с одной сущностью замена а если их доминируют несколько бот
Михаил Непряхин: ну это уже отдельное искусство почему весь кризис тай профайл да у меня весь кейс это у меня в доминие
Михаил Непряхин: дамен профайл в дюсске не очень понял о чем речь как бы тайп профайл
Михаил Непряхин: так не лучше летай пескейстракт он ци совпадение с одной сущности замена ну короче смотрите не очень понял Вопросы, ну примерно понимая о чем речь как бы Пронейминг, да ну Как бы, вот снеймингом здесь Гу приходится Очень много кого, давать
Михаил Непряхин: Двадцать седьмая Строчка им давайте
Михаил Непряхин: а ну почему Так Мммм ну нету здесь конфликта типа у меня же да можно Не, виски называть это я просто, как бы тут ну
Михаил Непряхин: и Без Проблем как бы У меня и У меня чаще риски есть просто тут пример я видимо копировал я вот Эту структуру называю эс кейс да
Михаил Непряхин: да-да-да в других примерах У вас есть Было да короче это просто я чего-то откуда-то видимо крепастил. Это У Меня пример из видеоролика я Которого, и очень много тут коперов, и вот здесь Тоже, вот это все в интерфейсе должно быть видите я тут Тоже, оставил как бы лютую я показывал профайлюсь кейс
Михаил Непряхин: да можно и даже профаева. Ставить потому что конфликта Нет потому что Это же в Пакете и кейс вы же Не будете Еще создавать и
Михаил Непряхин: в пакете через кейс то есть вы можете тут
Михаил Непряхин: ну в этом случае все-таки обыски из правильно назвал
Михаил Непряхин: дочь с меймингом, тут отдельная Вообще история как это все уложить ну. Там потом будут живые Примеры это учебный Проект, и
Михаил Непряхин: так короче самая главная часть Она вот в этом
Михаил Непряхин: а дальше идем дальше кто-то это должен У нас Вызывать кто-то это вызывает да то Есть Есть У нас
Михаил Непряхин: Есть кейсы
Михаил Непряхин: а назад два один один из кейс на клевете профайла второй нагет этотнгет этот клеид
Михаил Непряхин: вот и кто-то эти, изкейсы вызывает кто, это делает
Михаил Непряхин: а тут вопрос в зависимости что У нас За приложение какие есть варианты
Михаил Непряхин: ну во-первых У нас может быть Хтп Сервер
Михаил Непряхин: а и Там Буртинка крутится, создает на порту Восемьдесят Восемьдесят а слушатель значит Ждем сюда запросы запрос появился
Михаил Непряхин: Мы вызвали
Михаил Непряхин: ну Там посмотрели на урал какой урал в зависимости от этого Отротили в нужный визкейс ну а дальше там уже все эти базы данных вызвались и так далее
Михаил Непряхин: ну и ответ. Вернули Какие Еще Могут Быть варианты и этот Же самый Виз кейс может Вызвать Джерписи сервер
Михаил Непряхин: Тоже. Там на порту поднялся.
Михаил Непряхин: Там Мы тронули роудинг прошел поняли в Какой вике ему надо тоже Вот он там сходил отдал запрос
Михаил Непряхин: тоже гортинка крутится а у нас может Быть консюмер
Михаил Непряхин: ну кафка Соответственно другого у нас обычно редко бывает
Михаил Непряхин: кафка конюнер что это такое начну есть Некая Очередь тка труба рисуют обычно кавказ как такую трубу
Михаил Непряхин: где У нас с одной стороны сообщения туда попадают а с другой стороны Мы Читаем То есть кто-то пишет Мы Читаем
Михаил Непряхин: понимаем что вызывают вот этот виз, кейс
Михаил Непряхин: ну и соответственно тоже его вызываем а Результат Куда Результат
Михаил Непряхин: ну либо Еще в другую какую-то трубу обычно
Михаил Непряхин: либо, просто в никуда вот Мы просто отработали и все обработали запросы и все как плюнутов
Михаил Непряхин: а То только только принялся Я обработался Или Мы Там стоит поменяли приняли запрос У нас Там есть базы данных вас загля. Мы стоит поменяли и все
Михаил Непряхин: ну и то есть смотрите уже три варианта вот этот код он ничего не Знает об этих парнях
Михаил Непряхин: кто его там будет Вызывать он сам по себе. Самодостаточный, он там свою вольку выполняет а его парники то вызывают
Михаил Непряхин: Нет еще Не все так что, еще может быть может быть воркер воркер который допустим Раз, в минуту
Михаил Непряхин: а в цикле крутится в циклифор
Михаил Непряхин: ну естественно тоже в своей бутине
Михаил Непряхин: а ну и кончумер тоже в своей грутине да То есть Как, будто, Так все это все в своих картинах
Михаил Непряхин: вот и тоже вызывает
Михаил Непряхин: Наш из кейс допустим тоже а просто он вызвал ему Результат не важен. Просто вот какую-то работу надо сделать
Михаил Непряхин: а
Михаил Непряхин: это может быть еще крон джоба ну крон жоба конечно близка к маркеру Ну просто букера пропускаться к личности на крон джоба. Допустим это
Михаил Непряхин: там в определенное время тоже там картина а Спит циклефора проходит время нужное время наступает Тоже там
Михаил Непряхин: вызывает Какой нибудь кейс и Это может Быть селай приложение то Есть ээ Вы просто
Михаил Непряхин: вы пишете сиявая элиту ну То есть вот какая-то да ты Еще откуда взялась
Михаил Непряхин: То есть какая То как У нас вот гоу То есть там с хэлпом Это как бы не проблема на Голову. Сделать там подругается Библиотека
Михаил Непряхин: и вы Превращаете Свое, приложение
Михаил Непряхин: в ком он Лайн интерфейс утелитту и соответственно вы можете Вызвать Команду а под капотом
Михаил Непряхин: Джорница все тот же Ю кейс который Там один Раз, был Написан
Михаил Непряхин: ну здесь Уже Нет гурутины здесь просто вызывается и все
Михаил Непряхин: и и
Михаил Непряхин: ну так вот навскидку, вроде бы все варианты то есть ну вариант в самом деле дофига Там констюмеров много да там может Быть нац
Михаил Непряхин: Тоже свои грутинки крутится вызывает может Быть там куча рэбитен кью
Михаил Непряхин: Тоже там своей грутинки крутится вызывает
Михаил Непряхин: короче как вы поняли вот эта вот часть эскиз,
Михаил Непряхин: он вообще не в курсе а во Всех этих вызывальщиках, они просто вспомогательный код а Поэтому удобно
Михаил Непряхин: абстрагировать юс кейс от этих парней
Михаил Непряхин: чтобы не было никаких Конфликтов ну допустим если вдруг вот этот вот и и просто файл протобав
Михаил Непряхин: с Помощью них генерится Генерация структуры эти структуры оно не специфически
Михаил Непряхин: если вы сделаете эту структуру Аргументом
Михаил Непряхин: который принимает Э кейс то есть если эскиз Будет Принимать вот эту вот сгенерированную протобаф структуру
Михаил Непряхин: то Хтп сервер потом не Сможет воспользоваться этим э кейсом потому Что вы контракт ему закрыли у Него нету этих сгенерированных структур
Михаил Непряхин: тогда вам придется копировать там свою писать да как бы
Михаил Непряхин: так не хочется Делать хочется чтобы вот Логика была универсальная
Михаил Непряхин: и никак Не зависела от вызывающей стороны потому Что вызывающая Сторона она Там вечно работает со Своими Протоколами да Там ну иди с какой то моей. Жизнью он принимаем отдаем ли сон
Михаил Непряхин: здесь Мы продобав принимаем отдаем отдаем про топав здесь Мы можем хоть, про табак принимать хоть закон принимать и еще пятнадцать вариантов разных этих протоколов По которым Мы можем работать
Михаил Непряхин: Ну, Сторонами с этими тут, Попроще
Михаил Непряхин: вот короче для того чтобы У юскейса
Михаил Непряхин: как У самостоятельной сущности, жизнь была проще
Михаил Непряхин: мы вводим такое понятие как дто
Михаил Непряхин: как переводится дто а дто это дата трансфер обджект
Михаил Непряхин: это из миражавы ну, для того вообще изначально была идея создана для того чтобы границу провести чтобы сделать границу. Не просто доменной структурой
Михаил Непряхин: а именно входными выходными данными например, у нас этот
Михаил Непряхин: профиль вот крейд профайр да есть
Михаил Непряхин: значит у него есть входные данные есть выходные данные
Михаил Непряхин: мы конечно можем здесь прямо вот
Михаил Непряхин: по полям сделать все поляк отдельный аргумент можем сделать так чтобы крееть профайл. Уже сразу принимал вот Эту вот нашу доменную структуру
Михаил Непряхин: ну видите ли в чем дело,
Михаил Непряхин: м-м Мы Хотим, Иметь, Контроль над Этой структурой Мы Хотим, сами делать валидацию
Михаил Непряхин: потому что если валидация будет не на уровне из кейса а на уровне вот этого вызывальщика
Михаил Непряхин: то есть вылидаться будет не здесь
Михаил Непряхин: а вот здесь или здесь здесь
Михаил Непряхин: ну во Первых если, вы работаете Одновременно из Этой песть жар птицы вам придется и здесь вылиться Сделать и здесь Влидацию делать
Михаил Непряхин: Но Вы Можете где-то забыть ее сделать короче Неудобно да Поэтому Вы ее делаете один Раз Внутри
Михаил Непряхин: А из Кейса и понимаете что вы ее Никогда не забудете
Михаил Непряхин: а оно нужен, контракт для того чтобы тот кто, вас вызывал
Михаил Непряхин: он Всегда с вами общался на одном языке одними структурами
Михаил Непряхин: как я сказал доменные структуры для Этого не очень подходят потому что доменная структура подразумевается что это что то отражающее бизнес либо. Мапящееся на базу,
Михаил Непряхин: ну иногда и в базу, Делают Сохранение с помощью дто но Я до того использую только на границе между контролерами а да кстати вот эта часть называется контроля вот как бы мы тут говорили вот вот это все
Михаил Непряхин: это контролеры
Михаил Непряхин: это контролеры даже устоявшееся слово вот и я использую дто вот на этой границе
Михаил Непряхин: то есть эээ у меня контролер это ипшный он создает
Михаил Непряхин: гто структуру сходными данными и получает результат тоже в дтво структуре
Михаил Непряхин: и я Их называю консистентами то есть вот у Меня например, называется юскейскереет профайл
Михаил Непряхин: тогда моя структура импута. Будет называться. Клеить профайл. Импут и крейд профайл. Аутут как они выглядят
Михаил Непряхин: нот живут в отдельном файле для простоты
Михаил Непряхин: и значит выходные данные у меня это имя возраст и имайл
Михаил Непряхин: а выходные данные это созданный ее айди
Михаил Непряхин: здесь вы можете увидеть артефакт от джейсона, Поэтому и
Михаил Непряхин: удобно это эти структуры еще использовать для
Михаил Непряхин: а реализации здесь реализации то есть когда вы принимаете запрос от пользователя он допустим похтп придет к вам в джисоне
Михаил Непряхин: вы с Помощью этих структур можете сразу, распасть Энджисон. И превратить в структуру вот эту временную структуру для того чтобы передать ее потом в
Михаил Непряхин: ивкейс и также юс кейс когда потом сделает эту работу отдаст результат
Михаил Непряхин: уже сразу же в структуре которую можно будет здесь реализовать и стерилизация в голландии называется маршей линканмаршлинг
Михаил Непряхин: то есть маршилинг это стерилизация анмаршлинг дес реализация и и если допустим мы работаем с
Михаил Непряхин: про табафом то Там будут свои. Структуры ну. Как. Бы Там в любом Случае
Михаил Непряхин: контроллер джерсичный получит вот Эту структуру просто он ее не сможет сразу использовать и превратить протобав он Там еще и еще одну структуру посредника использует для того чтобы протокол
Михаил Непряхин: ее превратить вот ну тем не менее когда можно как бы
Михаил Непряхин: инжиса он все таки самый частый формат Поэтому в дто Это часто можно увидеть
Михаил Непряхин: То же самое допустим с профилем вот Дуэт и когда я отдаю профиль гет профайл
Михаил Непряхин: значит я принимаю айди то есть это мой контракт будешь кейса удобно когда уюскется из контракт
Михаил Непряхин: а отдаю доменную структуру
Михаил Непряхин: и для того чтобы не заниматься маппингом вот этим постоянным перерывом я даю ее прямо доменную
Михаил Непряхин: и в доменной структуре появляются третий страк теги с джейсоном ну в этот еще Раз и факты это от валидатора то есть у нас есть валидатор который использует Эти, стратегии То есть ну
Михаил Непряхин: эээ для простоты То есть вот быстро. Можно что-то завалидировать а это вот от превращения в резон и обратно
Михаил Непряхин: кто-то говорит что так ни в коем случае делать нельзя что это получается что у нас просачивается, в доменную модель вот эти вот артефакты адрисона, но в бессоне вот так вот устроена стерилизация десериализации,
Михаил Непряхин: если, мы это делать не будем тогда придется прямо на уровне дто создавать копию
Михаил Непряхин: Этой структуры ну просто заниматься тем что вот перекладывать резоны как говорится да То есть как Бы просто заниматься копированием, Ну и если. Можно Избежать то вот
Михаил Непряхин: проще отдать сразу Ну как он домен
Михаил Непряхин: и у вас Все будет. Работать
Михаил Непряхин: плюс значит ээ здесь возникает Еще одно, следствие
Михаил Непряхин: раз эти структуры дто Используются для удобного марша лингаанмар шилинга то а
Михаил Непряхин: по сути они выглядят так как ждет ответ пользователь и они выглядят Так как удобно сделать запрос от пользователя То есть, странно было бы там изобретать что. То Еще промежуточное Другое.
Михаил Непряхин: Отличное от того как нас запрашивает пользователь то есть если, пользователь вот эти вот поля вот он в каком формате шлет в папе ну мы их сразу здесь и принимаем в этом формате
Михаил Непряхин: понятно да что Там со временем это может меняться и тут, придется Там какие-то изменения делать но вот изначально когда вы понимаете что данные вам придут в этом формате вы их вот и в дто тоже в этом же формате и Делаете
Михаил Непряхин: вот то есть дото Удобнее тем что это такой контракт на ньюс кейс и я не парюсь я Всегда делаю Всегда импульс делаюсь Да тут делаю Даже Если там Ну Понятно что Если импутов вообще нет это уж не делаю но Если им туда же состоит из одного поля Например от гет профайл
Михаил Непряхин: у меня вин путя только адишник не столько адишник
Михаил Непряхин: я быть мог бы сделать его а вот Так вот Найди Помидоры стринга Но а
Михаил Непряхин: тогда когда появится Еще одно, поле мне придется его здесь дописать придется Делать изменения Я Поломаю другие места кто это вызывает Ну короче говоря чтобы упростить себе. Жизнь я стандартизирую,
Михаил Непряхин: контракт У юзкейсов
Михаил Непряхин: и получается что юскейцы У меня, это такие микропрограммки Которые тоже, имеют свой контракт он просто видит внутренних структур дто
Михаил Непряхин: просто удобная и такая вот структура посредник
Михаил Непряхин: э которая вот сильно облегчает жизнь во Многом
Михаил Непряхин: вот ну и Анапе становится вернее этот рискей становится более каким-то однородным. Одинаковым вот так
Михаил Непряхин: вопросы? Есть ли здесь вопросы? Давайте значит с Этой частью
Михаил Непряхин: Если. Кто-то голос нам хочет задать то задавать голос.
Илиас Эззахид: Можно колоссм вопрос.
Михаил Непряхин: Дат.
Илиас Эззахид: Аа вы сказали Что.
Илиас Эззахид: Протобав если генери если заниматься кодегенецией эээ этот
Илиас Эззахид: созданный Кот Можешь Там, ломать нашу архитектуру ааа
Илиас Эззахид: как тогда Делать если У нас там как китающий the -хендлеры Есть Граф Кюэль про туба
Илиас Эззахид: то Есть если чтобы Не Ломать архитектуру а если, особенно у нас она одна между многими микросервисами
Илиас Эззахид: то кодегренат кодегенерации становится плохим паторным.
Михаил Непряхин: Ну во-первых мы будем про это отдельно говорить когда про джерси и будем говорить потому. Что тема большая
Михаил Непряхин: а ну если кратко то мы генерированный Код Всегда держим отдельно от э то есть он никак не просачивается нигде не проникает в нашу ваши основные из кейсы
Михаил Непряхин: то есть Мы обособленно от. Него держимся
Михаил Непряхин: и просто используем контракты и просто превращаем и
Михаил Непряхин: там структуры которые были протобавные Мы их мапим вот на эти наши структуры должны и никаких, Проблем, нет на самом деле здесь все просто понятно, потом там дойдем до джерси это посмотрим увидите
Михаил Непряхин: так если взаимодействие. С превожением происходит через телеграмм бот телеграмму Читается контроля ну. Я Не знаю как там телеграмм вызывают По какому протоколу Что Там ну. Там Же все равно учета грибок и
Михаил Непряхин: все Что вызывает наши из кейсы Это все контролеры Поэтому и
Михаил Непряхин: этот структуру папы Пока смотрите То. Есть вот У Меня Я понимаю когда Я Вижу такую структуру Я понимаю что мне запрос программа может начаться с Х Дтп То есть Там Грутина какая-то нахоттп-сервер крутится. Да
Михаил Непряхин: и может Начать М обрабатывать запрос и какая То Грутина крутится. И ждет и скафки сообщения и тоже там дернет какой нибудь из кейс
Михаил Непряхин: так Преобразование для того Другое для того это на Уровне сервиса или где должно Быть и Я и
Михаил Непряхин: либо это делаю ну Если это для того в дто
Михаил Непряхин: смотрите как бы ну Я вижу только один из кейса когда Мы дто Превращаем в структуру Там джерпесишную Допустим да
Михаил Непряхин: а и Ну все остальные Преобразования в основном живут в доминие то есть и
Михаил Непряхин: либо ту, Появляется Частичка либо Фромм Фромм как-то так обычно называется и Иди потом одомен ли Это
Михаил Непряхин: но другого места как Бы и Нет То есть Это все равно будет кирпичиком Это Преобразование
Михаил Непряхин: сетевое оно Нет если бы сетевое Было бы вода повторяю оно Не сетевое где в ньюс-кейсе ну виски если Мы здесь держим либо основной и
Михаил Непряхин: и просто чтобы это не Делать цикл длинным Мы тут еще Маленькие функции сделаем чтобы эти функции уже вызывались в цикле вот
Михаил Непряхин: да а эти все вещи Они органично смотрятся именно в домене
Михаил Непряхин: на так если протобаффа Нет то Можно же забить на него
Михаил Непряхин: а на все Можно забить Так как бы смотрите я все-таки призываю делать через дто сразу. По крайней Мере Попробовать
Михаил Непряхин: Попробуйте да вы можете Попробовать без того а можете с дто как бы много Что Еще было Попробовано но Эволюционно я пришел к тому что я до того использую Всегда
Михаил Непряхин: и даже на вот у Меня, еще появляются структурки свои когда у нас адаптер
Михаил Непряхин: Другой, сервис вот у Меня, здесь Нет но Допустим был бы у нас адаптор Другой сервис значит а
Михаил Непряхин: Это клиент да То есть Допустим у нас Там хат тп это клиент Мы куда-то в другую серию ходим По дтп
Михаил Непряхин: О и Там Я делаю детошки с названием Тоже. Инпутаут
Михаил Непряхин: хотя для Хтп. Исторически принято делать название реквестр спонс
Михаил Непряхин: и так как в целом У нас очень много этих реквестров используется везде мы так сервераем не занимаемся тира пишу У нас стандартные тоже оркестр. Исполнится
Михаил Непряхин: ну и в целом Ведь реквестер, исполнится очень близки и Подлиннее и Начинается оба. Наэро короче говоря в коде Люди часто Путают и ин Путают мне Нравится больше как бы им Путают вот Всегда визуально и
Михаил Непряхин: отличается и удобно и а до того что я использую Только на границе. Сьюзен
Михаил Непряхин: дальше что использовать что не использовать или добавить
Михаил Непряхин: вы все равно должны сами. Провести все эти эксперименты и ну там через два-три проекта когда вы напишите вы поймете, все свои ошибки и в следующий Раз, постараетесь там как-то делать По-другому но проект будет Другой, вы совершите другие ошибки То есть смотрите
Михаил Непряхин: мы плуто вот как бы когда Пишем проекты мы бесконечно Совершаем Ошибки
Михаил Непряхин: Задача Архитектуры сделать Так Чтобы Исправлять Ошибки было Дешево желательно бесплатно
Михаил Непряхин: Чтобы как бы заранее Так Подумать как бы Так когда тут надо было все переделать Чтобы было Не Так Больно шуба эта лапша Не Была как макаронный монстр Очень сильно связаны между Собой и вот Мы занимаемся тем Что Мы делим да вот делим где провести еще границу надо до того не надо до того
Михаил Непряхин: нады интерфейс не надо интерфейс вот здесь у интерфейсов макгонагалл да то есть как бы вот могу не быть интерфейсов легко но практика показывает что если, вы еще проводите границу
Михаил Непряхин: в виде интерфейсов с адаптами да и
Михаил Непряхин: это благостно сказывается на севере диктатуре
Михаил Непряхин: вот ну как бы я не знаю как это работает но вот факт если есть интерфейсы на границе с адаптами вот как Здесь
Михаил Непряхин: сказывается хорошо
Михаил Непряхин: э легко могут и не быть они здесь если тестировать нам не надо моки нам не нужны то интерфейсы технически здесь не нужны
Михаил Непряхин: то же самое и здесь с детошками ну Технически и не нужны ну вот все работать но практика показывает Что если, вы используете детошки
Михаил Непряхин: это лучше, Сказывается на здоровье приложение а вы лучше. Проводите границу
Михаил Непряхин: эээ так где ты удобно когда общаешься с аналитиками фронт и других сразу понят контракт
Михаил Непряхин: ну контракт вообще должен быть либо в лагере либо протопав Поэтому как бы когда я говорю контракт вот здесь ну это скорее Какой контракт Наш внутренний для нас самих так-то контракт по идее он вопенапе да то есть группа напева трей Пожалуйста, с вагеру вот вот он контракт
Михаил Непряхин: ну если, он совпадает с этим ну всем. Удобнее от этого Жить становится
Михаил Непряхин: и конечно Глупо не делать совпадающую вот эту структуру не совпадающую с реальным Контрактом, конечно как к этому. Стоит стремиться
Михаил Непряхин: вализация которая считается Или дурным тоном
Михаил Непряхин: Да Нет Не считается потому что и
Михаил Непряхин: Консолидация тоже интересная история значит я вам говорю Сейчас провалитацию Внутри из кейса вот У нас Есть кейс
Михаил Непряхин: и и Есть Доменная структура и У нее Есть метод солидаций
Михаил Непряхин: а зачем нужен мне тоталитации вот которому виски и сейдерка
Михаил Непряхин: он нужен для того чтобы убедиться что структура в консистентном состоянии что мы Сейчас имеем ввалидные. Данные в этой заменой структуре
Михаил Непряхин: То есть к нам пришли какие-то импу данные
Михаил Непряхин: аа Мы из них состряпали Там не важно как анемичным образом Или с Помощью конструктора об этом уже попозже поговорим о том что тут детоложная тема
Михаил Непряхин: а очнулся стряпали доменную структуру Мы ее провалировали с ок но вот на уровне контролера
Михаил Непряхин: аа тоже может Возникнуть потребность аа провести валидацию на уровне дто
Михаил Непряхин: прямо, вот там тоже что-нибудь такое проверить и вы тогда У аудитории тоже можете написать какую-то функцию волидей
Михаил Непряхин: Но она будет вализировать именно вот входные данные ну как-то это вот короче Не спрашивайте пример и
Михаил Непряхин: ну бывает что не получается здесь вот она здесь тоже возникает можете не методом в лидее сделать можете просто в контроле рф и написать эту валидей как бы ну вот она там больше талинирует
Михаил Непряхин: вот такая тема
Михаил Непряхин: все возможно да все Возможно то есть как Бы э
Михаил Непряхин: я Видел все я Видел все
Михаил Непряхин: и очень, Тяжело провести границу сказать Плохо хорошо ну я Бы сказал допустимо и если эта задача ваша Решает то есть у нас же задача упростить вам жизнь да как бы не усложнить ее упростить уже когда
Михаил Непряхин: м молодым разработчиком спускается какая то, архитектура, или они приходят уже существующий Проект,
Михаил Непряхин: м ну как быть вот эти правила да вот у Меня уже ушел в Два часа для того чтобы вам минимально эти правила рассказать
Михаил Непряхин: они все написаны кровью да то есть они все отвечают эээ ну как бы можно ответить на Вопрос зачем так это как Бы Неспроста тогда
Михаил Непряхин: а оно упрощает реальную жизнь дальше уже думайте там экспериментируйте смотрите сами
Михаил Непряхин: как бы может Быть что-нибудь изобретете прикольно интересное и с теми же дто какую То практику выделить но тут критерий такой если это,
Михаил Непряхин: для читателя болот понятно, и очевидно
Михаил Непряхин: то хорошо если запутано и сложно нужно комментарии писать
Михаил Непряхин: плохо то есть как бы тут Или допустим выбираете между простым и сложным Всегда, выбирайте простое
Михаил Непряхин: Там типа вот написать сложно но Будет мало кода Или а чтобы написать просто надо больше кода ну значит пишите больше колю То есть как бы, трейдов компромисс он должен быть э именно
Михаил Непряхин: и между сложным и простым Выбирайте простое между и
Михаил Непряхин: Или Там Давайте напишем вот Требования У нас Одни
Михаил Непряхин: Но вдруг они Потом Поменяются и надо будет вот Там вот чтобы легко было переписать
Михаил Непряхин: нифига вы не угадаете тоже не партия свод какие Требования Сейчас есть такие пишите Потом Требования другие будут и
Михаил Непряхин: вы все обмажете патерном стратегиях а в самом итоге будет сложно и Не угадайте опять. Же
Михаил Непряхин: можете Объяснить Зачем Рэндер бессонов. По кк а здесь это
Михаил Непряхин: я Всегда делаю Оберточку над тем как я это называется здесь ну вот он где синко называется ну в общем маршелин как бы может называться
Михаил Непряхин: аа видите как Бы довольно много Кода то есть Я Что хочу Я хочу Ууу дать ответ. Хотя ты по серверам
Михаил Непряхин: с определенным кодом Ну, Это просто Куда. Я хочу записать ответ то Есть в тот запрос который Пришел а
Михаил Непряхин: а здесь Боди энни Это любой Объект который Я хочу превратить в Джейсон
Михаил Непряхин: чтобы не писать вот это каждый Раз, просто Тоненькая такая вот короче Хэлпер просто ну как бы это моветон, называть Пакеты Хэлппер Там
Михаил Непряхин: и и вот чтобы здесь много не писать
Михаил Непряхин: я просто говорю что превратив вот это вот вот эту структуру она Там до того чтоная структура И скорее профайла возвращается Мы Увидели Там! Дэкушная структура
Михаил Непряхин: а ну вот она вот эту структуру
Михаил Непряхин: а Преврати в Ресон суда, вот запиши на выход
Михаил Непряхин: чтобы в коннекшн отправить Со статусом ок доктор на смотрешке так короче Это была часть из Чего
Михаил Непряхин: архитектура состоит от на уровне когда у нас уже все проинициализировано и работает
Михаил Непряхин: есть еще Небольшая часть которая отвечает. За инициативу здесь она
Михаил Непряхин: находится пчел здесь водного файля ну короче вот у меня тут Я все в Мейн убрал
Михаил Непряхин: Можно в Папке нетерного создать Папочку Эп и Там это записать аа Чаще делают, так Но вот Здесь показал нам что можно и в мои не это оставлять
Михаил Непряхин: короче есть некоторая часть всяких. Инициаторов конфик надо спасать достать из перемены окружения из файла точка нв и поместить
Михаил Непряхин: в структуру
Михаил Непряхин: конфликт пакета обычно держу на Верхнем уровне чтобы любой дебопс Всегда, залез и посмотрел основные переменные окружения и вообще из Какого конфига состоит наше приложение
Михаил Непряхин: все файлы конфига Находятся в тех пакетах к Которым они относятся это чрезвычайно логично но к сожалению уго разработчиков? Это чуть Пока еще не зафиксировалось
Михаил Непряхин: если конфик относится Всякие инициативы Я Делаю через такие вот Конфиги локальные и обычно конструктор
Михаил Непряхин: который инициативу например сервер он этот конфликт принимает все эти здесь я не стал расписывать Там из чего состоит, мы это еще увидим посмотрим я тут суть как бы сути компонентов архитектуры показываю
Михаил Непряхин: у блогера есть свой конфликт видит много может быть полей, Если
Михаил Непряхин: функция ничего Не отдает а только Инициативу ее принято назвать зенит
Михаил Непряхин: Если Она что-то возвращает То тогда через нее нью-йорк что-то там возвращает ну в случае логера просто ее можно было бы сделать если, бы возвращался например роя
Михаил Непряхин: Эти, все флажки это чтобы из переменных окружения вот этой переменной окружения с таким Названием достать данные Ну тут небольшой фронтчик что По дефолт дефолт Не Можно указание Дефолтное значение Можно указать и можно обязать
Михаил Непряхин: аа чтобы поле. Обязательно было а если, его не будет то приложение не запустится
Михаил Непряхин: а то Есть вот Мы конфигию а получили дальше инициативу вовер
Михаил Непряхин: здесь еще бывает Куча всего и нейтрализация в центре трейсинга оп панциометры
Михаил Непряхин: метрик ну это метреки бывают в оптимметре Внутри
Михаил Непряхин: еще что то какие то инициаторы
Михаил Непряхин: да и то Есть как бы и такая более Инфраструктурная какая-то часть она обычно сразу вначале неницизируется
Михаил Непряхин: потом идет часть сборки компонентов Нашей. Архитектуры как видите здесь
Михаил Непряхин: точно такой же Принцип как сьюзен кэлвин нету смысла здесь размазывать подробности а как там поздравить инициативу как там рэдис инициализируется кафка как инициализироваться то есть
Михаил Непряхин: авторы библиотеки они Всегда дают Широкие возможности по конфигурированию своих
Михаил Непряхин: дети и мы вынуждены Всегда, писать небольшую обертку над тем
Михаил Непряхин: а что Там авторы придумали для того чтобы вот здесь вот
Михаил Непряхин: покороче Опять, же читающему было попроще здесь разобраться что он вообще ненициативу кинцензирован
Михаил Непряхин: по скрю получаем коннекшн резис кавка продюсер
Михаил Непряхин: а дальше мы создаем юс кейс то есть вот мы туда опрокидываем нашей зависимости по зверну прикидываем продюсер опрокидываем получаем наши с кейс получаем его в одном экземпляре
Михаил Непряхин: типа указателю дальше То Есть как Будто сверху у нас идут сетевые адаптации
Михаил Непряхин: Не потому Что их надо инициативы потому Что это кирпичи которые нуждаются в венециализации доменные функции Не нуждаются в венециализации они Там просто работают и все Поэтому сперва идут вот адапторы, инициаторы,
Михаил Непряхин: ну потом получается Мы собираем нашу из кейс потому Что у него других-то зависимостей нет чтобы собрать. Из кейса нужны Только анаперы
Михаил Непряхин: а дальше идет очередь вызывающей, стороне контролеров и тут, может Быть
Михаил Непряхин: Один контролер много Что хоть пять контролеров может Быть да у нас приложение Одновременно может быть и сервером и сиавай Там Только в зависимости От Флагов сборки там оно собирается в нужной конференции Или оно может быть Одновременно исключительно Дтп сервером
Михаил Непряхин: и Кафка Конюмера вот как здесь например, у меня приложение Одновременно и работает в цикле гурутина
Михаил Непряхин: консию Медкавку вычитывает Кафку и Одновременно сервер который обслуживает запросы ждет когда к нему кто то обратится
Михаил Непряхин: а еще может быть Одновременно и джордж и сервер тоже здесь запущен ну естественно во всех. Этих контролерах Внутри где-то есть Гортинка
Михаил Непряхин: где-то ну здесь будет и грутинка да ну в х Дтп сервер я вам же Показывал где там грутинка
Михаил Непряхин: а там точно там есть
Михаил Непряхин: и вот и соответственно юзкейс он будет вызываться над этими товарищами контролерами Поэтому мы естественно его туда должны пробросить
Михаил Непряхин: вот мы его туда пробрасываем ну вот вы заранее создали то пробросили
Михаил Непряхин: и здесь мы считаем что наши приложения запущены работают а но
Михаил Непряхин: также большой частью важной частью архитектуры является, ингрейс фоуша даун Судовой кассу даунта грамотное завершение работы нашего приложения
Михаил Непряхин: так как у нас Есть сетевые зависимости
Михаил Непряхин: и в момент завершения приложения например, нам сигнал посылает кубернетис губернатор посылает нам сигнал сик терм
Михаил Непряхин: а этот сигнал Анторопт Это то же самое что контрце он срабатывает когда мы кон контраце, нажимаем это что будет для локальной откладки а губернаторы будут посылать вот этот сигнал в сектором когда он его посылает он говорит Что все
Михаил Непряхин: пора заканчиваться закрывайся
Михаил Непряхин: Если Там тайм-аут выйдет Если Мы не закоемся То он уже кинет нас по-настоящему но это Мягко он говорит и
Михаил Непряхин: а это мы просто создаем канал чтобы ну так вот такой синтез чтобы получить этот сигнал и дальше мы этот сигнал
Михаил Непряхин: ждем, то есть вот мы здесь блокируемся мы здесь заблокировались до тех пор пока не придет один из этих сигналов
Михаил Непряхин: и все и вот здесь мы зависли заблокировались приложение работает Оно принимает сообщение из сказки Оно обрабатывает
Михаил Непряхин: запрос эпоха дтп серу дальше приходит сигнал
Михаил Непряхин: мы здесь разблокировались потому что получили сигнал ну Можно его Влог записать Можно не писать Так понятно что как, Бы Других вариантов Тут нет Но этот сигнал получаем
Михаил Непряхин: и Мы должны грамотно закрыть ресурсы кафка конюмер закрывается, первым
Михаил Непряхин: Хотят и пояснить Ну хотя это присереры а любакавка контент они должны закрыться Первыми, потому что Мы хотим, больше Не Принимать запросы.
Михаил Непряхин: А Дальше уже и
Михаил Непряхин: а лучше чтобы эта функция квот Не возвращала ошибку чтобы Не надо было действовать в Этой гармонице тамработку ошибок Поэтому я предпочитаю внутри коуза вот здесь
Михаил Непряхин: аа обрабатывать ошибку если, что писать влог именно, он в этом месте чтобы вот это Место, оставалось чистым
Михаил Непряхин: и есть тут вариант я одно. Время упарывался делал обязательно через диферы и
Михаил Непряхин: немножко замусора вот этот этот Год хотелось бы его чуть-чуть почище видеть и управлять вот в этом месте квозами как то, удобнее ты видишь порядок в каком они завершаются
Михаил Непряхин: и важно конечно У
Михаил Непряхин: От Х Дтп сервер умеет нормально закрываться Кафка Не умеет нормально закрываться ей приходится. Там Еще дополнительные
Михаил Непряхин: а Давайте Посмотрим реализацию как грамотно закрыть кафку
Михаил Непряхин: в одной с остальным вроде Проблем нету только сказка обычный гемор
Михаил Непряхин: вот и соответственно когда мы выходим все у нас приложение закрыто оно Не, работает
Михаил Непряхин: а вот и нетализационный код и соответственно его где То, надо помешать где Мы его помещаем вот эти вот все конструкторы ну смотрите это же вещи переиспользуемые так скорее всего вы их
Михаил Непряхин: потянете в другие проекты Раз, так почему бы их не поместить в папке пг на верхнем уровне она для этого Не нужна То есть туда, помещаются какие-то переиспользуемые вещи конструктор это про сервера но он будет плюс-минус За всех
Михаил Непряхин: а во всех проектах Одинаковый блогер какой-то да тоже бодрый знак там метрики
Михаил Непряхин: а ну понятно Что есть метрки кастомные а есть метрики Х дтп сервера но они тоже будут Везде одинаковые их тоже можно как то абстрагировать
Михаил Непряхин: суппан телеметры работа ну вот какие-то Хэлпперы да Там с маршингом ан марфингом ну тамзакционные какие-то Раперы У меня такой будет рапер ну потом Посмотрим реализацию тоже его можно абстрагировать и вот эти, вот вещи они уезжают в приватной репозитории
Михаил Непряхин: в отдельной модули ну Там типа Проект, был обычно назад как-нибудь липс Но там
Михаил Непряхин: и вы можете Переиспользовать Это в Других. Проектах ну и в целом как бы так смотрите если понимаете что что-то можно вынести что постоянно
Михаил Непряхин: вы пишете. Что Ли шубы Кот Не копировать
Михаил Непряхин: а вы можете его Вынести сперва в пг на первом этапе. А потом постепенно грибы
Михаил Непряхин: вот и Это, все из Чего состоит архитектура
Михаил Непряхин: То есть понятно, что, вот в доменах вот Здесь еще Здесь как, я сказал свой мир
Михаил Непряхин: а ну в большинстве проектах вы будете видеть такую историю ну даже не, такую вот даже вот этот конструктор это уже такой элемент дидижней даже вот это вы не будете видеть на самом деле вы будете чаще всего видеть просто
Михаил Непряхин: просто профиль ну Или там кутовалидацию и может какие-то там небольшие, функции ааа
Михаил Непряхин: аа То Есть обычные коды они вот так утряют
Михаил Непряхин: вот аа если у вас развесится Отменная модель, ну соответственно у вас появляются здесь Внутри папки домен на папке
Михаил Непряхин: а уже с конкретными поддоменами и это и
Михаил Непряхин: Если вы поймете ну поработаете с Этой Архитектурой Дальше вы уже можете думать, О своих каких-то там Оптимизациях если вы ее поймете прочувствуете
Михаил Непряхин: короче какие это уже
Михаил Непряхин: приспособление к проекту именно но дефолтна как Будто эта архитектура закрывает все потребности вот Поэтому мы тренироваться. Будем, на ней
Михаил Непряхин: так давайте значит куньте обратную связь или Понятно силеок
Михаил Непряхин: Нет ли Какого. То Отражения Непонимания.
David R: Можно, вопросы.
Михаил Непряхин: Да Давайте.
David R: Нормально слышно.
Михаил Непряхин: Да.
David R: А вопрос такой а Сначала когда Пилится, Проект, с Нуля я не думаю Что Всегда этот Проект, пишется прям вот э микросервисами
David R: наверное Сначала делается какой-то монолит и монолит наверное Это Будет модульный монолит чтобы можно было потом или конкретную модуль Вынести в микросервис или вообще все разбить на микросервиса и запускать все отдельно
David R: и в данном случае мы можем текущую и.
Михаил Непряхин: И это.
David R: У нас получается. Модульный монолит.
David R: В и там из каждого Модуля Уже подключался конкретный и
David R: а в данном случае как можно вот не писать ну получать у нас файл мэйн Будет раздуваться. И раздуваться как можно его сделать Так чтобы файл мэн тоже был
David R: Таким аляхабом который Будет все вот эти роутеры в одно место, собирать и Там а-ля условно
David R: старт, Или ран запускать чтобы Это, было такое короткое.
Михаил Непряхин: Ну да естественно как бы это ваш, вопрос это классическая классическая задача отвестись, естественно
Михаил Непряхин: тоже есть пример у меня на этот счет вот
Михаил Непряхин: короче говоря час репозитора из кино вот этот репозитор
Михаил Непряхин: это вот У меня, максимально тут, как, бы учебный проект
Михаил Непряхин: только что Мы смотрели то есть Я тут,
Михаил Непряхин: и старался, упростить вот но до Самых вот Основ да чтобы проще, было Некуда понятно, что в реальной жизни все сильно сложнее и ну вот мейн обычно Это, просто ведь, у Шуток в центре панцилемметры ну как бы блогер вот а дальше уже
Михаил Непряхин: дальше у нас идет уже ответвление
Михаил Непряхин: а тут видите можно Делать вот так вот можно выделять зависимости вот так вот прямо, по Контейнерам дальше этот контейнер проббросить ну вот мы тут, все пронициализировали адапты пронициализировали
Михаил Непряхин: дальше идет, инициация доменов вот у меня здесь как Раз, я как будто бы начал такой проект
Михаил Непряхин: модуль не монолит значит я подразумеваю Что потом когда-то я оставляю Себе, возможность
Михаил Непряхин: эпо будет самостоятельным сервисом но Сейчас пока это модульный монолит я там внутри делаю такую структуру заранее ну про которую то что. Говорили,
Михаил Непряхин: и отдельно его собираю вот здесь внутрь пробрался. В Вот этот Вот контейнерчик, с зависимостями и Вот отдельно собираю здесь Вот Вот этот Вот конкретный Джентльмен
Михаил Непряхин: ну и Вот собственно То что, вы только что, сказали ну вот как бы это то же самое.
David R: А получается оно Собирается в единую. Структуру Внутри интернета.
Михаил Непряхин: Да оно собирается не то что даже в единую структуру просто здесь все происходит создает через кейс из зависимостей
Михаил Непряхин: и ну вот надо вот роутер вот раутер надо кафка кончумер вот кавказка конец умер и так далее то есть это становится самостоятельной программой в рамках
Михаил Непряхин: нашли нашегоронтайма их может быть бесконечно много как бы
Михаил Непряхин: и ничего же вас не ограничивает то есть прантай может быть гигантский. Вы можете кучу кучу всего контролеров крутить куча это может быть очень огромный, монолит то есть как бы вот это уже позволяет в принципе сделать ну плюс-минус что угодно
Михаил Непряхин: но так обычно Не Делают потому что все-таки обычно выделяются отмены быстро и уже там и
Михаил Непряхин: будь как бы у молитва Еще минус что вы постоянно. С коллегами должны их толкаться да конечно в разных папках, будете делать Но все равно
Михаил Непряхин: гу-м надо Будет конфликт решать стендаря ну хорошо такое.
David R: И и да может еще что-то там валиться.
Михаил Непряхин: Может
Михаил Непряхин: аа обычно Ну смотрите консю Мир. Можно отдельно. Запустить здесь. Просто Единица запуска если вы хотите, конюмер отдельно. Запустить вы можете собрать отдельный конюмер назвать его здесь эп дефис конюмер
Михаил Непряхин: Я Всегда называю главное приложение эп
Михаил Непряхин: по одной причине чтобы в доктор файли вот это вот не переписывать нокин, фару получается универсальный
Михаил Непряхин: вот Поэтому как бы если одно приложение то он Всегда называетсяэп ну и как бы главное ну здесь Тоже, ведь и
Михаил Непряхин: один бинарник вот и все
Михаил Непряхин: так все из лекцию цвешь в приятной весне спасибо Окей так ладно
Михаил Непряхин: следует на следующем уроке уже будем разговаривать про подходы котфест написание сервера
Михаил Непряхин: уже был такой более боевой пример и
Михаил Непряхин: шубу Уменьшить. Количество файлов и абстракций тут так слишком много сложностей приходится. Объяснять Поэтому здесь у меня, как бы задача была
Михаил Непряхин: провести границы между Модулями да, как бы объяснить какие типы бывают этих модельков
Михаил Непряхин: и самое главное чтобы вы поняли да как вот выделять
Михаил Непряхин: какие-то вещи такие как адапторы отдельно.
Михаил Непряхин: И показать как оно все Собирается
Михаил Непряхин: вот если бы мне кто-то такое вот прям показал типа
Михаил Непряхин: лет пять назад ну нет больше лет семь, назад Скажу. Вот если бы что-нибудь такое было или вы этому учили хоть где-то еще
Михаил Непряхин: то блин я бы сэкономил кучу кучу времени. И проекты были, бы сильно лучше
Михаил Непряхин: вот Поэтому завидую вам Что У вас Есть такая возможность
Михаил Непряхин: вот ну. Ладно все Тогда Давайте всем. Пока увидимся на вторник.