WEBVTT

1
00:04:44.480 --> 00:04:48.590
Михаил Непряхин: Максим привет как видно Слышно плюсики пожалуйста, Поставьте

2
00:04:53.400 --> 00:04:57.410
Михаил Непряхин: Сейчас вначале тоже Тормозит или У вас что-то

3
00:05:05.550 --> 00:05:07.890
Михаил Непряхин: да это конечно Странное поведение

4
00:05:10.940 --> 00:05:19.860
Михаил Непряхин: нравится нормально а потом типа нормально достановится конечно прикол

5
00:05:21.690 --> 00:05:30.900
Михаил Непряхин: так значит сегодня сегодня Поговорим Об архитектуре приложение да

6
00:05:38.970 --> 00:05:46.250
Михаил Непряхин: так а Кстати, да О продомашку, я видел.

7
00:05:46.490 --> 00:05:49.920
Михаил Непряхин: Даже кто-то сделал даже кто сделал домашку,

8
00:05:51.910 --> 00:05:57.389
Михаил Непряхин: та один Человек где ничего я сделал сервис Ну, прикольный даже работать

9
00:05:59.010 --> 00:06:01.880
Михаил Непряхин: Ну, это про температуру про Погоду,

10
00:06:02.390 --> 00:06:16.440
Михаил Непряхин: тут, короче Задается город тут, сочи Сейчас не пустим Казань да хочу работать вот в общем

11
00:06:16.770 --> 00:06:21.199
Михаил Непряхин: рекомендую все равно эту бумажку сделать что она довольно полезная

12
00:06:21.400 --> 00:06:24.419
Михаил Непряхин: в целом для понимания. Как оно работает

13
00:06:31.240 --> 00:06:34.500
Михаил Непряхин: так про архитектуру с чего начать

14
00:06:37.530 --> 00:06:45.169
Михаил Непряхин: ну смотрите значит мы можем ничего нам не мешает в Принципе написать проект, в одной файере

15
00:06:45.520 --> 00:06:49.480
Михаил Непряхин: ну ты вот очень длинный файв да но тем не менее

16
00:06:49.790 --> 00:06:57.669
Михаил Непряхин: м Мы бы Там его разбили на какие То части, значит вот у нас была бы какая То часть файла ну Допустим он Там был бы

17
00:06:57.920 --> 00:07:08.510
Михаил Непряхин: две тысячи строк вот но какая то бы часть была посвящена инициативы всего Что У нас Есть

18
00:07:09.960 --> 00:07:21.360
Михаил Непряхин: а видите ли У нас в отличие от Скриптовых языков а у Гоу есть стейт есть рантайм

19
00:07:24.020 --> 00:07:34.429
Михаил Непряхин: Поэтому если вы Скриптовых языках ничего не можете сохранить вы Вынуждены обязательно допустим кэш для коша Использовать радис

20
00:07:35.570 --> 00:07:38.130
Михаил Непряхин: то мы в голову можем

21
00:07:38.390 --> 00:07:46.809
Михаил Непряхин: просто все в фронтаме хранить то Есть создать свой маленький рейс и он будет у нас с тем конфликтом который нам нужен

22
00:07:47.040 --> 00:07:53.400
Михаил Непряхин: ну потому, Что для Родителей еще ведь нужен жестевой поход. То Здесь у нас сеть чтобы не восходить а когда У нас

23
00:07:53.640 --> 00:07:58.649
Михаил Непряхин: свой собственный радис внутри приложения У нас Сети Нет работает быстрее

24
00:07:58.810 --> 00:08:08.780
Михаил Непряхин: вот ну понятно дело что. С базой данных если У нас база данных какая нибудь а позгрыз то Что тут Что там Что на скриптовом языке Что в Голову. Будет

25
00:08:08.980 --> 00:08:13.079
Михаил Непряхин: сетевой подход. В эту базу дан чтобы что то сделать

26
00:08:14.150 --> 00:08:20.460
Михаил Непряхин: Так вот чтобы создать вот этот вот а изначальный какой-то стоит

27
00:08:21.830 --> 00:08:24.539
Михаил Непряхин: ну то есть привести в готовность

28
00:08:25.640 --> 00:08:29.229
Михаил Непряхин: Аа разные Структуры для того чтобы они не Могли работать.

29
00:08:29.660 --> 00:08:33.319
Михаил Непряхин: А и какая то существенная часть

30
00:08:33.630 --> 00:08:40.720
Михаил Непряхин: в нашем одном Файле занимал в Этот Год Я и да Им

31
00:08:41.150 --> 00:08:44.910
Михаил Непряхин: У нас был бы Была бы секция посвященная

32
00:08:45.300 --> 00:08:48.769
Михаил Непряхин: аа хтп серверу ну Мы Пока рассматриваем

33
00:08:48.910 --> 00:08:50.910
Михаил Непряхин: снова в основном Мы имеем дело

34
00:08:51.300 --> 00:08:58.940
Михаил Непряхин: схват Это по сервером Поэтому вот Мы считаем Что какая то часть, посвящена Дтп Серверу ну какая то часть, посвящена

35
00:08:59.560 --> 00:09:03.440
Михаил Непряхин: о базе восхождения в базу, данных. В польше с Номера

36
00:09:03.860 --> 00:09:06.759
Михаил Непряхин: опять, же у нас основная база это поиск.

37
00:09:07.020 --> 00:09:17.129
Михаил Непряхин: Стекки и какая То бы, часть кода отвечала ну, за самую логику то есть что вообще происходит

38
00:09:18.510 --> 00:09:22.310
Михаил Непряхин: а Можно ли ну, то есть как бы э

39
00:09:22.670 --> 00:09:26.290
Михаил Непряхин: вот это вот выделение части с логикой

40
00:09:28.090 --> 00:09:30.799
Михаил Непряхин: Она не обязательна на самом деле

41
00:09:30.920 --> 00:09:40.649
Михаил Непряхин: то есть мы можем вот прямо, вот хтп роучки например, Иметь. Часть Этой логики и оно все будет работать

42
00:09:41.700 --> 00:09:46.549
Михаил Непряхин: вот Это опять Же для удобства То есть Как бы выносится в отдельную Секцию для того чтобы

43
00:09:46.870 --> 00:09:50.650
Михаил Непряхин: ну Не путать ух с котлетами ну Это же как Бы

44
00:09:50.990 --> 00:09:54.980
Михаил Непряхин: а в чем проблема? У нас Кода очень много Их Прям Реально много

45
00:09:55.390 --> 00:09:59.730
Михаил Непряхин: и чтобы как-то какие-то границы провести

46
00:10:00.710 --> 00:10:07.620
Михаил Непряхин: а Начинается вот это вот Придумывание по Какому, Признаку разделить как Их разделить

47
00:10:08.280 --> 00:10:11.429
Михаил Непряхин: а как сделать так чтобы изменения

48
00:10:11.720 --> 00:10:26.590
Михаил Непряхин: небольшие, Не касались. Переписывания, всего проекта чтобы это легко Делать было и вот Поэтому как бы архитектура и появляется для того чтобы решить эту проблему ну во Первых да какую проблему решила архитектура

49
00:10:26.740 --> 00:10:34.500
Михаил Непряхин: значит это Борьба с сложностью значит Мы хотим, Бороться со сложностью

50
00:10:37.480 --> 00:10:39.949
Михаил Непряхин: Ну на самом, деле дождь Не То что там прям

51
00:10:40.420 --> 00:10:46.519
Михаил Непряхин: несколько пунктов, один Пункт главная проблема которую решает архитектура борьба со сложностью

52
00:10:46.770 --> 00:10:55.210
Михаил Непряхин: и дальше уже там состоит из-под пункта значит как именно решается борьба со сложностью Там от Разделения

53
00:10:58.600 --> 00:11:09.540
Михаил Непряхин: но Куски Там на какие-то логические Куски ода катагруппировка Это выделение границ.

54
00:11:12.630 --> 00:11:18.459
Михаил Непряхин: Какие-то границы где вот они проходят для того чтобы

55
00:11:20.090 --> 00:11:23.779
Михаил Непряхин: отделить какие то. То. Есть сделать какие то. Модули

56
00:11:24.180 --> 00:11:32.289
Михаил Непряхин: э что в микросервисах у нас вот когда на микросервис и бьем на наше приложение

57
00:11:33.070 --> 00:11:36.259
Михаил Непряхин: что когда мода была на монолиты

58
00:11:38.260 --> 00:11:44.100
Михаил Непряхин: просто вот ми между микросервисами здесь появилась сеть а

59
00:11:44.560 --> 00:11:46.299
Михаил Непряхин: то, есть как бы есть какие-то модули

60
00:11:48.240 --> 00:12:04.009
Михаил Непряхин: модули только когда это микросервис это у нас здесь вот сеть между ними появляется а если у нас монолит То Этой сети Нет То Есть потому что все это в рамках одного ронтайма происходит и Мы экономим на сети

61
00:12:04.700 --> 00:12:07.800
Михаил Непряхин: вот и Поэтому вот это вот

62
00:12:11.610 --> 00:12:18.080
Михаил Непряхин: Там, типа лет семь назад когда микросервисы шагали По планете семи Большими Шагами

63
00:12:18.830 --> 00:12:23.670
Михаил Непряхин: они Преподносились как решение всех. Проблем решения всех. Бед

64
00:12:25.140 --> 00:12:34.489
Михаил Непряхин: а на самом деле как бы часть проблем конечно главная решимость но и Появились другие проблемы например когда у вас самая большая проблема,

65
00:12:35.530 --> 00:12:38.159
Михаил Непряхин: аа когда у вас есть микросервисы

66
00:12:39.080 --> 00:12:43.860
Михаил Непряхин: точнее Давайте так, как У вас один сервис и одна база данных

67
00:12:46.480 --> 00:12:50.789
Михаил Непряхин: когда У вас много сервисов У Каждого сервиса своя база данных

68
00:12:50.990 --> 00:12:56.609
Михаил Непряхин: то есть как бы, принято так вот У вас сервис и рядышком с ним живет своя собственная база данных

69
00:12:56.910 --> 00:12:58.789
Михаил Непряхин: и идея в том, что.

70
00:12:59.260 --> 00:13:04.200
Михаил Непряхин: Чужой сервис в чужую базы данных не ходит вот они только в свою базу, данных ходят

71
00:13:04.910 --> 00:13:13.469
Михаил Непряхин: а если, чужой сервис вроде ходит в вашу базу, данных это антипатран антипатия называется шеррот, дето бэйс

72
00:13:13.800 --> 00:13:17.199
Михаил Непряхин: Поэтому у Каждого микросервиса своя база данных

73
00:13:17.610 --> 00:13:20.739
Михаил Непряхин: им монолита Была Раньше, своя база данных

74
00:13:21.370 --> 00:13:25.899
Михаил Непряхин: Но только когда У вас Были транзакции. В рамках Монолита

75
00:13:26.370 --> 00:13:35.600
Михаил Непряхин: То У вас вот Там транзакция начиналась а Там Беги Дискомит и все было хорошо

76
00:13:35.770 --> 00:13:44.189
Михаил Непряхин: с Транзактом Проблем, Не было а когда у вас вот много микросервисов то у вас появляются распределенные транзакции

77
00:13:45.910 --> 00:13:48.330
Михаил Непряхин: а ну то Есть вот как бы Поэтому

78
00:13:49.240 --> 00:13:56.510
Михаил Непряхин: вот это проделение Еще если, у вас вы понимаете что у вас есть редакции между микросервисами

79
00:13:56.750 --> 00:14:07.910
Михаил Непряхин: то не надо их Делать отдельными сервисами сделать один очень очень много сэкономить на головнике с распределенными транзакциями Нет

80
00:14:08.160 --> 00:14:13.019
Михаил Непряхин: То есть вот Это вот критерий как правильно поделить

81
00:14:13.720 --> 00:14:23.430
Михаил Непряхин: он ну как бы он Не имеет какой-то четкой формулировки Не имеет понятного а определение и и

82
00:14:23.910 --> 00:14:26.540
Михаил Непряхин: и как и все в Принципе в архитектуре

83
00:14:26.990 --> 00:14:35.219
Михаил Непряхин: то есть если, вы ну понятно что у нас будет какой-то шабон да мы будем, смотреть Как примерно делать

84
00:14:35.460 --> 00:14:47.700
Михаил Непряхин: как как мы будем, делать архитектуру ну вот Мы по этому шаблону будем работать то есть у нас будут отдельные вот свои свои содадаторами контролерами и доменом для того и с кейсами вот мы в Этой модели будем работать.

85
00:14:49.870 --> 00:14:54.869
Михаил Непряхин: Он но цель на самом деле донести принципы

86
00:14:55.060 --> 00:15:00.740
Михаил Непряхин: и стараться постоянно отвечать на вопрос зачем то есть как будут думать. Размышлять

87
00:15:01.070 --> 00:15:04.850
Михаил Непряхин: а Что Мы Теряем в Этом подходе Что Мы выигрываем

88
00:15:05.110 --> 00:15:10.090
Михаил Непряхин: и вот Так вот Там, примерно золотая середина где-то появится

89
00:15:10.650 --> 00:15:18.069
Михаил Непряхин: и вы все равно будете постоянно. Экспериментировать То есть У вас все равно сервисы будут отличаться один От другого

90
00:15:18.810 --> 00:15:25.259
Михаил Непряхин: а конечно если Вы Работаете в команде если Вы темлит то в ваших. Интересах

91
00:15:25.570 --> 00:15:28.320
Михаил Непряхин: что вот У вас Есть Допустим три сервиса

92
00:15:28.560 --> 00:15:32.070
Михаил Непряхин: команде чтобы Они все Были Одинаковыми.

93
00:15:32.550 --> 00:15:51.720
Михаил Непряхин: Потому что если. Они будут разными У вас люди в подчинении и они начинают специализироваться на своих каких-то Кусках и они ну им трудно будет переключаться между ними вот но Разработчики если, им Не фиксировать какую То конкретную Там структуру папок

94
00:15:51.720 --> 00:16:04.889
Михаил Непряхин: они все равно постоянно экспериментируют постоянно Ищут какие-то более удачные варианты То Есть тут так попробовали Там сяк и очень все равно очень сильно зависит зависит от Домены То есть вот

95
00:16:04.890 --> 00:16:14.339
Михаил Непряхин: У вас есть какой-то Предыдущий опыт да То есть вот если вы бендер например То У вас там Сто процентов есть какое-то свое видение Но Вот вы до этого работали на каком-то фореморке

96
00:16:14.800 --> 00:16:19.150
Михаил Непряхин: с каким-то языком и У вас Примерно

97
00:16:19.270 --> 00:16:24.309
Михаил Непряхин: есть видение как вы Вот раскладываете Кот по папкам

98
00:16:25.200 --> 00:16:35.469
Михаил Непряхин: ну понятно что Если, вы с фронта вам чуть сложнее ну да вот как бы смотрите на текущую вот структуру как Я буду показывать

99
00:16:35.690 --> 00:16:46.679
Михаил Непряхин: Вот Но в целом здесь Нет каких То дом и постоянно. Идет. Процесс поиска Что еще Можно

100
00:16:47.430 --> 00:16:52.470
Михаил Непряхин: Подкинуть как еще Можно разделить как, Еще Можно упростить жизнь

101
00:16:52.890 --> 00:17:04.610
Михаил Непряхин: и но в целом вот этот вот Ммм вот этот вариант структуры, он такой ну близко к эталонному, То Есть вот этот вот То если вы будете по нему делать Проект

102
00:17:05.339 --> 00:17:15.809
Михаил Непряхин: ну это будет в Принципе вот плюс-минус как и в любом Другом Языке какие-то сложившиеся практики бенджамин я Имею в виду вот но вообще чем новея язык.

103
00:17:16.260 --> 00:17:25.840
Михаил Непряхин: Типа там кудрин либо ну Раз, там как бы Своя Философия Там какой-то сложившаяся. Нет

104
00:17:26.450 --> 00:17:35.319
Михаил Непряхин: Архитектуры тем ну. Чем на язык тем больше как, бы Прогрессивнее вот эта. Вот структура и больше

105
00:17:35.500 --> 00:17:42.130
Михаил Непряхин: Она заточена на То чтобы да была Гибкость То Есть

106
00:17:43.660 --> 00:17:48.649
Михаил Непряхин: в чем проблема да когда Мы будем писать все в одном файле

107
00:17:49.680 --> 00:17:53.219
Михаил Непряхин: Мы захотим делать какие то изменения

108
00:17:53.560 --> 00:18:01.670
Михаил Непряхин: Ну, то есть про Будет проходить Время мы будем дописывать какую то Логику и и можно Это выразить графиком

109
00:18:04.560 --> 00:18:10.130
Михаил Непряхин: значит вот у нас ээ здесь время

110
00:18:10.400 --> 00:18:17.830
Михаил Непряхин: по Этой шкале а по Этой шкале ну как, бы время проходит а по Этой шкале сложность

111
00:18:19.270 --> 00:18:30.369
Михаил Непряхин: сложность ну сложность это в скобочках как долгие доработки то есть это тоже время только это время как бы жизненного цикла проекта а это время

112
00:18:30.580 --> 00:18:35.190
Михаил Непряхин: на Доработку по Стечению времени ну Будем говорить Что это сложность

113
00:18:35.320 --> 00:18:39.850
Михаил Непряхин: и Вот вначале Мы очень за короткое Время

114
00:18:39.990 --> 00:18:50.420
Михаил Непряхин: Можем Быстро Делать какие то изменения но потом с течением временем сложность растет очень сильно

115
00:18:50.760 --> 00:18:53.809
Михаил Непряхин: и вот по сути наша задача

116
00:18:54.440 --> 00:19:00.619
Михаил Непряхин: вот Эту кривую ну вот из этого состояния сделать чтобы Она была ну Примерно вот Так вот

117
00:19:00.820 --> 00:19:05.930
Михаил Непряхин: Или Там Пусть и вначале Мы долго Будем Делать доработки но Потом чтобы вот Она росла очень медленно

118
00:19:06.470 --> 00:19:10.599
Михаил Непряхин: короче если растет быстро, то типа где то уже вот здесь

119
00:19:11.010 --> 00:19:27.039
Михаил Непряхин: э Мы все Проект Мы обязаны переписать Не то что обязаны его рациональнее переписать заново потому что его поддерживать становиться, невозможно вот а и когда у вас Хорошая архитектура то в Принципе вы какую-то верха в начале

120
00:19:27.540 --> 00:19:41.639
Михаил Непряхин: То Есть У вас будет чуть дольше все делается потому Что Там какие-то Бойлерполеит какие-то шабовые нарушения, ну в Принципе вот эта кривая она такая как бы сложность изменения проекта она со временем не Будет сильно меняться

121
00:19:41.960 --> 00:19:50.699
Михаил Непряхин: ну это как бы так условно если вы один будете работать на проекте если к вам кто нибудь придет то он все равно там все сломает и у вас там все запутается и

122
00:19:51.020 --> 00:19:59.090
Михаил Непряхин: здесь к сожалению. Никакие кудрин Не помогают потому Что как бы да Есть Окей Практика у интервью Но она такая как бы это

123
00:19:59.270 --> 00:20:10.910
Михаил Непряхин: Хоть что нибудь лучше чем ничего Но Если коллега Написал полную фигню как правило вы Вам ничего не остается кроме как там какие То косметические правки ввести и принять это, дело

124
00:20:11.270 --> 00:20:15.420
Михаил Непряхин: вот аа Поэтому в наших интересах

125
00:20:16.470 --> 00:20:26.860
Михаил Непряхин: сделать архитектуру таким образом чтобы были понятные правила потому что если правил. Нет или они Какие То Сложные

126
00:20:27.400 --> 00:20:32.060
Михаил Непряхин: То Вы Не сможете интервью, объяснить что он сделал Не так

127
00:20:32.150 --> 00:20:49.979
Михаил Непряхин: ну и вообще если Человек видит какие-то Вот как Вот до этого было Написано там Модле То Он Не дурак Он все равно как бы видит считывает Систему и понимает как вносить изменения в эту систему Если система Есть

128
00:20:50.370 --> 00:20:57.530
Михаил Непряхин: Поэтому важно. Чтобы эта система правил. Была Несложная логичная

129
00:20:57.680 --> 00:21:06.420
Михаил Непряхин: и Не Противоречия каким-то Там, Внутренним чувствам Прекрасного вот этого человека который будет делать доработки вот Поэтому он

130
00:21:07.170 --> 00:21:14.269
Михаил Непряхин: Э когда мы говорим об архитектуре да как и Подытоже отчего мы добиваемся мы Хотим, чтобы были. Правила

131
00:21:15.000 --> 00:21:29.019
Михаил Непряхин: по которым пишется пишутся части. Проекта мы Хотим, чтобы эти правила были. Простые как можно проще уж сложные правила не будут прерываться, вот проблема дидди вот есть такая практика дереди

132
00:21:29.450 --> 00:21:46.699
Михаил Непряхин: почему не прерывается слишком сложно слишком сложно слишком много правил написали две книги ну коммун то есть Как бы что-то сложное оно Обречено на смерть ну илины путаницы да то есть Как бы все понимают дядя по-своему вот и

133
00:21:46.910 --> 00:21:58.219
Михаил Непряхин: значит с другой стороны архитектура Должна Позволять легко Делать доработки. Потом чтобы это Было Недорого

134
00:21:58.660 --> 00:22:05.149
Михаил Непряхин: ну а какая бы ни была хорошая архитектура если у вас Проект, динамично развивается

135
00:22:05.680 --> 00:22:11.480
Михаил Непряхин: то ну все равно когда то настанет момент когда его надо будет переписать

136
00:22:12.210 --> 00:22:23.439
Михаил Непряхин: неминуемо как бы сто процентов? Когда вы Пишите проект и понимаете что вы будете долго на нем работать ну в Этой Компании например да То просто как бы фиксируйте У себя в голове это будет все Переписано

137
00:22:23.940 --> 00:22:37.590
Михаил Непряхин: если это будет Активно развиваться То это будет Переписан через полгода если это будет ну есть провер есть сервисы Которые совсем слабо развиваются ну значит бот переписано через Два года через три года ну как То Так

138
00:22:37.710 --> 00:22:42.559
Михаил Непряхин: но если что То активное Пишется неминуемо будет Переписано

139
00:22:42.730 --> 00:22:46.299
Михаил Непряхин: Это значит вы должны заранее проект писать Так

140
00:22:46.430 --> 00:22:49.010
Михаил Непряхин: что бы его было несложно переписать

141
00:22:49.220 --> 00:22:59.099
Михаил Непряхин: и здесь нам тоже приходит. На помощь архитектура которая говорит что если вы Будете придерживаться определенных Правил то переписать Этот проект, будет несложно

142
00:23:01.740 --> 00:23:10.029
Михаил Непряхин: Так но этим вопросом во франции одна проблема. Архитектуры почему то считается что чем сложнее Тем круче но чтобы на конференциях Было что рассказать

143
00:23:10.790 --> 00:23:17.800
Михаил Непряхин: вот Поэтому как бы мой месседж такой что если что-то сложное То Прям мы

144
00:23:18.160 --> 00:23:27.260
Михаил Непряхин: скорее отвергаем То есть это должно быть что-то такое чтобы вот оно приносило пользу но можно было понять Любому

145
00:23:27.640 --> 00:23:47.399
Михаил Непряхин: ну и желательно чтобы была Прозрачность простота чтобы можно было взять точку Входа какую-то в приложение и пройти, весь путь, то есть Мы потом сюда заходим в этот Модуль в этот модуль в этот Модуль в этот модуль какое-то дерево чтобы было и Мы потом Берем, и точка Выхода

146
00:23:47.660 --> 00:23:52.040
Михаил Непряхин: если Мы ее так прийти Не можем если Там Нам надо что-то

147
00:23:52.200 --> 00:23:56.239
Михаил Непряхин: если У вас Какой То здесь блэк бокс есть есть блокбокс

148
00:23:56.430 --> 00:24:08.240
Михаил Непряхин: то это ну тоже как, бы архитектура обречена на смерть потому что, она ну любой Человек должен взять и просто вот размотать полностью клубочек посмотреть как оно устроено

149
00:24:08.240 --> 00:24:17.359
Михаил Непряхин: чтобы танки нести изменения Поэтому и френворки не прерываются в гоу Поэтому и Какие то

150
00:24:18.180 --> 00:24:22.220
Михаил Непряхин: в Сторонние библиотеки по управлению зависимостями тоже Не прерываются гол

151
00:24:22.410 --> 00:24:31.239
Михаил Непряхин: потому что они вот добавляют вот этой вот магии ау, гоу изначально философия Что должно быть все просто прямолинейно Без Маги

152
00:24:32.530 --> 00:24:41.479
Михаил Непряхин: так один микросервис где большинство Мод или пять шесть Чтобы Избежать между транзакцией вся. Страна микросервиса немаленький со своим домом

153
00:24:41.710 --> 00:24:46.099
Михаил Непряхин: ну Сейчас вот об этом еще поговорим об этом поговорим сложная тема,

154
00:24:46.420 --> 00:24:49.260
Михаил Непряхин: а когда дублирование кода между прочим допустимо

155
00:24:49.630 --> 00:25:05.900
Михаил Непряхин: ну желательно Чтобы Кот Не Дублировался Поэтому У, нас же есть вот приватные модули которым Там чарли на втором Уроке Или Тратим смотрели То есть То что можно Переиспользовать оно должно выноситься в отдельной модули чтобы другие сервисы Могли, его Пересиспользовать

156
00:25:06.950 --> 00:25:12.610
Михаил Непряхин: но в коде на Голову. Да У вас иногда Будет дублироваться код тут как бы

157
00:25:13.330 --> 00:25:20.649
Михаил Непряхин: вот эта простота она немножечко вит в разрез с принципом драй а драй эта дон тропить его сыров. Ну типа Не повторяйся

158
00:25:26.280 --> 00:25:32.790
Михаил Непряхин: А ну час поговорим вот она Сейчас поймем ее так

159
00:25:37.280 --> 00:25:50.610
Михаил Непряхин: дальше значит почему в общем-то да почему Мы все в одном файле Не можем написать понятно значит дальше и как По каким Частям разбить Кот значит на какие части он гется

160
00:26:00.870 --> 00:26:10.120
Михаил Непряхин: ну во Первых Всегда есть какая там а кор логика значит Ммм

161
00:26:13.070 --> 00:26:17.640
Михаил Непряхин: хотелось бы ну Или еще лишь скейсами называют и скейсами называют

162
00:26:20.870 --> 00:26:27.700
Михаил Непряхин: то есть какая-то вот суть того Что происходит в приложении Мы заходим смотрим значит Мы Идем

163
00:26:27.860 --> 00:26:41.520
Михаил Непряхин: здесь Мыдем фреддис что-то делаем сохраняем Или достаем а Идем впоследствии и просто какая-то функция

164
00:26:45.220 --> 00:26:52.420
Михаил Непряхин: вот Эти, вот компоненты они обычно как бы можно одной строчкой написать что Мы Делаем

165
00:26:54.150 --> 00:26:58.870
Михаил Непряхин: это называется абдус кейсы и они по Сути являются нашей программой,

166
00:26:59.090 --> 00:27:05.520
Михаил Непряхин: аа с сутью того что мы делаем ну, вот например здесь у меня в этом примере

167
00:27:05.880 --> 00:27:10.200
Михаил Непряхин: находится в пакете из кейс Вот Допустим Создание профайла да

168
00:27:10.730 --> 00:27:22.830
Михаил Непряхин: значит Идем в редис проверяем По ключевой департаментности Не обработали малимо уже этот Ключ создаем какую-то модель доменную

169
00:27:23.030 --> 00:27:28.420
Михаил Непряхин: Влидацию делаем сохраняем базу отправляем в Кафку, отдаем наружу

170
00:27:29.910 --> 00:27:35.060
Михаил Непряхин: а смотрите если разобраться Так Что Мы здесь делаем Мы довольно много всего делаем

171
00:27:35.820 --> 00:27:38.739
Михаил Непряхин: ну смотрите как оно написано оно написано

172
00:27:39.860 --> 00:28:00.159
Михаил Непряхин: одной строчкой ну да понятно, и какие то операции

173
00:28:03.070 --> 00:28:09.170
Михаил Непряхин: если, мы Сейчас начнем здесь вот про рэдис расписывать довойку

174
00:28:09.870 --> 00:28:20.150
Михаил Непряхин: Она будет большая Она займет весь экран и у нас фокус, внимания, размоется

175
00:28:21.080 --> 00:28:26.420
Михаил Непряхин: и Мы не увидим сути да то есть Мы Вот будем в детали

176
00:28:26.700 --> 00:28:37.989
Михаил Непряхин: вдаваться здесь и смотреть как именно Мы Там Это делаем То есть Мы открываем соединение с Рейсом Там обрабатываем Ошибки конкретные Ради, соски

177
00:28:37.990 --> 00:28:49.219
Михаил Непряхин: ну и Так далее ну с средством еще Допустим ванна тут Короткая была бы запись солидации какая там влидация ну было бы там не знаю пять Строчек можно в отдельную функцию не вносить было пять Строчек

178
00:28:49.380 --> 00:28:56.090
Михаил Непряхин: спас грей с подгрусь, сложнее под взглядом много Чува То здесь было где То два экрана Кода

179
00:28:56.730 --> 00:29:03.230
Михаил Непряхин: опять, Же как бы если Это выносить сюда Же в одну простыню То и

180
00:29:03.360 --> 00:29:07.769
Михаил Непряхин: Мы вместо того чтобы узнать Что делает приложение

181
00:29:07.970 --> 00:29:16.590
Михаил Непряхин: будем смотреть ну как бы то мы видим как бы суть Окей вот мы идем в познер и потом вот Это вот расписывается Логика с Подверой

182
00:29:17.490 --> 00:29:20.659
Михаил Непряхин: короче говоря У нас Будет размываться фокус

183
00:29:21.370 --> 00:29:40.209
Михаил Непряхин: и Мы просто Даже Не Сможем и Поэтому отсюда вывод какой значит

184
00:29:40.540 --> 00:29:44.559
Михаил Непряхин: Не писать какую То логику с подробностями

185
00:29:45.220 --> 00:29:50.770
Михаил Непряхин: эти подробности выносить в отдельные Маленькие модули

186
00:29:51.560 --> 00:29:59.350
Михаил Непряхин: и эти модули будут служить нам кирпичиками для того Чтобы мы из них могли эту логику выстраивать

187
00:30:01.420 --> 00:30:06.079
Михаил Непряхин: и по Большому счету наша Программа, Из Этих кирпичиков состоит

188
00:30:06.850 --> 00:30:14.220
Михаил Непряхин: Ну, есть инициативная часть да то есть как бы это отдельный код для инициации мы тоже там посмотрим

189
00:30:14.400 --> 00:30:17.789
Михаил Непряхин: но вот когда у нас уже все занициализировано и работает

190
00:30:17.910 --> 00:30:21.860
Михаил Непряхин: то вот конкретный из кейс который что-то Делает

191
00:30:22.230 --> 00:30:31.339
Михаил Непряхин: Или когда Мы достаем какую-то профиль да Мы Там Эволюция, идем в Возрасте достаем профиль и отдаем его

192
00:30:33.350 --> 00:30:40.280
Михаил Непряхин: а и какие Давайте Так порассуждаем какие У нас могут Быть эти кирпичики

193
00:30:42.280 --> 00:30:47.060
Михаил Непряхин: а значит ну во-первых это То Что Связано с сетью.

194
00:30:48.690 --> 00:31:04.530
Михаил Непряхин: И Это воскрес Это рэдис Это кафка эстри и другой сервис

195
00:31:17.620 --> 00:31:20.390
Михаил Непряхин: а что является кирпичиком в этом случае

196
00:31:20.630 --> 00:31:29.500
Михаил Непряхин: какая то одна Атомная операция То есть не вся работа с подверсом является кирпичиком а конкретно Там, какой-то клиент

197
00:31:30.610 --> 00:31:35.540
Михаил Непряхин: вот Это вот кирпичик, То есть не абстрактный клеит а конкретный кареттон

198
00:31:35.660 --> 00:31:42.409
Михаил Непряхин: иди создай профиль Или там добавь что-то двое достане что-то где-то там какой-то

199
00:31:42.900 --> 00:31:45.409
Михаил Непряхин: и с Рэдисом То же самое То есть подойдет

200
00:31:45.690 --> 00:31:55.119
Михаил Непряхин: сделай то-то и то-то с кафкой там то Же самое ну. Сказка ивана просто отправить ну. Тут Два варианта может Быть в кафку отправить Один запрос

201
00:31:55.730 --> 00:32:05.719
Михаил Непряхин: ииич ну, можно объединить в Один метод вот вот эти вот Кирпичики называются, адаптеры

202
00:32:10.930 --> 00:32:17.790
Михаил Непряхин: то есть вот Один из видов кирпичиков на трактор и и

203
00:32:18.700 --> 00:32:29.490
Михаил Непряхин: еще один вид кирпичиков это когда не сеть значит если это не сеть Ну какие то доменные функции

204
00:32:38.350 --> 00:32:41.890
Михаил Непряхин: самая банальная доменная функция да Влидация

205
00:32:47.170 --> 00:32:52.579
Михаил Непряхин: но в зависимости от домина они могут быть Или не быть

206
00:32:52.690 --> 00:33:02.519
Михаил Непряхин: то есть если у нас простой простой к этапе такое бывает часто когда мы просто что-то кладем в базу данных сохраняем и что-то достаем оттуда

207
00:33:02.740 --> 00:33:08.630
Михаил Непряхин: ну как бы тут тогда доменных функций как бы и не Будет ну какие то доменные модели будут доминахнуться не будут

208
00:33:08.990 --> 00:33:14.080
Михаил Непряхин: вот но если у нас что-то еще сервис дополнительное делает

209
00:33:14.230 --> 00:33:19.280
Михаил Непряхин: у нас же Всегда есть какие-то выходные данные Да У нас Всегда есть какой-то в программе есть какой-то вход

210
00:33:20.220 --> 00:33:33.619
Михаил Непряхин: а Наша Программа и выход и и в зависимости от домина Мы можем Эти данные

211
00:33:33.880 --> 00:33:35.659
Михаил Непряхин: Там что То с Ними Делать

212
00:33:36.020 --> 00:33:40.420
Михаил Непряхин: и Тогда будут Появляться вот Эти вот Маленькие функции которые будут

213
00:33:40.770 --> 00:33:43.649
Михаил Непряхин: что то какого то какие то атомные операции сделать

214
00:33:44.050 --> 00:33:46.519
Михаил Непряхин: их немножко, с ними немножко, сложнее

215
00:33:47.130 --> 00:34:00.949
Михаил Непряхин: потому что как бы это вот с адаптами все просто да понятно как кирпичик, выглядит Здесь кирпичик, он немножечко ну ну важно. Короче просто понимать что, Мы должны. Делать какую-то одну Вещь. И делать это хорошо

216
00:34:01.070 --> 00:34:09.580
Михаил Непряхин: если вы начинаете функцию большую делать то ее нельзя будет Переиспользовать а если функция Маленькая

217
00:34:09.900 --> 00:34:21.790
Михаил Непряхин: то в разных Йоскейсах ее можно будет пристроить и и и Пере использовать соответственно код

218
00:34:22.060 --> 00:34:29.029
Михаил Непряхин: то есть что, вот Эти, Кирпичики можно переиспользовать в разных из Кейсах что, вот эти Кирпичики можно переиспользовать в разных экейсах

219
00:34:29.580 --> 00:34:46.110
Михаил Непряхин: вот наши строительные Блоки и из них Мы уже комбинируем собственно Саму, программу и когда проведена Четкая Граница между

220
00:34:46.230 --> 00:34:50.800
Михаил Непряхин: а вот Этой вот а ядром Логики

221
00:34:51.300 --> 00:34:54.739
Михаил Непряхин: что ядро, Логики оно не занимается какими Там

222
00:34:55.469 --> 00:35:03.520
Михаил Непряхин: ну, вот Саму, суть Мы Там не Пишем вот этот развесистый код ну может быть тут Какой нибудь киев таифы могут быть формы могут быть естественно

223
00:35:04.890 --> 00:35:12.810
Михаил Непряхин: и но не надо как Бы здесь в бизнес-волике, писать Ну как то там какие то подробности

224
00:35:12.960 --> 00:35:16.720
Михаил Непряхин: вы просто выносите это в отдельный Кирпичик

225
00:35:18.180 --> 00:35:24.659
Михаил Непряхин: аа и все и просто его Встраивать в эту логику а потом Через какое-то время

226
00:35:24.840 --> 00:35:29.969
Михаил Непряхин: У вас вот Допустим, один из кейс появляется Другой, юс кейс

227
00:35:30.500 --> 00:35:43.160
Михаил Непряхин: и да какую-то может быть логику ему надо было дописать чтобы использовать но что-то вы можете взять уже из уже существующего. И Тоже, переиспользовать

228
00:35:43.730 --> 00:35:52.520
Михаил Непряхин: и так Появляется Переиспользование и есть У, вас таким Образом а Написан Проект

229
00:35:52.760 --> 00:35:56.920
Михаил Непряхин: То его Переписывание потом Не вызовет много боли

230
00:35:57.310 --> 00:36:00.749
Михаил Непряхин: потому Что вот Эти, вот вещи они

231
00:36:01.080 --> 00:36:09.930
Михаил Непряхин: в целом независимые друг от. Друга и объединяет их все только модели

232
00:36:13.770 --> 00:36:18.760
Михаил Непряхин: понятно, что. Модели у вас будут ну, в зависимости от. Того какой у вас задамен

233
00:36:18.900 --> 00:36:25.410
Михаил Непряхин: вот и понятно, что эти функции они принимают модели эти и возвращают модель эти но тем не менее

234
00:36:26.210 --> 00:36:31.040
Михаил Непряхин: если, вы вдруг, поймете что вот какой то конкретный кейс

235
00:36:31.670 --> 00:36:41.410
Михаил Непряхин: о он просится, уже в отдельный свой микросервис то вы просто и возьмете его посмотрите

236
00:36:41.520 --> 00:36:55.990
Михаил Непряхин: что Ему надо для работы Окей надо кирпичик Вот сет значит отсюда и возьмем воскрес Вот этот возьмем кирпич и Там какая-то Функция отсюда и какая модель объединяет Эти Кирпичики вот какая Там модель Мы ее Возьмем

237
00:36:56.100 --> 00:36:57.869
Михаил Непряхин: и Переносим в другой Сервис

238
00:36:58.720 --> 00:37:10.219
Михаил Непряхин: и То же самое когда понадобится Этот сервис Переписывать что Добавить Убавить вообще все переписать другие кейсы Добавить вы тоже, вы Не будете заниматься переписыванием вот этих Вещей

239
00:37:10.380 --> 00:37:13.830
Михаил Непряхин: вы будете заниматься переписыванием, больше вот этих Вещей

240
00:37:15.930 --> 00:37:22.059
Михаил Непряхин: то же самое с транзакциями да то есть нужно писать ручки вот нас погибловой ручки будут

241
00:37:22.140 --> 00:37:27.839
Михаил Непряхин: их нужно писать Так чтобы они все умели работать из транзакции и без транзакций

242
00:37:27.900 --> 00:37:41.519
Михаил Непряхин: и Поэтому на уровне визкейса вы когда нужно оборачиваете их транзакцию а когда ненужно не оборачивайте и они внутри себя знают Мы вели она в транзакции

243
00:37:41.570 --> 00:37:59.140
Михаил Непряхин: вот про это тоже мы посмотрим это много вопросов, вызывает как и

244
00:37:59.170 --> 00:38:03.339
Михаил Непряхин: во-первых кирпичик очень сильно раздувается во-вторых этот кирпичик

245
00:38:03.420 --> 00:38:08.289
Михаил Непряхин: становится полноценной частью вот Этой вот основной логики а это уже Плохо

246
00:38:08.610 --> 00:38:12.839
Михаил Непряхин: нужно сделать так чтобы кирпичики были независимые и легко комбинировались

247
00:38:13.390 --> 00:38:18.039
Михаил Непряхин: так вот вот на текущий момент все ли понятно,

248
00:38:18.430 --> 00:38:21.269
Михаил Непряхин: и есть ли какие то здесь Вопросы,

249
00:38:25.630 --> 00:38:26.560
Михаил Непряхин: так

250
00:38:29.520 --> 00:38:38.909
Михаил Непряхин: есть реализация связанная с походом в сеть например, в базе данных запрос ну это уже адаптер ну как бы тут же он сразу сдал границу вот Проводим границу сеть Не сеть

251
00:38:39.050 --> 00:38:44.510
Михаил Непряхин: значит Ну Тоже сидите Тушь

252
00:38:45.130 --> 00:38:51.610
Михаил Непряхин: как бы Не важно. Как называется главная суть если Эволюция идет по сети ну. Вот сетевой автор.

253
00:38:54.370 --> 00:38:59.459
Михаил Непряхин: Как понять что ольгу писать функцию в доме индомен лис кейс

254
00:39:00.400 --> 00:39:08.430
Михаил Непряхин: ну. Опять, же смотрите вы спрашиваете конкретный вопрос понятно, ну как бы я храню войку в папке домен да

255
00:39:08.920 --> 00:39:10.389
Михаил Непряхин: Но а

256
00:39:14.160 --> 00:39:29.549
Михаил Непряхин: ну потому что У меня в папке только вот эти вот конкретные кейсы да а я предпочитаю выделять домен и вот как, бы доменные сущности у меня находятся вот в своем, пакете домен

257
00:39:29.600 --> 00:39:44.609
Михаил Непряхин: ну опять, же красивая удобная я сразу, вижу Домина а отменная сущность как бы Или для того вот у, Меня как бы Два типа да ты его тоже можно сказать носит доменной сущности Но чуть-чуть у нее Другое. Назначение Распада. Трудоголи Поэтому я ехал в них отдельно а в дискейся я хранил. Только

258
00:39:45.690 --> 00:40:04.890
Михаил Непряхин: саму суть вот само приложение ну и я стараюсь и как бы по слоям то есть вот для домена допустим для крейта я храню все в Этой детошке, вот надо будет, меня, вынести в отдельный сервис я возьму этот файл, этот файл, ну а здесь придется вот это взять и

259
00:40:04.890 --> 00:40:09.619
Михаил Непряхин: как бы критерий хорошей архитектуры он заключается в том

260
00:40:11.890 --> 00:40:31.349
Михаил Непряхин: насколько легко вам будет, взять и вынести вот это в другой Сервис если, довольно легко бренд дешу Не Совсем бесплатно да тут придется немножко, поработать но вообще это Возможно, то есть Возможно, взять вот это вот и вынести в другой сервис Если, возможно у вас хорошая архитектура

261
00:40:31.380 --> 00:40:37.289
Михаил Непряхин: Если, ой нет невозможно тут, все связано руками и Ногами Плохая архитектура

262
00:40:37.800 --> 00:40:55.280
Михаил Непряхин: ну как бы видите Я вам только могу какие-то Ориентиры дать типа Если, любой Человек заходит в Проект, читает и понимает что происходит хорошая архитектура если человеку нужно неделю и он все равно потом говорит я ни фига Не понимаю как это работает

263
00:40:55.450 --> 00:41:03.359
Михаил Непряхин: и это плохая архитектура потому что, Мы Кот Пишем для читающего Если, Мы Не смогли рассказать историю

264
00:41:03.580 --> 00:41:12.890
Михаил Непряхин: что, делает программа и Человек уже неделю разбирается и все равно говорит сложно это плохая архитектура То есть как Бы нету рецепта как именно Делать

265
00:41:13.000 --> 00:41:22.079
Михаил Непряхин: ну, как ну, вот я Выдаю какие То вот рекомендации да но Если, вы этого же самого добьетесь другим способом другим расположением папок

266
00:41:22.240 --> 00:41:28.120
Михаил Непряхин: ну, это Тоже будет Хорошая архитектура Так

267
00:41:32.430 --> 00:41:41.369
Михаил Непряхин: надмен без функций вся, войка лизка есть Так норм часто ввело ну насчет часто Так Делают, тут как бы Делают, вообще всякое Вы увидите все

268
00:41:41.900 --> 00:41:49.060
Михаил Непряхин: и еще разочаруетесь в людях вот а для меня Без функций

269
00:41:49.190 --> 00:42:00.780
Михаил Непряхин: эээ ну есть, такое поверие вообще как бы вот я Раньше, эндити еще вот эту папку часто Называл но Эндити Это по Сути для Людей

270
00:42:00.780 --> 00:42:09.559
Михаил Непряхин: красный Флаг они считают что Это то же самое что модель а модель вот Раньше, была архитектура мода вьюконтроллер да

271
00:42:09.600 --> 00:42:18.770
Михаил Непряхин: популярная нуу джаве и там вот эта модель подразумевалась что это просто такая

272
00:42:19.350 --> 00:42:24.319
Михаил Непряхин: Тонкая детошка по сути ну, там может быть методами но в целом это в первую очередь модель

273
00:42:24.940 --> 00:42:29.970
Михаил Непряхин: домен как бы говорит о том что здесь

274
00:42:30.090 --> 00:42:36.459
Михаил Непряхин: и не только модели хранятся. Но и функции связанные с Этими Моделями

275
00:42:36.970 --> 00:42:45.169
Михаил Непряхин: и они должны быть оформлены в виде Кирпичиков, быть Маленькими Небольшими самостоятельными Функциями

276
00:42:45.790 --> 00:42:51.480
Михаил Непряхин: Если они Не Участвуют в сети никак потому. Что если они Участвуют в сети То Этого доктора уже

277
00:42:51.800 --> 00:43:03.369
Михаил Непряхин: они сюда Переезжают а и и как бы Это Два разных Мира адаптеры Они тестируются с помощью интеграционных тестов

278
00:43:03.530 --> 00:43:24.399
Михаил Непряхин: это как бы Более сложные тесты нужно нужно поднимать доктор Компост, чтобы протестировать Адаптацию, доменные и

279
00:43:24.470 --> 00:43:36.509
Михаил Непряхин: написать без всякой баз данных то есть как бы Это совершенно Два разных Мира или Сетевой мир. Ненадежный сложный с кучей подводных камней ломучей

280
00:43:36.570 --> 00:43:48.760
Михаил Непряхин: и Мир и

281
00:43:48.870 --> 00:44:01.810
Михаил Непряхин: доменный свой он более стабильный и надежный и редко изменяется а вот адаптер Ну, взяли там решились поменять одного, блокера на другой там на одну базу, данных на другую

282
00:44:02.020 --> 00:44:07.899
Михаил Непряхин: ну или даже не в этом дело в том что ну как-то поменяли подход. К работе

283
00:44:09.120 --> 00:44:16.360
Михаил Непряхин: вот ааа Доменная сущности это то что отражает

284
00:44:16.710 --> 00:44:21.110
Михаил Непряхин: бизнес в коде то Есть ну если, мы занимаемся

285
00:44:21.220 --> 00:44:38.260
Михаил Непряхин: если, у нас в рестораны и Мы развозим пиццу То у нас Так и будут в сущности называться ну как в базе данных там они мапиться будут там бут сущность модель ресторан будет модель там заказ пицца ну как бы то есть мы должны зайти сюда

286
00:44:38.540 --> 00:44:44.720
Михаил Непряхин: и в доменный слой и увидеть э ну как бы из чего состоит вообще наш бизнес

287
00:44:44.880 --> 00:44:47.299
Михаил Непряхин: Вот а давай завтра когда Мы заходим

288
00:44:47.410 --> 00:44:58.000
Михаил Непряхин: ну Мы видим что Мы что-то сохраняем в кафку Мы Там как-то Там Работаем с Подберой ну Сохраняем профайлы со с делом Профаева,

289
00:44:58.160 --> 00:45:08.389
Михаил Непряхин: ну как бы нас это Не так сильно Волнует как то что происходит в доменном свой потому что он ну как бы здесь более ответственная часть

290
00:45:10.930 --> 00:45:18.009
Михаил Непряхин: так если, серость большой то таких, вообще вот Вагон и Маленькая тележка как ими управлять Но тут только Найминг, сломает Голову.

291
00:45:18.380 --> 00:45:21.659
Михаил Непряхин: Ну смотрите во-первых эээ

292
00:45:21.800 --> 00:45:33.269
Михаил Непряхин: с доменной областью да от заменной областью сложно то есть если, У нас прямо, маленький Сервис то можно Все поместить э в папеджидомен

293
00:45:33.630 --> 00:45:42.629
Михаил Непряхин: есть ли У нас развесистый Сервис ну все здесь Нужно создавать другие пекаджи Которые уже будут пофичам

294
00:45:42.810 --> 00:45:52.400
Михаил Непряхин: Которые будут хранить свои модели потому, что если вы в одном пакете, будете хранить модели они начнут пересекаться очень быстро. Поэтому вы тут добавляете папки

295
00:45:52.600 --> 00:45:56.140
Михаил Непряхин: и уже конкретно по доменам это делается

296
00:45:56.670 --> 00:45:59.760
Михаил Непряхин: ты храните свои модели в Этих папках

297
00:46:00.780 --> 00:46:08.509
Михаил Непряхин: а с адаптами вообще такой проблемы Нет потому что ну Окей Допустим у нас позрисовывая

298
00:46:09.040 --> 00:46:15.879
Михаил Непряхин: и вот у меня тут Два кирпичика да то есть у меня вот кирпичик, клеет По файлу тропить кирпичи гетто профайл,

299
00:46:16.120 --> 00:46:32.920
Михаил Непряхин: это просто инициатива мишура то есть и

300
00:46:33.410 --> 00:46:40.629
Михаил Непряхин: эээ идем в базу, данных и конкретно что за дела видите даже я здесь не пишу потому что там это не важно то есть как бы часто когда пишется сервис

301
00:46:40.830 --> 00:46:45.710
Михаил Непряхин: пишут из лягушки на адаптеры а уже потом там отдается ээ

302
00:46:46.080 --> 00:46:57.909
Михаил Непряхин: менее квалифицированным персоналом эти Ручки дописать потому что если они правильно скомпонованы и правильно описаны сигнатуры то вот их просто написать это уже дело. Техники

303
00:46:57.910 --> 00:47:08.219
Михаил Непряхин: ну как бы это такое большое дело. Техники да их надо все Написать убедит что они Работают там Написать Некие интеграционные тесты Это большая, часть работы ну Она более Рутинная

304
00:47:08.590 --> 00:47:14.319
Михаил Непряхин: а более творческая. Часть это вот эти вот кирпичики и найти смучу выделить

305
00:47:14.590 --> 00:47:23.799
Михаил Непряхин: и определить места Где они будут Находиться Поэтому если У вас их Будет вот этих вот кирпичиков здесь находиться пятьдесят штук

306
00:47:24.710 --> 00:47:39.749
Михаил Непряхин: ну понятно, что наверное пятьдесят вы уже начнете теряться и тогда в этом случае наверное тоже стоит здесь Создавать какие-то папки и дальше делить но и

307
00:47:40.460 --> 00:47:44.459
Михаил Непряхин: это как бы один вариант компоновки да то есть это вариант когда У нас

308
00:47:44.850 --> 00:47:51.669
Михаил Непряхин: а маленький либо средний сервис если, понять, что сервис будет большой то вот здесь вот

309
00:47:51.880 --> 00:48:02.150
Михаил Непряхин: аа на верхнем уровне вентерна просто создаются свои домены у Меня, есть пример такой компоновки тоже Сейчас

310
00:48:06.640 --> 00:48:15.100
Михаил Непряхин: м вот вы я от Этой Публичной позиции здесь Э

311
00:48:15.860 --> 00:48:18.849
Михаил Непряхин: у меня домены вот эта папка не черном

312
00:48:20.160 --> 00:48:24.000
Михаил Непряхин: и ну вэб у меня просто конструкторы

313
00:48:24.350 --> 00:48:32.349
Михаил Непряхин: а вот уже вот эта вот структура она находится в папке с названием, замена вот у меня домин эпал

314
00:48:32.880 --> 00:48:35.570
Михаил Непряхин: и внутри эпа у меня

315
00:48:36.100 --> 00:48:43.340
Михаил Непряхин: та же структура тут, Адаптация контролеры дто ну вот индите видите я тут, Еще называл ну я и так так называю

316
00:48:44.540 --> 00:48:46.160
Михаил Непряхин: из киисы!

317
00:48:46.510 --> 00:48:53.459
Михаил Непряхин: Вот и Поэтому Э Если вы опять же зачем так зачем так зачем на этом уровне

318
00:48:54.730 --> 00:49:02.550
Михаил Непряхин: Аа для того чтобы потом взять и вот это выделить в отдельный сервис то есть понимаете что дамен эпл

319
00:49:02.720 --> 00:49:09.299
Михаил Непряхин: становится толстым и просится, уже ээ выделить его в отдельный сервис

320
00:49:09.430 --> 00:49:22.510
Михаил Непряхин: Или допустим у Меня есть вот и

321
00:49:22.620 --> 00:49:30.060
Михаил Непряхин: вот можете сказать и посмотреть вот здесь э, как, Раз, э, вот этот пример который я сказал что,

322
00:49:30.830 --> 00:49:36.559
Михаил Непряхин: человек сделал домашнюю работу вот он здесь вот он так же сделал

323
00:49:36.840 --> 00:49:48.690
Михаил Непряхин: но ведь, вот по этому же примеру, у него паприн тернул и здесь есть нетрадиционный файл ну вот как Раз, он по этому шаблону и сделал и вот домен погода да вот он выделил. А здесь структуру такую сделал

324
00:49:49.460 --> 00:49:52.749
Михаил Непряхин: и соответственно можно сюда дальше добавлять домины

325
00:49:52.990 --> 00:49:56.670
Михаил Непряхин: и таким образом, У вас появляется Граница между заменами

326
00:49:57.010 --> 00:50:07.790
Михаил Непряхин: вот ну единственное что если, вдруг один домен будет Ходить в другой домен вызывать его то надо будет сделать тонкий, адаптор для вызова одного домена другим

327
00:50:07.950 --> 00:50:16.760
Михаил Непряхин: а потом когда вы Вынесете этот обмен в другой сервис То Там Просто появится Сетевой поход. Там будет клиент Написан

328
00:50:17.280 --> 00:50:24.950
Михаил Непряхин: Вот и а на какие есть варианты а можно

329
00:50:26.370 --> 00:50:34.100
Михаил Непряхин: на самом деле вот когда на верхнем уровне Мы здесь создаем домины какие-нибудь допустим то трепал у нас был бы,

330
00:50:38.210 --> 00:50:46.100
Михаил Непряхин: банана и внутри бы, Мы могли свою структуру придумать

331
00:50:46.240 --> 00:50:51.149
Михаил Непряхин: Но я обычно беру вот эту вот тамада и контроль

332
00:50:51.740 --> 00:50:56.680
Михаил Непряхин: то есть То Же самое Повторяю в каждой Папке и и

333
00:50:56.900 --> 00:51:06.679
Михаил Непряхин: короче Делали По-разному как, бы У Меня, в Принципе специализация Вот на Архитектуре приложения и как бы за свою жизнь Я

334
00:51:06.940 --> 00:51:21.420
Михаил Непряхин: проверил множество разных гипотез и Делал разную Компоновку и Я в платформе в Их командах Работал и Мы это еще спускали вниз. Командам продуктовым чтобы они следовали этим

335
00:51:21.680 --> 00:51:22.520
Михаил Непряхин: айван

336
00:51:23.200 --> 00:51:32.950
Михаил Непряхин: также смотрел как людям что заходит что Не заходит как они в итоге Делают, свои. Проекты в целом несмотря на то что.

337
00:51:33.320 --> 00:51:36.669
Михаил Непряхин: Платформенные команды Сейчас есть во всех проектах

338
00:51:36.920 --> 00:51:43.559
Михаил Непряхин: и Они диктуют какие-то правила эти правила все Нарушают То, Есть Нет

339
00:51:43.760 --> 00:51:49.430
Михаил Непряхин: Людей кто бы Следовали вот этим вот каким То, Инструкциям

340
00:51:49.500 --> 00:52:08.780
Михаил Непряхин: и даже если все коды генерится и там Платформная Команда такая хорошая как вавиты там вид одни из самых сильных и

341
00:52:09.250 --> 00:52:14.260
Михаил Непряхин: Поэтому говорить вот конкретно вот как надо делать а как не надо

342
00:52:14.410 --> 00:52:31.679
Михаил Непряхин: вы, все равно в итоге сделаетекет свои выводы и будете Делать немножко, по-своему если У вас Нет идеи на начальном этапе ну просто придерживаетесь вот Этой логики То есть без Разделения доменов на верхнем уровне То есть в этом случае весь Сервис этот Домен

343
00:52:32.120 --> 00:52:38.170
Михаил Непряхин: и Вот этот весь интерну это мог подсчитать что вы как бы и Так уже в Папке У вас просто Один доменный сервис

344
00:52:38.420 --> 00:52:41.949
Михаил Непряхин: Если вы понимаете что вы делаете что-то Большое

345
00:52:42.660 --> 00:52:46.410
Михаил Непряхин: и вы уже понимаете как Это выделить домены

346
00:52:46.650 --> 00:52:49.180
Михаил Непряхин: То можете прямо, на первом этапе

347
00:52:49.360 --> 00:52:51.659
Михаил Непряхин: а создать здесь на верхнем уровне папки

348
00:52:51.940 --> 00:52:59.680
Михаил Непряхин: и соединить их по принципу вот как показано здесь то есть не проблема,

349
00:53:05.180 --> 00:53:14.449
Михаил Непряхин: а на гор работают свои псокитами да работают если да то как они вписываются в подобную архитектуру или в Данном. Случае выносят в отдельный микросервис и работать совсем много

350
00:53:17.310 --> 00:53:22.620
Михаил Непряхин: накладывают ограничения потому что выписке ты это Постоянная Коннекшина

351
00:53:23.010 --> 00:53:36.789
Михаил Непряхин: То Же самое когда Мы работаем с Джерписи с постоянными Коннекшими Там тоже немножечко меняется архитектура и Если у нас сервис Делает что-то эдакое очень сильно параллельное

352
00:53:37.350 --> 00:53:49.770
Михаил Непряхин: то есть вот это вот такая Классическая архитектура она именно про типовой Сервис там девяносто Девяти процентов. Случаев, Сервис выглядит вот так вот таким образом, и все нормально

353
00:53:49.990 --> 00:53:58.100
Михаил Непряхин: но если появляется и что то нестандартное то вы уже

354
00:53:58.580 --> 00:54:03.550
Михаил Непряхин: ну вы обречены на проверку гипотез то есть

355
00:54:04.580 --> 00:54:11.529
Михаил Непряхин: вы поймете допустим что сюда не вписывается, Там какая нибудь какой нибудь пайпайн,

356
00:54:11.660 --> 00:54:16.970
Михаил Непряхин: вы начнете думать, как Это, сделать но

357
00:54:17.480 --> 00:54:29.670
Михаил Непряхин: как бы, моя цель У вас ромбод из кирпичиков. Состоять да то есть Ваша любая архитектура она Будет состоять вот из этих вот мелких кирпичиков. На нижнем уровне

358
00:54:30.330 --> 00:54:32.069
Михаил Непряхин: То есть

359
00:54:32.710 --> 00:54:42.410
Михаил Непряхин: дальше из Этих кирпичиков строятся, вот эти вот кирпичики уже крупные блоки с логикой которые как бы Изкие. Семьи являются

360
00:54:42.860 --> 00:54:49.279
Михаил Непряхин: Еще дальше это становится частью ну как бы и сам сервис тоже кирпичик

361
00:54:49.460 --> 00:54:52.230
Михаил Непряхин: то есть видите у нас как бы три уровня абстракции

362
00:54:53.370 --> 00:55:11.519
Михаил Непряхин: а просто не нужно делать больше три Всегда достаточно. Ну какие у нас абстракции то есть кирпичик на самом нижнем уровне потом вот из этих кирпичиков Состоят вот эти вот юскейсы нашимойки а уже сами из кейсы они а не ее ручки то есть с нас вызывают какой то другой сервис

363
00:55:11.780 --> 00:55:18.060
Михаил Непряхин: и для того другого сервиса мы сами являемся вот таким же кирпичиком ну и все круг замыкается

364
00:55:18.860 --> 00:55:24.910
Михаил Непряхин: и здесь Нет нужды в усложнении абстракции,

365
00:55:25.010 --> 00:55:33.249
Михаил Непряхин: потому что даже если, за вас Там вызывают высоки Или вы делаете что-то суперпараллельное вот эту часть у вас все равно она будет

366
00:55:33.740 --> 00:55:47.059
Михаил Непряхин: и если вы не будете здесь размазывать так вот сильно логику а выносить ее в адаптеры в доменные функции и работать уже здесь с небольшими кирпичиками то у вас Программа,

367
00:55:47.800 --> 00:55:54.079
Михаил Непряхин: эээ ну вот сама суть программы Что, она делает Всегда Будет умещаться на один два экрана

368
00:55:54.340 --> 00:55:59.739
Михаил Непряхин: а это прямо, но круто когда вы можете но вот За Раз,

369
00:55:59.780 --> 00:56:18.649
Михаил Непряхин: без прыжков вот этих сумасшедших когда то есть как бы еще плохой тон когда вас заставляют прыгать вот просто вы Хотите. Прочитать что-то а вас прыгать заставляют То есть там какой-нибудь абстракт на абстракции какие-то там все завернуто все свернуто тут, какой-то Там паттер

370
00:56:18.650 --> 00:56:25.830
Михаил Непряхин: и просто чтобы вот осознать что делает Ваша, Программа, вы прыгаете прыгайте прыгайте прыгайте

371
00:56:26.150 --> 00:56:30.590
Михаил Непряхин: создается ли у вас в голове, вообще понимание что здесь происходит

372
00:56:30.790 --> 00:56:37.570
Михаил Непряхин: ну ты смутная вы же примерно начинаете понимать но вот когда вот оно перед глазами, когда оно в виде

373
00:56:38.080 --> 00:56:39.830
Михаил Непряхин: короткой программы.

374
00:56:40.300 --> 00:56:55.590
Михаил Непряхин: То даже вот это можно очень сильно размазать да мы просто делаем валидацию и достаем проще с базы вот это можно размазать так что вы в Принципе уже не будете уверены точно ли Мы Или Там где нибудь еще что нибудь не Делаем

375
00:56:55.970 --> 00:56:57.080
Михаил Непряхин: то есть

376
00:56:58.110 --> 00:57:08.710
Михаил Непряхин: здесь Мы уже что-то побольше Делаем да то есть и как бы тоже есть Тысяча вариантов как это написать длинно но как бы сложно написать и длинные а Еще не проблема Справляются все

377
00:57:08.810 --> 00:57:23.190
Михаил Непряхин: а вот написать компактно и просто вот тут проблема тут приходится, думать, и

378
00:57:23.820 --> 00:57:33.320
Михаил Непряхин: думать как бы рассказать эту историю так чтобы и вы потом когда залезли поняли что здесь происходит и коллега ваш залез и полномочий происходит

379
00:57:39.910 --> 00:57:55.670
Михаил Непряхин: Не Стоит бояться большого количества кирпичей потому Что они все равно все независимые друг от друга вот если У вас все кирпичи связаны как лапша то это не кирпичи во все кирпичи не должны быть независимы у них зависимость только Одна надоменной модели

380
00:57:55.670 --> 00:58:05.870
Михаил Непряхин: ну потому Что они скорее всего либо принимают обменную модель как Аргумент либо отдают модель модель как Аргумент но вот у меня здесь в случае моей, модели вот У меня Профиль

381
00:58:05.870 --> 00:58:23.250
Михаил Непряхин: вот Поэтому если их будет прямо супердофига ну. И Что ничего Страшного они Же все равно Там Связаны, с какими-то определенными моделями а между Собой Они Независимые Ну, Сколько кирпичей надо взяли и отсыпали в Другой, сервис и Там с Ними Работаете а потом выяснится что какие-то кирпичи можно

382
00:58:23.440 --> 00:58:26.620
Михаил Непряхин: Вообще переиспользовать в Других Сервисах и в Этом

383
00:58:27.280 --> 00:58:33.630
Михаил Непряхин: папку отдельную с приватными Мудрами вынести их и все и проблемы не будут

384
00:58:35.570 --> 00:58:42.350
Михаил Непряхин: Так. Сейчас. Тут еще вопрос иван Давайте сделаем Небольшой перерыв буквально Две минутки и продолжим

385
01:02:48.540 --> 01:02:50.550
Михаил Непряхин: Так. Давайте Дальше посмотрим

386
01:02:51.920 --> 01:03:02.160
Михаил Непряхин: посмотрим вопросы, Так. Если У сервиса два различных кабинета один кабинет аминов второй кабинет для пользователей как То Структуры будут выразить два разных Домина

387
01:03:03.060 --> 01:03:04.600
Михаил Непряхин: а

388
01:03:06.230 --> 01:03:20.069
Михаил Непряхин: ну. Смотрите как можно сделать по-разному. Да хоть разными сервисами это сделать но так как это будет но это будет хоть как два разных юрис кейса то из кейса будет Два разных

389
01:03:20.620 --> 01:03:36.580
Михаил Непряхин: но возможно что они будут эээ да нет они наверное и разные доменные сущности будут ну, да просто Два разных из кейса как бы Ммм Видите что такое домен да вот выиграете это Два разных домена или длямен

390
01:03:36.730 --> 01:03:45.170
Михаил Непряхин: это что то очень Абстрактное то есть если вы спросите двух Человек где Граница домена

391
01:03:45.640 --> 01:03:55.239
Михаил Непряхин: ну типа там скажете какие-то сущности и скажут ну вот это один домен или не один элемент что ты скажешь один для меня крышу Два домена Поэтому

392
01:03:55.520 --> 01:04:07.310
Михаил Непряхин: и это почуйте по ощущениям по опыту по насмотренности здесь и невозможно дать каких-то строгих определений и

393
01:04:07.540 --> 01:04:18.099
Михаил Непряхин: вы смотрите По Ручкам но условно вот у сервиса два личных кабинета но значит Это две ручки То есть один для Админов один для пользователей это как минимум две ручки

394
01:04:18.290 --> 01:04:31.359
Михаил Непряхин: то есть и там еще могут быть еще под ручки да Поэтому даже не важно это один замедлен это разные отмены это может быть все в одном сервисе а может быть в разных сервисах

395
01:04:31.470 --> 01:04:36.259
Михаил Непряхин: они могут использовать и одни и те же модели

396
01:04:36.540 --> 01:04:39.210
Михаил Непряхин: а могут абсолютно разные модели использовать

397
01:04:39.260 --> 01:04:58.389
Михаил Непряхин: то есть это уже больше область про вот эту вот доменную доменную архитектуру то есть Видите. Как бы я вам говорю пока что про крупные маски вот просто про то как важно компоновку делать в Целом компонентов системы,

398
01:04:58.550 --> 01:05:03.599
Михаил Непряхин: вот а вот уже вот это вот как, Там домен организовывать

399
01:05:04.080 --> 01:05:09.260
Михаил Непряхин: отдельная Наука опять, же как, бы я написали Две, книжки на Две книжки

400
01:05:09.980 --> 01:05:19.160
Михаил Непряхин: по вот то что вы задали вопрос да как бы по шадетам мэри кэлвин брейк эванс

401
01:05:20.070 --> 01:05:25.230
Михаил Непряхин: вот вот у него синяя книжка и летмут Красная книжка

402
01:05:25.500 --> 01:05:42.690
Михаил Непряхин: короче говоря как Минимум две книжки, Есть Ну и вот еще куча куча пояснений чего он имел в виду и вот это вот все то есть это Прям но уже тут и заотерика пошла вот как, тут как, делить то есть есть такое понятие как, баун этот контекст

403
01:05:42.950 --> 01:05:58.330
Михаил Непряхин: и как, Там разделить Приложение на и короче типа показано вот два

404
01:05:58.800 --> 01:06:16.620
Михаил Непряхин: два домена дать Потом Продажи Саппорт, и в продажах есть и

405
01:06:16.990 --> 01:06:27.380
Михаил Непряхин: и вот как бы это по Сути книги про то а что здорово если не переиспользовать

406
01:06:27.760 --> 01:06:35.499
Михаил Непряхин: одну модель в везде ну типа это получается такой Год обжиг на любой У него там куча полей

407
01:06:35.830 --> 01:06:46.080
Михаил Непряхин: и вы когда в каком-то Контексте смотрите на этот объект вы такие а мне какие поля из этих двухсот нужны а нужны реально там два поля

408
01:06:46.820 --> 01:06:55.619
Михаил Непряхин: и в Другой, контекст, вы из другого контекста смотрите на эту модель вот пришла вам модель ты смотрит Там, пятнадцать полей а Реально нужно одно.

409
01:06:56.000 --> 01:07:04.630
Михаил Непряхин: Но так. Сделано приложение что. Вы вот получаете Эту модель потому что она вот Везде используется Но это как бы плохой паттер

410
01:07:04.740 --> 01:07:14.689
Михаил Непряхин: он часто его Можно увидеть Но патрон плохой потому что вот по дедди подразумевается что лучше чтобы у вас

411
01:07:14.890 --> 01:07:26.150
Михаил Непряхин: были разделены эти как бы доменты вроде один но у них все-таки как бы еще есть под, доменой то есть Как, бы такие ограниченные контексты балуют контексты

412
01:07:26.680 --> 01:07:34.939
Михаил Непряхин: и часто очень в внутри сервиса тоже делят на эти контексты

413
01:07:35.210 --> 01:07:39.660
Михаил Непряхин: и как бы даже речь Не идет, о Том

414
01:07:39.990 --> 01:07:56.350
Михаил Непряхин: отдельно от отмена Или Нет но о Том что Это какие То ограниченные контексты и модельки Там Тонкие они могут одинаково называться вот и здесь будет продукт называться только У этого продукта будут два поля Которые нужны для этого контекста

415
01:07:56.710 --> 01:08:07.319
Михаил Непряхин: а здесь продукт будет Содержать одно, поле Которое нужно для этого контекста а вообще как бы так по. Жизни типа в продукте там может Быть пятнадцать и

416
01:08:07.630 --> 01:08:26.059
Михаил Непряхин: полей. Ну просто в одних случаях одни Нужны а другие другие и лучшей практикой Являются когда Мы не заставляем разбираться пробираться отправлять все а Мы вот как бы, типа делю и вот Что надо только То имеем надо будет потом ну Добавим Там

417
01:08:26.529 --> 01:08:35.970
Михаил Непряхин: а когда Вон там и Сказки вычитывать допустим добавим там какое то поле вот но эта к врачу же область прямо, сильно эзотерическая сложная

418
01:08:36.170 --> 01:08:38.270
Михаил Непряхин: и и

419
01:08:38.819 --> 01:08:54.890
Михаил Непряхин: дай бог бы просто вот научиться работать уметь видеть гдедактор а где не адаптер это уже очень большой прогресс поэтому Мы будем сосредотачиваться на этом на Написание, Адаптеров

420
01:08:55.010 --> 01:09:07.600
Михаил Непряхин: и Мы будем работать. С простыми моделями доменными там с профилями пользователей и У нас там Не будет какой-то сложной логики но тем Не менее какие-то элементы из я вам тоже покажу мы рассмотрим

421
01:09:10.010 --> 01:09:15.890
Михаил Непряхин: получается э кейс состоит, из адаптеров спивавел Роль понял, ну типа того да

422
01:09:17.580 --> 01:09:23.880
Михаил Непряхин: так можете дать пример функции в доминиении кроме влидации так Мы Давайте Сейчас

423
01:09:30.160 --> 01:09:33.240
Михаил Непряхин: кнуйтесь У меня Нет кроме лидации

424
01:09:38.000 --> 01:09:44.409
Михаил Непряхин: ну Тут, кроме валитации эээ Нет У Меня, Там Там По-моему ничего Такого Не, будет

425
01:09:44.790 --> 01:09:49.120
Михаил Непряхин: ну Сейчас Давайте Глянем небольшой проект, а

426
01:10:02.620 --> 01:10:07.280
Михаил Непряхин: ну Какие То вот тут простые это проверки

427
01:10:10.090 --> 01:10:22.039
Михаил Непряхин: ну тут какая-то логика ну ведь у меня тут очень. Тонкие. Модели как бы у меня здесь кроме конструкторов и валидации доменных кирпичиков Примеров и нету

428
01:10:22.260 --> 01:10:27.430
Михаил Непряхин: потому что ну сложно придумать какой То

429
01:10:29.490 --> 01:10:38.820
Михаил Непряхин: какой-то домен где было бы вот здесь много кирпичков но просто когда вы начнете писать что то Свое,

430
01:10:39.680 --> 01:10:51.539
Михаил Непряхин: вы это почувствуете типа вы так я адаптер положить нет не сеть Куда положить вискиси сделать

431
01:10:52.440 --> 01:11:04.710
Михаил Непряхин: и вот когда такие Размышления появляются место для Домина то есть это какая-то доменная и

432
01:11:04.830 --> 01:11:08.299
Михаил Непряхин: как алексей Там, написал Или это

433
01:11:09.270 --> 01:11:14.150
Михаил Непряхин: аналитика какая нибудь расчет Какой нибудь чего нибудь но опять, Же просипию Баунти

434
01:11:16.570 --> 01:11:23.289
Михаил Непряхин: короче какие То Действия учат Делать Из доменом я думаю как бы, несложно придумать где вы работали

435
01:11:23.800 --> 01:11:25.460
Михаил Непряхин: Это Логика но не сеть

436
01:11:26.380 --> 01:11:42.709
Михаил Непряхин: на каком уровне пишут Начало и конец Б транзакций По идее Это поход. По Сети и должны быть здесь кейс или ошибаюсь Нет не ошибайтесь это патологическийся все правильно без кейса как бы ну и что что

437
01:11:43.050 --> 01:11:50.460
Михаил Непряхин: это что то в транзакции там может быть много логики там используются кирпичики из адаптации

438
01:11:50.580 --> 01:11:56.910
Михаил Непряхин: Поэтому если, вы это не поместите в дискейс то вы утаите

439
01:11:57.080 --> 01:12:13.060
Михаил Непряхин: Э часть важной логики а хотелось бы открыть одно место то Есть счете, важно. Чтобы вот программа Ваша была написана в одном месте если. Вы транзакцию будете Куда То, Другое. Место, убирать То, вы заставите читателя

440
01:12:13.450 --> 01:12:23.980
Михаил Непряхин: То, есть читаете, читаете, Кот вишкейся а потом бах начинается транзакция вы туда Уходите

441
01:12:24.070 --> 01:12:43.330
Михаил Непряхин: и тут, много чего еще происходит и

442
01:12:44.260 --> 01:12:51.960
Михаил Непряхин: абстракции, в голове Держать не Можем вот а если вы еще заставляете тут, прыгать, бесконечно вот Эти прыжки они конечно разматывают

443
01:12:53.880 --> 01:12:59.279
Михаил Непряхин: Но Тогда Внутри открытой транзакции могут Быть походы по сети другие адапторы.

444
01:12:59.720 --> 01:13:11.220
Михаил Непряхин: А ну слушайте ну не пишите вы это антипатиям внутри транзакции не надо Делать ничего кроме операции с базы данных ну Как, бы Делают. Понятно, девушку, Делают.

445
01:13:11.440 --> 01:13:14.249
Михаил Непряхин: Но тут вот и появляется Там

446
01:13:14.440 --> 01:13:19.739
Михаил Непряхин: паттерн транзак шоу аут бокс Там если допустим Мы Там Сказка еще что-то делаем

447
01:13:20.120 --> 01:13:24.069
Михаил Непряхин: а чтобы Рожать долгие открытые контакты ну короче это как бы проблема

448
01:13:24.200 --> 01:13:37.830
Михаил Непряхин: с которой приходится бороться То есть приходится думать, как бы сделать так чтобы Не Было Долгих походов по сети потому. Что это Антипатер Но так много вы будете видеть так Делают Люди

449
01:13:37.910 --> 01:13:47.009
Михаил Непряхин: потому. Что Ну Лениться тратить Время подумать как это Лучше сделать По-другому либо ну это не важно значит как будут ситуации бывают разные

450
01:13:48.350 --> 01:14:03.329
Михаил Непряхин: просто, вы должны, понимать что это не по антипатиям но антипартнер в том плане что если вы так будете злоупотреблять Этими Приложениями сильно замедлится, если вы транзакции будете что-то делать по посети кроме транзакции

451
01:14:03.700 --> 01:14:12.340
Михаил Непряхин: ну да да конечно естественно Так как происходит взаимодействие между платформами не фра командой и продуктовой

452
01:14:12.570 --> 01:14:30.430
Михаил Непряхин: ну платформная команда просто вам какие то без практики испускают сверху а уж ваше, дело Там прислушиваться или нет ну Там лит лит ли Должен как бы решить что Мы берем на вооружение что нет инфраструктурный Код один в несколько и

453
01:14:30.550 --> 01:14:34.570
Михаил Непряхин: проткоманда инфраструктурно куда-то несколько Раз,

454
01:14:35.300 --> 01:14:50.699
Михаил Непряхин: м-м ну короче инфраструктурный Код обычно все-таки это Кот Ген и вы просто сами, для себя генерируете и Вторая часть Этой библиотеки то есть там Всякие блогеры трейсеры метрики обычно это все дается и вы должны это использовать

455
01:14:50.700 --> 01:14:58.140
Михаил Непряхин: это очень часто бывает крым и написано Поэтому вы уж сами. Решаете использовать это или нет но я часто

456
01:14:58.300 --> 01:15:07.310
Михаил Непряхин: переписываю эти Штуки потому что они написаны не очень Талантливыми. Людьми и к сожалению, Там очень часто забаваны

457
01:15:07.690 --> 01:15:10.080
Михаил Непряхин: а стоит бояться большого количества пакете

458
01:15:10.810 --> 01:15:14.230
Михаил Непряхин: да ведь и как по сути Мы занимаемся тем Что просто

459
01:15:15.520 --> 01:15:22.799
Михаил Непряхин: пытаемся сделать так чтобы Кот Не превратился. В спагетти Это все равно неизбежно вопрос времени но Мы эту точку отдаляем

460
01:15:23.130 --> 01:15:29.109
Михаил Непряхин: у каждого модаля свои. Репозиторы или репозиторы общие между Мозгами ну, вот тоже вопрос следующий да

461
01:15:29.210 --> 01:15:32.860
Михаил Непряхин: следующий вопрос то есть ну, хороший правильный вопрос

462
01:15:33.020 --> 01:15:45.970
Михаил Непряхин: вот здесь у меня пример когда у меня юс кейс значит это Единая структура в которую зинжекчины, все зависимости

463
01:15:46.660 --> 01:16:03.060
Михаил Непряхин: то Есть вот он как бы пример депентенси ин джекшн он уже осуществляет и

464
01:16:03.900 --> 01:16:14.699
Михаил Непряхин: довольно дешево потому что как бы это можно сделать с Помощью сторонних приморков можно сделать ну, вот здесь вот только принимать

465
01:16:14.850 --> 01:16:16.579
Михаил Непряхин: надо было вот эти вот

466
01:16:16.690 --> 01:16:27.169
Михаил Непряхин: интерфейсы но одно, как бы не суть главное что, вот здесь оно зин джексона Единая какая-то Есть такая Единая структура можно считать ее как контейнер такой

467
01:16:27.310 --> 01:16:44.860
Михаил Непряхин: Которые Иметь в Себе все зависимости и шарится потом между Юзкейсами и вот здесь куча может быть из кейсов ну так комфортно работать, где-то десять пятнадцать из кейсов потом же перебор становится и надо думать о выделении каких-то доменов как-то дальше делить

468
01:16:45.000 --> 01:16:52.549
Михаил Непряхин: а вот ну где ты штук до двадцати этих из кейсов в Принципе Окей м и любовь, из кейс

469
01:16:52.770 --> 01:16:58.229
Михаил Непряхин: может Всегда, воспользоваться вот этими вот инъекциями которые там уже есть

470
01:16:58.490 --> 01:17:03.969
Михаил Непряхин: и вот этими методами то есть если их будет много то тут, будет ну типа там

471
01:17:04.220 --> 01:17:07.870
Михаил Непряхин: а в посгрее, тут, будет методов вот стука

472
01:17:08.360 --> 01:17:15.939
Михаил Непряхин: там в редисе сколько это будет как-нибудь так и вот любой из этих методов любой из кейс может взять и воспользоваться таким образом Мы

473
01:17:16.100 --> 01:17:21.350
Михаил Непряхин: Получаем легкое Переиспользование а Это, один подход

474
01:17:21.580 --> 01:17:30.450
Михаил Непряхин: То есть как бы на первом этапе я вам предлагаю использовать его как наиболее простой а дальше

475
01:17:30.880 --> 01:17:36.720
Михаил Непряхин: следующие подходы какие могут быть когда мы вот эти вот йоскейсы

476
01:17:36.890 --> 01:17:41.630
Михаил Непряхин: делаем только с теми инъекциями Которые здесь и Сейчас нужны

477
01:17:41.900 --> 01:17:48.960
Михаил Непряхин: То есть если нам нужно только Там один метод вот этот вот то Мы второй метод не тянем

478
01:17:49.220 --> 01:17:54.430
Михаил Непряхин: и когда Вы можно допустим даже один к одному делать у вас просто один из кейс

479
01:17:54.670 --> 01:18:03.770
Михаил Непряхин: и все и вот Он имеет здесь только зависимость и те Которые ему нужны читаю сломан так что

480
01:18:04.950 --> 01:18:07.120
Михаил Непряхин: а вот м

481
01:18:14.960 --> 01:18:22.550
Михаил Непряхин: вам придется Делать много конструкторов от таких потому Что ведь У нас тут нет автоматизации по Эээ Идею

482
01:18:22.900 --> 01:18:34.620
Михаил Непряхин: и У вас появляется много бойлер плейта на сборку и

483
01:18:34.730 --> 01:18:48.690
Михаил Непряхин: просто. Я вам говорю Что как бы на Первых этапах чтобы учиться достаточно Иметь один вот этот вот Контейнер со всеми, независимостями а дальше вот строить столько из кейса сколько вам нужно и То что вам нужно Вы здесь используете

484
01:18:48.910 --> 01:18:59.040
Михаил Непряхин: написали какую-то Ручку какой-то адаптатор кирпичик для другого из кейса потом понимаете ага я могу это переиспользовать вот

485
01:18:59.210 --> 01:19:17.179
Михаил Непряхин: и дальше уже как здесь Усложнять и как вам комфортнее как удобнее это уже дело, вашего вкуса и вы можете здесь экспериментировать опять же как бы здесь никто Не диктует только так и все По-другому никак

486
01:19:17.710 --> 01:19:18.390
Михаил Непряхин: я и

487
01:19:21.840 --> 01:19:29.010
Михаил Непряхин: база данных для каст номер одна, для обоих контекст да

488
01:19:32.490 --> 01:19:44.420
Михаил Непряхин: база данных одна, Ну то есть если смотреть если мы находимся, в рамках одного сервиса то у нас база данных одна чаще всего но таблицы разные таблицы разные обозданных одна

489
01:19:44.970 --> 01:19:54.419
Михаил Непряхин: то Есть как бы ну если мы Делим вот эти на поддомены такие то у нас у каждого подмена своя таблица

490
01:19:55.570 --> 01:20:07.299
Михаил Непряхин: потому что потом когда вы захотите, разделить их физически на разные сервисы а вы Просто по таблицам Легко делится так если они в одной, таблице будут тоже не делятся

491
01:20:07.300 --> 01:20:19.230
Михаил Непряхин: и между ними не должно быть жестких связей потому что если между ними возникают связи ну, либо не надо тогда их делить все-таки это один бау над контекст да как бы они живут вместе не делится оно

492
01:20:19.270 --> 01:20:25.390
Михаил Непряхин: вот иначе, вы получите какую-нибудь распределенную, транзакцию будет только хуже вот

493
01:20:27.030 --> 01:20:36.549
Михаил Непряхин: так домен например, расчетка миссии или промокода ну да да да да если для просчета промокода надо сходить в подгрыз

494
01:20:36.720 --> 01:20:38.409
Михаил Непряхин: то это уже адаптер

495
01:20:41.970 --> 01:20:58.769
Михаил Непряхин: так Давайте дайте Какую-нибудь обратную связь насколько вы Вообще что то поняли понятны ли идеи Не отторгаются ли они Есть ли тут какие то Противоречия с Вашими Внутренними Убеждениями Или все Окей ложится. Нормально все все хорошо

496
01:21:00.170 --> 01:21:08.779
Михаил Непряхин: так супер так напишно данным по плечам Только чувства пробовать Понятно, сложиться нормально так как ей

497
01:21:08.910 --> 01:21:11.730
Михаил Непряхин: Мне кажется, что ну если вы бы Кэнди

498
01:21:12.000 --> 01:21:18.660
Михаил Непряхин: то вы плюс минус как бы ну идей Тут Новых Не, так много было Нужен например проект ну, естественно

499
01:21:18.840 --> 01:21:25.310
Михаил Непряхин: естественно его тут ну, Раз, Только этим и будем? Заниматься да все последующее время поэтому как бы

500
01:21:25.550 --> 01:21:33.749
Михаил Непряхин: у нас тут часть была просто относительно как бы просто Языка а сейчас будет часть уже больше про именно построение проекта

501
01:21:33.960 --> 01:21:41.840
Михаил Непряхин: просто если совсем, тоже не рассказать про язык, ну тут Же Вот как бы Не придется Постоянно откликаться может быть Голосом кто-то хочет что-нибудь спросить

502
01:21:42.050 --> 01:21:45.619
Михаил Непряхин: Можете Тоже, задать.

503
01:21:48.970 --> 01:22:03.959
Михаил Непряхин: Так Окей ладно значит смотрите Мы э очень Много Сейчас еще вопросика почему в диске есть таи профайостракт не лучше ли тая песке есть тракт а то совпадение с одной сущностью замена а если их доминируют несколько бот

504
01:22:04.050 --> 01:22:12.360
Михаил Непряхин: ну это уже отдельное искусство почему весь кризис тай профайл да у меня весь кейс это у меня в доминие

505
01:22:12.550 --> 01:22:26.020
Михаил Непряхин: дамен профайл в дюсске не очень понял о чем речь как бы тайп профайл

506
01:22:27.120 --> 01:22:43.350
Михаил Непряхин: так не лучше летай пескейстракт он ци совпадение с одной сущности замена ну короче смотрите не очень понял Вопросы, ну примерно понимая о чем речь как бы Пронейминг, да ну Как бы, вот снеймингом здесь Гу приходится Очень много кого, давать

507
01:22:43.580 --> 01:22:45.620
Михаил Непряхин: Двадцать седьмая Строчка им давайте

508
01:22:48.870 --> 01:22:59.370
Михаил Непряхин: а ну почему Так Мммм ну нету здесь конфликта типа у меня же да можно Не, виски называть это я просто, как бы тут ну

509
01:22:59.840 --> 01:23:10.880
Михаил Непряхин: и Без Проблем как бы У меня и У меня чаще риски есть просто тут пример я видимо копировал я вот Эту структуру называю эс кейс да

510
01:23:11.260 --> 01:23:30.010
Михаил Непряхин: да-да-да в других примерах У вас есть Было да короче это просто я чего-то откуда-то видимо крепастил. Это У Меня пример из видеоролика я Которого, и очень много тут коперов, и вот здесь Тоже, вот это все в интерфейсе должно быть видите я тут Тоже, оставил как бы лютую я показывал профайлюсь кейс

511
01:23:30.230 --> 01:23:37.499
Михаил Непряхин: да можно и даже профаева. Ставить потому что конфликта Нет потому что Это же в Пакете и кейс вы же Не будете Еще создавать и

512
01:23:37.910 --> 01:23:40.429
Михаил Непряхин: в пакете через кейс то есть вы можете тут

513
01:23:40.960 --> 01:23:43.529
Михаил Непряхин: ну в этом случае все-таки обыски из правильно назвал

514
01:23:44.090 --> 01:24:00.109
Михаил Непряхин: дочь с меймингом, тут отдельная Вообще история как это все уложить ну. Там потом будут живые Примеры это учебный Проект, и

515
01:24:00.780 --> 01:24:06.189
Михаил Непряхин: так короче самая главная часть Она вот в этом

516
01:24:07.330 --> 01:24:14.570
Михаил Непряхин: а дальше идем дальше кто-то это должен У нас Вызывать кто-то это вызывает да то Есть Есть У нас

517
01:24:15.120 --> 01:24:16.440
Михаил Непряхин: Есть кейсы

518
01:24:21.870 --> 01:24:34.070
Михаил Непряхин: а назад два один один из кейс на клевете профайла второй нагет этотнгет этот клеид

519
01:24:34.600 --> 01:24:41.540
Михаил Непряхин: вот и кто-то эти, изкейсы вызывает кто, это делает

520
01:24:42.210 --> 01:24:46.889
Михаил Непряхин: а тут вопрос в зависимости что У нас За приложение какие есть варианты

521
01:24:47.090 --> 01:24:50.600
Михаил Непряхин: ну во-первых У нас может быть Хтп Сервер

522
01:24:54.300 --> 01:25:10.329
Михаил Непряхин: а и Там Буртинка крутится, создает на порту Восемьдесят Восемьдесят а слушатель значит Ждем сюда запросы запрос появился

523
01:25:10.660 --> 01:25:12.080
Михаил Непряхин: Мы вызвали

524
01:25:13.010 --> 01:25:22.559
Михаил Непряхин: ну Там посмотрели на урал какой урал в зависимости от этого Отротили в нужный визкейс ну а дальше там уже все эти базы данных вызвались и так далее

525
01:25:23.550 --> 01:25:32.290
Михаил Непряхин: ну и ответ. Вернули Какие Еще Могут Быть варианты и этот Же самый Виз кейс может Вызвать Джерписи сервер

526
01:25:34.760 --> 01:25:37.350
Михаил Непряхин: Тоже. Там на порту поднялся.

527
01:25:38.960 --> 01:25:52.439
Михаил Непряхин: Там Мы тронули роудинг прошел поняли в Какой вике ему надо тоже Вот он там сходил отдал запрос

528
01:25:53.530 --> 01:25:59.220
Михаил Непряхин: тоже гортинка крутится а у нас может Быть консюмер

529
01:26:03.080 --> 01:26:06.819
Михаил Непряхин: ну кафка Соответственно другого у нас обычно редко бывает

530
01:26:06.950 --> 01:26:17.880
Михаил Непряхин: кафка конюнер что это такое начну есть Некая Очередь тка труба рисуют обычно кавказ как такую трубу

531
01:26:18.290 --> 01:26:25.610
Михаил Непряхин: где У нас с одной стороны сообщения туда попадают а с другой стороны Мы Читаем То есть кто-то пишет Мы Читаем

532
01:26:25.940 --> 01:26:28.430
Михаил Непряхин: понимаем что вызывают вот этот виз, кейс

533
01:26:28.920 --> 01:26:33.580
Михаил Непряхин: ну и соответственно тоже его вызываем а Результат Куда Результат

534
01:26:33.730 --> 01:26:38.520
Михаил Непряхин: ну либо Еще в другую какую-то трубу обычно

535
01:26:40.400 --> 01:26:46.439
Михаил Непряхин: либо, просто в никуда вот Мы просто отработали и все обработали запросы и все как плюнутов

536
01:26:46.740 --> 01:26:56.480
Михаил Непряхин: а То только только принялся Я обработался Или Мы Там стоит поменяли приняли запрос У нас Там есть базы данных вас загля. Мы стоит поменяли и все

537
01:26:57.930 --> 01:27:04.939
Михаил Непряхин: ну и то есть смотрите уже три варианта вот этот код он ничего не Знает об этих парнях

538
01:27:05.180 --> 01:27:12.010
Михаил Непряхин: кто его там будет Вызывать он сам по себе. Самодостаточный, он там свою вольку выполняет а его парники то вызывают

539
01:27:13.330 --> 01:27:25.090
Михаил Непряхин: Нет еще Не все так что, еще может быть может быть воркер воркер который допустим Раз, в минуту

540
01:27:26.690 --> 01:27:28.680
Михаил Непряхин: а в цикле крутится в циклифор

541
01:27:29.090 --> 01:27:31.119
Михаил Непряхин: ну естественно тоже в своей бутине

542
01:27:32.290 --> 01:27:37.060
Михаил Непряхин: а ну и кончумер тоже в своей грутине да То есть Как, будто, Так все это все в своих картинах

543
01:27:37.340 --> 01:27:39.619
Михаил Непряхин: вот и тоже вызывает

544
01:27:39.950 --> 01:27:45.920
Михаил Непряхин: Наш из кейс допустим тоже а просто он вызвал ему Результат не важен. Просто вот какую-то работу надо сделать

545
01:27:47.660 --> 01:27:48.890
Михаил Непряхин: а

546
01:27:49.550 --> 01:27:59.159
Михаил Непряхин: это может быть еще крон джоба ну крон жоба конечно близка к маркеру Ну просто букера пропускаться к личности на крон джоба. Допустим это

547
01:27:59.580 --> 01:28:10.269
Михаил Непряхин: там в определенное время тоже там картина а Спит циклефора проходит время нужное время наступает Тоже там

548
01:28:10.660 --> 01:28:24.079
Михаил Непряхин: вызывает Какой нибудь кейс и Это может Быть селай приложение то Есть ээ Вы просто

549
01:28:24.210 --> 01:28:29.699
Михаил Непряхин: вы пишете сиявая элиту ну То есть вот какая-то да ты Еще откуда взялась

550
01:28:30.700 --> 01:28:39.599
Михаил Непряхин: То есть какая То как У нас вот гоу То есть там с хэлпом Это как бы не проблема на Голову. Сделать там подругается Библиотека

551
01:28:39.970 --> 01:28:43.019
Михаил Непряхин: и вы Превращаете Свое, приложение

552
01:28:43.470 --> 01:28:52.279
Михаил Непряхин: в ком он Лайн интерфейс утелитту и соответственно вы можете Вызвать Команду а под капотом

553
01:28:52.630 --> 01:28:57.639
Михаил Непряхин: Джорница все тот же Ю кейс который Там один Раз, был Написан

554
01:28:57.960 --> 01:29:00.939
Михаил Непряхин: ну здесь Уже Нет гурутины здесь просто вызывается и все

555
01:29:04.050 --> 01:29:04.820
Михаил Непряхин: и и

556
01:29:05.640 --> 01:29:13.510
Михаил Непряхин: ну так вот навскидку, вроде бы все варианты то есть ну вариант в самом деле дофига Там констюмеров много да там может Быть нац

557
01:29:15.190 --> 01:29:24.310
Михаил Непряхин: Тоже свои грутинки крутится вызывает может Быть там куча рэбитен кью

558
01:29:27.590 --> 01:29:29.989
Михаил Непряхин: Тоже там своей грутинки крутится вызывает

559
01:29:30.680 --> 01:29:35.030
Михаил Непряхин: короче как вы поняли вот эта вот часть эскиз,

560
01:29:35.220 --> 01:29:46.520
Михаил Непряхин: он вообще не в курсе а во Всех этих вызывальщиках, они просто вспомогательный код а Поэтому удобно

561
01:29:46.840 --> 01:29:51.660
Михаил Непряхин: абстрагировать юс кейс от этих парней

562
01:29:52.580 --> 01:30:06.260
Михаил Непряхин: чтобы не было никаких Конфликтов ну допустим если вдруг вот этот вот и и просто файл протобав

563
01:30:06.440 --> 01:30:14.139
Михаил Непряхин: с Помощью них генерится Генерация структуры эти структуры оно не специфически

564
01:30:14.350 --> 01:30:18.320
Михаил Непряхин: если вы сделаете эту структуру Аргументом

565
01:30:18.660 --> 01:30:25.660
Михаил Непряхин: который принимает Э кейс то есть если эскиз Будет Принимать вот эту вот сгенерированную протобаф структуру

566
01:30:26.090 --> 01:30:35.250
Михаил Непряхин: то Хтп сервер потом не Сможет воспользоваться этим э кейсом потому Что вы контракт ему закрыли у Него нету этих сгенерированных структур

567
01:30:35.500 --> 01:30:39.750
Михаил Непряхин: тогда вам придется копировать там свою писать да как бы

568
01:30:40.010 --> 01:30:44.260
Михаил Непряхин: так не хочется Делать хочется чтобы вот Логика была универсальная

569
01:30:44.420 --> 01:30:56.080
Михаил Непряхин: и никак Не зависела от вызывающей стороны потому Что вызывающая Сторона она Там вечно работает со Своими Протоколами да Там ну иди с какой то моей. Жизнью он принимаем отдаем ли сон

570
01:30:56.080 --> 01:31:08.639
Михаил Непряхин: здесь Мы продобав принимаем отдаем отдаем про топав здесь Мы можем хоть, про табак принимать хоть закон принимать и еще пятнадцать вариантов разных этих протоколов По которым Мы можем работать

571
01:31:09.460 --> 01:31:13.359
Михаил Непряхин: Ну, Сторонами с этими тут, Попроще

572
01:31:13.600 --> 01:31:18.149
Михаил Непряхин: вот короче для того чтобы У юскейса

573
01:31:18.270 --> 01:31:22.929
Михаил Непряхин: как У самостоятельной сущности, жизнь была проще

574
01:31:23.290 --> 01:31:26.480
Михаил Непряхин: мы вводим такое понятие как дто

575
01:31:28.030 --> 01:31:33.240
Михаил Непряхин: как переводится дто а дто это дата трансфер обджект

576
01:31:33.560 --> 01:31:47.830
Михаил Непряхин: это из миражавы ну, для того вообще изначально была идея создана для того чтобы границу провести чтобы сделать границу. Не просто доменной структурой

577
01:31:47.940 --> 01:31:53.870
Михаил Непряхин: а именно входными выходными данными например, у нас этот

578
01:31:54.770 --> 01:31:58.230
Михаил Непряхин: профиль вот крейд профайр да есть

579
01:31:59.270 --> 01:32:06.119
Михаил Непряхин: значит у него есть входные данные есть выходные данные

580
01:32:06.750 --> 01:32:09.400
Михаил Непряхин: мы конечно можем здесь прямо вот

581
01:32:11.430 --> 01:32:22.220
Михаил Непряхин: по полям сделать все поляк отдельный аргумент можем сделать так чтобы крееть профайл. Уже сразу принимал вот Эту вот нашу доменную структуру

582
01:32:22.410 --> 01:32:24.169
Михаил Непряхин: ну видите ли в чем дело,

583
01:32:24.820 --> 01:32:31.229
Михаил Непряхин: м-м Мы Хотим, Иметь, Контроль над Этой структурой Мы Хотим, сами делать валидацию

584
01:32:31.430 --> 01:32:39.230
Михаил Непряхин: потому что если валидация будет не на уровне из кейса а на уровне вот этого вызывальщика

585
01:32:40.020 --> 01:32:42.069
Михаил Непряхин: то есть вылидаться будет не здесь

586
01:32:42.280 --> 01:32:44.490
Михаил Непряхин: а вот здесь или здесь здесь

587
01:32:44.750 --> 01:32:52.189
Михаил Непряхин: ну во Первых если, вы работаете Одновременно из Этой песть жар птицы вам придется и здесь вылиться Сделать и здесь Влидацию делать

588
01:32:52.740 --> 01:33:00.309
Михаил Непряхин: Но Вы Можете где-то забыть ее сделать короче Неудобно да Поэтому Вы ее делаете один Раз Внутри

589
01:33:00.830 --> 01:33:04.749
Михаил Непряхин: А из Кейса и понимаете что вы ее Никогда не забудете

590
01:33:05.230 --> 01:33:09.760
Михаил Непряхин: а оно нужен, контракт для того чтобы тот кто, вас вызывал

591
01:33:09.930 --> 01:33:14.419
Михаил Непряхин: он Всегда с вами общался на одном языке одними структурами

592
01:33:15.080 --> 01:33:26.580
Михаил Непряхин: как я сказал доменные структуры для Этого не очень подходят потому что доменная структура подразумевается что это что то отражающее бизнес либо. Мапящееся на базу,

593
01:33:26.640 --> 01:33:40.899
Михаил Непряхин: ну иногда и в базу, Делают Сохранение с помощью дто но Я до того использую только на границе между контролерами а да кстати вот эта часть называется контроля вот как бы мы тут говорили вот вот это все

594
01:33:41.100 --> 01:33:42.500
Михаил Непряхин: это контролеры

595
01:33:46.070 --> 01:33:54.900
Михаил Непряхин: это контролеры даже устоявшееся слово вот и я использую дто вот на этой границе

596
01:33:55.180 --> 01:33:59.960
Михаил Непряхин: то есть эээ у меня контролер это ипшный он создает

597
01:34:00.280 --> 01:34:06.730
Михаил Непряхин: гто структуру сходными данными и получает результат тоже в дтво структуре

598
01:34:09.200 --> 01:34:15.669
Михаил Непряхин: и я Их называю консистентами то есть вот у Меня например, называется юскейскереет профайл

599
01:34:15.830 --> 01:34:26.159
Михаил Непряхин: тогда моя структура импута. Будет называться. Клеить профайл. Импут и крейд профайл. Аутут как они выглядят

600
01:34:26.900 --> 01:34:29.790
Михаил Непряхин: нот живут в отдельном файле для простоты

601
01:34:30.070 --> 01:34:37.849
Михаил Непряхин: и значит выходные данные у меня это имя возраст и имайл

602
01:34:38.000 --> 01:34:41.699
Михаил Непряхин: а выходные данные это созданный ее айди

603
01:34:42.580 --> 01:34:49.330
Михаил Непряхин: здесь вы можете увидеть артефакт от джейсона, Поэтому и

604
01:34:51.040 --> 01:34:56.700
Михаил Непряхин: удобно это эти структуры еще использовать для

605
01:34:56.820 --> 01:35:06.629
Михаил Непряхин: а реализации здесь реализации то есть когда вы принимаете запрос от пользователя он допустим похтп придет к вам в джисоне

606
01:35:06.770 --> 01:35:19.410
Михаил Непряхин: вы с Помощью этих структур можете сразу, распасть Энджисон. И превратить в структуру вот эту временную структуру для того чтобы передать ее потом в

607
01:35:19.720 --> 01:35:27.360
Михаил Непряхин: ивкейс и также юс кейс когда потом сделает эту работу отдаст результат

608
01:35:27.470 --> 01:35:35.269
Михаил Непряхин: уже сразу же в структуре которую можно будет здесь реализовать и стерилизация в голландии называется маршей линканмаршлинг

609
01:35:35.570 --> 01:35:44.189
Михаил Непряхин: то есть маршилинг это стерилизация анмаршлинг дес реализация и и если допустим мы работаем с

610
01:35:46.330 --> 01:35:52.239
Михаил Непряхин: про табафом то Там будут свои. Структуры ну. Как. Бы Там в любом Случае

611
01:35:52.290 --> 01:36:07.379
Михаил Непряхин: контроллер джерсичный получит вот Эту структуру просто он ее не сможет сразу использовать и превратить протобав он Там еще и еще одну структуру посредника использует для того чтобы протокол

612
01:36:07.450 --> 01:36:13.090
Михаил Непряхин: ее превратить вот ну тем не менее когда можно как бы

613
01:36:14.000 --> 01:36:19.909
Михаил Непряхин: инжиса он все таки самый частый формат Поэтому в дто Это часто можно увидеть

614
01:36:20.200 --> 01:36:25.450
Михаил Непряхин: То же самое допустим с профилем вот Дуэт и когда я отдаю профиль гет профайл

615
01:36:25.590 --> 01:36:32.129
Михаил Непряхин: значит я принимаю айди то есть это мой контракт будешь кейса удобно когда уюскется из контракт

616
01:36:32.400 --> 01:36:35.650
Михаил Непряхин: а отдаю доменную структуру

617
01:36:36.940 --> 01:36:44.820
Михаил Непряхин: и для того чтобы не заниматься маппингом вот этим постоянным перерывом я даю ее прямо доменную

618
01:36:45.020 --> 01:36:58.200
Михаил Непряхин: и в доменной структуре появляются третий страк теги с джейсоном ну в этот еще Раз и факты это от валидатора то есть у нас есть валидатор который использует Эти, стратегии То есть ну

619
01:36:58.740 --> 01:37:06.280
Михаил Непряхин: эээ для простоты То есть вот быстро. Можно что-то завалидировать а это вот от превращения в резон и обратно

620
01:37:07.330 --> 01:37:22.229
Михаил Непряхин: кто-то говорит что так ни в коем случае делать нельзя что это получается что у нас просачивается, в доменную модель вот эти вот артефакты адрисона, но в бессоне вот так вот устроена стерилизация десериализации,

621
01:37:22.250 --> 01:37:27.840
Михаил Непряхин: если, мы это делать не будем тогда придется прямо на уровне дто создавать копию

622
01:37:28.120 --> 01:37:38.319
Михаил Непряхин: Этой структуры ну просто заниматься тем что вот перекладывать резоны как говорится да То есть как Бы просто заниматься копированием, Ну и если. Можно Избежать то вот

623
01:37:38.550 --> 01:37:41.079
Михаил Непряхин: проще отдать сразу Ну как он домен

624
01:37:41.580 --> 01:37:44.400
Михаил Непряхин: и у вас Все будет. Работать

625
01:37:45.070 --> 01:37:49.519
Михаил Непряхин: плюс значит ээ здесь возникает Еще одно, следствие

626
01:37:49.670 --> 01:37:57.490
Михаил Непряхин: раз эти структуры дто Используются для удобного марша лингаанмар шилинга то а

627
01:37:57.880 --> 01:38:15.229
Михаил Непряхин: по сути они выглядят так как ждет ответ пользователь и они выглядят Так как удобно сделать запрос от пользователя То есть, странно было бы там изобретать что. То Еще промежуточное Другое.

628
01:38:15.400 --> 01:38:27.159
Михаил Непряхин: Отличное от того как нас запрашивает пользователь то есть если, пользователь вот эти вот поля вот он в каком формате шлет в папе ну мы их сразу здесь и принимаем в этом формате

629
01:38:27.260 --> 01:38:41.619
Михаил Непряхин: понятно да что Там со временем это может меняться и тут, придется Там какие-то изменения делать но вот изначально когда вы понимаете что данные вам придут в этом формате вы их вот и в дто тоже в этом же формате и Делаете

630
01:38:41.820 --> 01:39:01.390
Михаил Непряхин: вот то есть дото Удобнее тем что это такой контракт на ньюс кейс и я не парюсь я Всегда делаю Всегда импульс делаюсь Да тут делаю Даже Если там Ну Понятно что Если импутов вообще нет это уж не делаю но Если им туда же состоит из одного поля Например от гет профайл

631
01:39:02.070 --> 01:39:06.620
Михаил Непряхин: у меня вин путя только адишник не столько адишник

632
01:39:07.120 --> 01:39:15.860
Михаил Непряхин: я быть мог бы сделать его а вот Так вот Найди Помидоры стринга Но а

633
01:39:15.990 --> 01:39:32.149
Михаил Непряхин: тогда когда появится Еще одно, поле мне придется его здесь дописать придется Делать изменения Я Поломаю другие места кто это вызывает Ну короче говоря чтобы упростить себе. Жизнь я стандартизирую,

634
01:39:32.720 --> 01:39:35.330
Михаил Непряхин: контракт У юзкейсов

635
01:39:35.610 --> 01:39:45.599
Михаил Непряхин: и получается что юскейцы У меня, это такие микропрограммки Которые тоже, имеют свой контракт он просто видит внутренних структур дто

636
01:39:46.330 --> 01:39:53.579
Михаил Непряхин: просто удобная и такая вот структура посредник

637
01:39:53.780 --> 01:39:58.460
Михаил Непряхин: э которая вот сильно облегчает жизнь во Многом

638
01:39:59.250 --> 01:40:10.270
Михаил Непряхин: вот ну и Анапе становится вернее этот рискей становится более каким-то однородным. Одинаковым вот так

639
01:40:11.060 --> 01:40:15.469
Михаил Непряхин: вопросы? Есть ли здесь вопросы? Давайте значит с Этой частью

640
01:40:19.950 --> 01:40:23.010
Михаил Непряхин: Если. Кто-то голос нам хочет задать то задавать голос.

641
01:40:23.270 --> 01:40:24.780
Илиас Эззахид: Можно колоссм вопрос.

642
01:40:24.780 --> 01:40:25.650
Михаил Непряхин: Дат.

643
01:40:26.200 --> 01:40:28.720
Илиас Эззахид: Аа вы сказали Что.

644
01:40:28.920 --> 01:40:34.909
Илиас Эззахид: Протобав если генери если заниматься кодегенецией эээ этот

645
01:40:35.160 --> 01:40:39.820
Илиас Эззахид: созданный Кот Можешь Там, ломать нашу архитектуру ааа

646
01:40:40.340 --> 01:40:46.500
Илиас Эззахид: как тогда Делать если У нас там как китающий the -хендлеры Есть Граф Кюэль про туба

647
01:40:46.740 --> 01:40:55.509
Илиас Эззахид: то Есть если чтобы Не Ломать архитектуру а если, особенно у нас она одна между многими микросервисами

648
01:40:55.740 --> 01:41:00.680
Илиас Эззахид: то кодегренат кодегенерации становится плохим паторным.

649
01:41:02.410 --> 01:41:08.390
Михаил Непряхин: Ну во-первых мы будем про это отдельно говорить когда про джерси и будем говорить потому. Что тема большая

650
01:41:09.260 --> 01:41:21.600
Михаил Непряхин: а ну если кратко то мы генерированный Код Всегда держим отдельно от э то есть он никак не просачивается нигде не проникает в нашу ваши основные из кейсы

651
01:41:21.770 --> 01:41:25.529
Михаил Непряхин: то есть Мы обособленно от. Него держимся

652
01:41:26.030 --> 01:41:33.019
Михаил Непряхин: и просто используем контракты и просто превращаем и

653
01:41:33.180 --> 01:41:48.789
Михаил Непряхин: там структуры которые были протобавные Мы их мапим вот на эти наши структуры должны и никаких, Проблем, нет на самом деле здесь все просто понятно, потом там дойдем до джерси это посмотрим увидите

654
01:41:51.070 --> 01:42:09.510
Михаил Непряхин: так если взаимодействие. С превожением происходит через телеграмм бот телеграмму Читается контроля ну. Я Не знаю как там телеграмм вызывают По какому протоколу Что Там ну. Там Же все равно учета грибок и

655
01:42:10.880 --> 01:42:31.120
Михаил Непряхин: все Что вызывает наши из кейсы Это все контролеры Поэтому и

656
01:42:31.220 --> 01:42:47.109
Михаил Непряхин: этот структуру папы Пока смотрите То. Есть вот У Меня Я понимаю когда Я Вижу такую структуру Я понимаю что мне запрос программа может начаться с Х Дтп То есть Там Грутина какая-то нахоттп-сервер крутится. Да

657
01:42:47.110 --> 01:42:57.410
Михаил Непряхин: и может Начать М обрабатывать запрос и какая То Грутина крутится. И ждет и скафки сообщения и тоже там дернет какой нибудь из кейс

658
01:42:58.870 --> 01:43:08.139
Михаил Непряхин: так Преобразование для того Другое для того это на Уровне сервиса или где должно Быть и Я и

659
01:43:08.680 --> 01:43:12.319
Михаил Непряхин: либо это делаю ну Если это для того в дто

660
01:43:13.660 --> 01:43:21.370
Михаил Непряхин: смотрите как бы ну Я вижу только один из кейса когда Мы дто Превращаем в структуру Там джерпесишную Допустим да

661
01:43:21.800 --> 01:43:39.440
Михаил Непряхин: а и Ну все остальные Преобразования в основном живут в доминие то есть и

662
01:43:40.020 --> 01:43:57.040
Михаил Непряхин: либо ту, Появляется Частичка либо Фромм Фромм как-то так обычно называется и Иди потом одомен ли Это

663
01:43:57.240 --> 01:44:03.560
Михаил Непряхин: но другого места как Бы и Нет То есть Это все равно будет кирпичиком Это Преобразование

664
01:44:03.620 --> 01:44:21.379
Михаил Непряхин: сетевое оно Нет если бы сетевое Было бы вода повторяю оно Не сетевое где в ньюс-кейсе ну виски если Мы здесь держим либо основной и

665
01:44:21.420 --> 01:44:29.540
Михаил Непряхин: и просто чтобы это не Делать цикл длинным Мы тут еще Маленькие функции сделаем чтобы эти функции уже вызывались в цикле вот

666
01:44:30.100 --> 01:44:37.570
Михаил Непряхин: да а эти все вещи Они органично смотрятся именно в домене

667
01:44:39.360 --> 01:44:43.309
Михаил Непряхин: на так если протобаффа Нет то Можно же забить на него

668
01:44:44.890 --> 01:44:53.020
Михаил Непряхин: а на все Можно забить Так как бы смотрите я все-таки призываю делать через дто сразу. По крайней Мере Попробовать

669
01:44:53.360 --> 01:45:02.979
Михаил Непряхин: Попробуйте да вы можете Попробовать без того а можете с дто как бы много Что Еще было Попробовано но Эволюционно я пришел к тому что я до того использую Всегда

670
01:45:03.900 --> 01:45:11.839
Михаил Непряхин: и даже на вот у Меня, еще появляются структурки свои когда у нас адаптер

671
01:45:12.900 --> 01:45:21.550
Михаил Непряхин: Другой, сервис вот у Меня, здесь Нет но Допустим был бы у нас адаптор Другой сервис значит а

672
01:45:22.510 --> 01:45:28.569
Михаил Непряхин: Это клиент да То есть Допустим у нас Там хат тп это клиент Мы куда-то в другую серию ходим По дтп

673
01:45:29.210 --> 01:45:34.710
Михаил Непряхин: О и Там Я делаю детошки с названием Тоже. Инпутаут

674
01:45:35.410 --> 01:45:41.979
Михаил Непряхин: хотя для Хтп. Исторически принято делать название реквестр спонс

675
01:45:42.790 --> 01:45:52.290
Михаил Непряхин: и так как в целом У нас очень много этих реквестров используется везде мы так сервераем не занимаемся тира пишу У нас стандартные тоже оркестр. Исполнится

676
01:45:52.340 --> 01:46:05.370
Михаил Непряхин: ну и в целом Ведь реквестер, исполнится очень близки и Подлиннее и Начинается оба. Наэро короче говоря в коде Люди часто Путают и ин Путают мне Нравится больше как бы им Путают вот Всегда визуально и

677
01:46:05.370 --> 01:46:34.910
Михаил Непряхин: отличается и удобно и а до того что я использую Только на границе. Сьюзен

678
01:46:36.000 --> 01:46:39.870
Михаил Непряхин: дальше что использовать что не использовать или добавить

679
01:46:40.570 --> 01:46:55.319
Михаил Непряхин: вы все равно должны сами. Провести все эти эксперименты и ну там через два-три проекта когда вы напишите вы поймете, все свои ошибки и в следующий Раз, постараетесь там как-то делать По-другому но проект будет Другой, вы совершите другие ошибки То есть смотрите

680
01:46:55.780 --> 01:47:00.539
Михаил Непряхин: мы плуто вот как бы когда Пишем проекты мы бесконечно Совершаем Ошибки

681
01:47:00.900 --> 01:47:07.510
Михаил Непряхин: Задача Архитектуры сделать Так Чтобы Исправлять Ошибки было Дешево желательно бесплатно

682
01:47:07.600 --> 01:47:26.450
Михаил Непряхин: Чтобы как бы заранее Так Подумать как бы Так когда тут надо было все переделать Чтобы было Не Так Больно шуба эта лапша Не Была как макаронный монстр Очень сильно связаны между Собой и вот Мы занимаемся тем Что Мы делим да вот делим где провести еще границу надо до того не надо до того

683
01:47:26.540 --> 01:47:38.419
Михаил Непряхин: нады интерфейс не надо интерфейс вот здесь у интерфейсов макгонагалл да то есть как бы вот могу не быть интерфейсов легко но практика показывает что если, вы еще проводите границу

684
01:47:38.680 --> 01:47:42.950
Михаил Непряхин: в виде интерфейсов с адаптами да и

685
01:47:43.960 --> 01:47:47.169
Михаил Непряхин: это благостно сказывается на севере диктатуре

686
01:47:47.350 --> 01:47:54.009
Михаил Непряхин: вот ну как бы я не знаю как это работает но вот факт если есть интерфейсы на границе с адаптами вот как Здесь

687
01:47:54.160 --> 01:47:56.369
Михаил Непряхин: сказывается хорошо

688
01:47:56.760 --> 01:48:03.270
Михаил Непряхин: э легко могут и не быть они здесь если тестировать нам не надо моки нам не нужны то интерфейсы технически здесь не нужны

689
01:48:03.450 --> 01:48:14.710
Михаил Непряхин: то же самое и здесь с детошками ну Технически и не нужны ну вот все работать но практика показывает Что если, вы используете детошки

690
01:48:15.040 --> 01:48:20.880
Михаил Непряхин: это лучше, Сказывается на здоровье приложение а вы лучше. Проводите границу

691
01:48:24.190 --> 01:48:33.099
Михаил Непряхин: эээ так где ты удобно когда общаешься с аналитиками фронт и других сразу понят контракт

692
01:48:33.390 --> 01:48:50.759
Михаил Непряхин: ну контракт вообще должен быть либо в лагере либо протопав Поэтому как бы когда я говорю контракт вот здесь ну это скорее Какой контракт Наш внутренний для нас самих так-то контракт по идее он вопенапе да то есть группа напева трей Пожалуйста, с вагеру вот вот он контракт

693
01:48:50.990 --> 01:48:55.400
Михаил Непряхин: ну если, он совпадает с этим ну всем. Удобнее от этого Жить становится

694
01:48:55.660 --> 01:49:03.440
Михаил Непряхин: и конечно Глупо не делать совпадающую вот эту структуру не совпадающую с реальным Контрактом, конечно как к этому. Стоит стремиться

695
01:49:04.040 --> 01:49:06.670
Михаил Непряхин: вализация которая считается Или дурным тоном

696
01:49:06.940 --> 01:49:22.480
Михаил Непряхин: Да Нет Не считается потому что и

697
01:49:22.790 --> 01:49:30.160
Михаил Непряхин: Консолидация тоже интересная история значит я вам говорю Сейчас провалитацию Внутри из кейса вот У нас Есть кейс

698
01:49:31.070 --> 01:49:40.379
Михаил Непряхин: и и Есть Доменная структура и У нее Есть метод солидаций

699
01:49:43.080 --> 01:49:46.610
Михаил Непряхин: а зачем нужен мне тоталитации вот которому виски и сейдерка

700
01:49:49.060 --> 01:50:00.669
Михаил Непряхин: он нужен для того чтобы убедиться что структура в консистентном состоянии что мы Сейчас имеем ввалидные. Данные в этой заменой структуре

701
01:50:00.980 --> 01:50:03.939
Михаил Непряхин: То есть к нам пришли какие-то импу данные

702
01:50:05.890 --> 01:50:14.660
Михаил Непряхин: аа Мы из них состряпали Там не важно как анемичным образом Или с Помощью конструктора об этом уже попозже поговорим о том что тут детоложная тема

703
01:50:14.880 --> 01:50:24.920
Михаил Непряхин: а очнулся стряпали доменную структуру Мы ее провалировали с ок но вот на уровне контролера

704
01:50:27.550 --> 01:50:36.580
Михаил Непряхин: аа тоже может Возникнуть потребность аа провести валидацию на уровне дто

705
01:50:37.000 --> 01:50:44.020
Михаил Непряхин: прямо, вот там тоже что-нибудь такое проверить и вы тогда У аудитории тоже можете написать какую-то функцию волидей

706
01:50:44.320 --> 01:51:08.600
Михаил Непряхин: Но она будет вализировать именно вот входные данные ну как-то это вот короче Не спрашивайте пример и

707
01:51:08.790 --> 01:51:19.140
Михаил Непряхин: ну бывает что не получается здесь вот она здесь тоже возникает можете не методом в лидее сделать можете просто в контроле рф и написать эту валидей как бы ну вот она там больше талинирует

708
01:51:19.350 --> 01:51:20.840
Михаил Непряхин: вот такая тема

709
01:51:37.210 --> 01:51:41.569
Михаил Непряхин: все возможно да все Возможно то есть как Бы э

710
01:51:42.570 --> 01:51:44.930
Михаил Непряхин: я Видел все я Видел все

711
01:51:45.220 --> 01:51:58.799
Михаил Непряхин: и очень, Тяжело провести границу сказать Плохо хорошо ну я Бы сказал допустимо и если эта задача ваша Решает то есть у нас же задача упростить вам жизнь да как бы не усложнить ее упростить уже когда

712
01:51:59.270 --> 01:52:06.610
Михаил Непряхин: м молодым разработчиком спускается какая то, архитектура, или они приходят уже существующий Проект,

713
01:52:07.140 --> 01:52:13.629
Михаил Непряхин: м ну как быть вот эти правила да вот у Меня уже ушел в Два часа для того чтобы вам минимально эти правила рассказать

714
01:52:13.960 --> 01:52:24.329
Михаил Непряхин: они все написаны кровью да то есть они все отвечают эээ ну как бы можно ответить на Вопрос зачем так это как Бы Неспроста тогда

715
01:52:24.570 --> 01:52:32.779
Михаил Непряхин: а оно упрощает реальную жизнь дальше уже думайте там экспериментируйте смотрите сами

716
01:52:32.920 --> 01:52:41.300
Михаил Непряхин: как бы может Быть что-нибудь изобретете прикольно интересное и с теми же дто какую То практику выделить но тут критерий такой если это,

717
01:52:41.630 --> 01:52:44.180
Михаил Непряхин: для читателя болот понятно, и очевидно

718
01:52:44.430 --> 01:52:48.789
Михаил Непряхин: то хорошо если запутано и сложно нужно комментарии писать

719
01:52:49.090 --> 01:52:56.410
Михаил Непряхин: плохо то есть как бы тут Или допустим выбираете между простым и сложным Всегда, выбирайте простое

720
01:52:56.660 --> 01:53:10.490
Михаил Непряхин: Там типа вот написать сложно но Будет мало кода Или а чтобы написать просто надо больше кода ну значит пишите больше колю То есть как бы, трейдов компромисс он должен быть э именно

721
01:53:10.570 --> 01:53:27.200
Михаил Непряхин: и между сложным и простым Выбирайте простое между и

722
01:53:27.200 --> 01:53:31.919
Михаил Непряхин: Или Там Давайте напишем вот Требования У нас Одни

723
01:53:32.050 --> 01:53:39.609
Михаил Непряхин: Но вдруг они Потом Поменяются и надо будет вот Там вот чтобы легко было переписать

724
01:53:40.060 --> 01:53:57.540
Михаил Непряхин: нифига вы не угадаете тоже не партия свод какие Требования Сейчас есть такие пишите Потом Требования другие будут и

725
01:53:57.540 --> 01:54:05.439
Михаил Непряхин: вы все обмажете патерном стратегиях а в самом итоге будет сложно и Не угадайте опять. Же

726
01:54:06.180 --> 01:54:13.029
Михаил Непряхин: можете Объяснить Зачем Рэндер бессонов. По кк а здесь это

727
01:54:15.600 --> 01:54:27.890
Михаил Непряхин: я Всегда делаю Оберточку над тем как я это называется здесь ну вот он где синко называется ну в общем маршелин как бы может называться

728
01:54:28.680 --> 01:54:37.929
Михаил Непряхин: аа видите как Бы довольно много Кода то есть Я Что хочу Я хочу Ууу дать ответ. Хотя ты по серверам

729
01:54:38.180 --> 01:54:46.220
Михаил Непряхин: с определенным кодом Ну, Это просто Куда. Я хочу записать ответ то Есть в тот запрос который Пришел а

730
01:54:46.480 --> 01:54:52.529
Михаил Непряхин: а здесь Боди энни Это любой Объект который Я хочу превратить в Джейсон

731
01:54:52.740 --> 01:55:01.579
Михаил Непряхин: чтобы не писать вот это каждый Раз, просто Тоненькая такая вот короче Хэлпер просто ну как бы это моветон, называть Пакеты Хэлппер Там

732
01:55:01.580 --> 01:55:20.209
Михаил Непряхин: и и вот чтобы здесь много не писать

733
01:55:20.350 --> 01:55:29.670
Михаил Непряхин: я просто говорю что превратив вот это вот вот эту структуру она Там до того чтоная структура И скорее профайла возвращается Мы Увидели Там! Дэкушная структура

734
01:55:29.900 --> 01:55:33.349
Михаил Непряхин: а ну вот она вот эту структуру

735
01:55:34.250 --> 01:55:38.240
Михаил Непряхин: а Преврати в Ресон суда, вот запиши на выход

736
01:55:38.530 --> 01:56:00.030
Михаил Непряхин: чтобы в коннекшн отправить Со статусом ок доктор на смотрешке так короче Это была часть из Чего

737
01:56:00.190 --> 01:56:07.319
Михаил Непряхин: архитектура состоит от на уровне когда у нас уже все проинициализировано и работает

738
01:56:08.110 --> 01:56:15.350
Михаил Непряхин: есть еще Небольшая часть которая отвечает. За инициативу здесь она

739
01:56:15.650 --> 01:56:21.140
Михаил Непряхин: находится пчел здесь водного файля ну короче вот у меня тут Я все в Мейн убрал

740
01:56:23.140 --> 01:56:33.930
Михаил Непряхин: Можно в Папке нетерного создать Папочку Эп и Там это записать аа Чаще делают, так Но вот Здесь показал нам что можно и в мои не это оставлять

741
01:56:34.730 --> 01:56:49.410
Михаил Непряхин: короче есть некоторая часть всяких. Инициаторов конфик надо спасать достать из перемены окружения из файла точка нв и поместить

742
01:56:49.870 --> 01:56:51.070
Михаил Непряхин: в структуру

743
01:56:51.820 --> 01:57:04.110
Михаил Непряхин: конфликт пакета обычно держу на Верхнем уровне чтобы любой дебопс Всегда, залез и посмотрел основные переменные окружения и вообще из Какого конфига состоит наше приложение

744
01:57:04.610 --> 01:57:13.959
Михаил Непряхин: все файлы конфига Находятся в тех пакетах к Которым они относятся это чрезвычайно логично но к сожалению уго разработчиков? Это чуть Пока еще не зафиксировалось

745
01:57:14.200 --> 01:57:24.540
Михаил Непряхин: если конфик относится Всякие инициативы Я Делаю через такие вот Конфиги локальные и обычно конструктор

746
01:57:24.590 --> 01:57:36.629
Михаил Непряхин: который инициативу например сервер он этот конфликт принимает все эти здесь я не стал расписывать Там из чего состоит, мы это еще увидим посмотрим я тут суть как бы сути компонентов архитектуры показываю

747
01:57:38.400 --> 01:57:43.890
Михаил Непряхин: у блогера есть свой конфликт видит много может быть полей, Если

748
01:57:46.670 --> 01:57:52.950
Михаил Непряхин: функция ничего Не отдает а только Инициативу ее принято назвать зенит

749
01:57:53.540 --> 01:58:03.440
Михаил Непряхин: Если Она что-то возвращает То тогда через нее нью-йорк что-то там возвращает ну в случае логера просто ее можно было бы сделать если, бы возвращался например роя

750
01:58:04.240 --> 01:58:18.969
Михаил Непряхин: Эти, все флажки это чтобы из переменных окружения вот этой переменной окружения с таким Названием достать данные Ну тут небольшой фронтчик что По дефолт дефолт Не Можно указание Дефолтное значение Можно указать и можно обязать

751
01:58:19.170 --> 01:58:25.660
Михаил Непряхин: аа чтобы поле. Обязательно было а если, его не будет то приложение не запустится

752
01:58:27.650 --> 01:58:34.090
Михаил Непряхин: а то Есть вот Мы конфигию а получили дальше инициативу вовер

753
01:58:34.530 --> 01:58:41.040
Михаил Непряхин: здесь еще бывает Куча всего и нейтрализация в центре трейсинга оп панциометры

754
01:58:41.140 --> 01:58:45.909
Михаил Непряхин: метрик ну это метреки бывают в оптимметре Внутри

755
01:58:47.660 --> 01:58:50.130
Михаил Непряхин: еще что то какие то инициаторы

756
01:58:51.280 --> 01:58:58.799
Михаил Непряхин: да и то Есть как бы и такая более Инфраструктурная какая-то часть она обычно сразу вначале неницизируется

757
01:58:59.590 --> 01:59:08.420
Михаил Непряхин: потом идет часть сборки компонентов Нашей. Архитектуры как видите здесь

758
01:59:08.860 --> 01:59:20.160
Михаил Непряхин: точно такой же Принцип как сьюзен кэлвин нету смысла здесь размазывать подробности а как там поздравить инициативу как там рэдис инициализируется кафка как инициализироваться то есть

759
01:59:20.310 --> 01:59:26.560
Михаил Непряхин: авторы библиотеки они Всегда дают Широкие возможности по конфигурированию своих

760
01:59:26.980 --> 01:59:34.130
Михаил Непряхин: дети и мы вынуждены Всегда, писать небольшую обертку над тем

761
01:59:34.780 --> 01:59:39.779
Михаил Непряхин: а что Там авторы придумали для того чтобы вот здесь вот

762
01:59:39.980 --> 01:59:46.940
Михаил Непряхин: покороче Опять, же читающему было попроще здесь разобраться что он вообще ненициативу кинцензирован

763
01:59:47.270 --> 01:59:52.240
Михаил Непряхин: по скрю получаем коннекшн резис кавка продюсер

764
01:59:52.570 --> 02:00:05.720
Михаил Непряхин: а дальше мы создаем юс кейс то есть вот мы туда опрокидываем нашей зависимости по зверну прикидываем продюсер опрокидываем получаем наши с кейс получаем его в одном экземпляре

765
02:00:06.640 --> 02:00:14.850
Михаил Непряхин: типа указателю дальше То Есть как Будто сверху у нас идут сетевые адаптации

766
02:00:15.210 --> 02:00:27.989
Михаил Непряхин: Не потому Что их надо инициативы потому Что это кирпичи которые нуждаются в венециализации доменные функции Не нуждаются в венециализации они Там просто работают и все Поэтому сперва идут вот адапторы, инициаторы,

767
02:00:28.450 --> 02:00:35.640
Михаил Непряхин: ну потом получается Мы собираем нашу из кейс потому Что у него других-то зависимостей нет чтобы собрать. Из кейса нужны Только анаперы

768
02:00:36.480 --> 02:00:42.429
Михаил Непряхин: а дальше идет очередь вызывающей, стороне контролеров и тут, может Быть

769
02:00:42.630 --> 02:00:59.500
Михаил Непряхин: Один контролер много Что хоть пять контролеров может Быть да у нас приложение Одновременно может быть и сервером и сиавай Там Только в зависимости От Флагов сборки там оно собирается в нужной конференции Или оно может быть Одновременно исключительно Дтп сервером

770
02:00:59.500 --> 02:01:07.740
Михаил Непряхин: и Кафка Конюмера вот как здесь например, у меня приложение Одновременно и работает в цикле гурутина

771
02:01:08.280 --> 02:01:17.939
Михаил Непряхин: консию Медкавку вычитывает Кафку и Одновременно сервер который обслуживает запросы ждет когда к нему кто то обратится

772
02:01:18.690 --> 02:01:27.979
Михаил Непряхин: а еще может быть Одновременно и джордж и сервер тоже здесь запущен ну естественно во всех. Этих контролерах Внутри где-то есть Гортинка

773
02:01:28.200 --> 02:01:35.020
Михаил Непряхин: где-то ну здесь будет и грутинка да ну в х Дтп сервер я вам же Показывал где там грутинка

774
02:01:36.600 --> 02:01:38.780
Михаил Непряхин: а там точно там есть

775
02:01:42.350 --> 02:01:53.620
Михаил Непряхин: и вот и соответственно юзкейс он будет вызываться над этими товарищами контролерами Поэтому мы естественно его туда должны пробросить

776
02:01:53.970 --> 02:01:58.000
Михаил Непряхин: вот мы его туда пробрасываем ну вот вы заранее создали то пробросили

777
02:01:59.390 --> 02:02:07.140
Михаил Непряхин: и здесь мы считаем что наши приложения запущены работают а но

778
02:02:07.490 --> 02:02:18.970
Михаил Непряхин: также большой частью важной частью архитектуры является, ингрейс фоуша даун Судовой кассу даунта грамотное завершение работы нашего приложения

779
02:02:19.280 --> 02:02:22.089
Михаил Непряхин: так как у нас Есть сетевые зависимости

780
02:02:22.750 --> 02:02:31.619
Михаил Непряхин: и в момент завершения приложения например, нам сигнал посылает кубернетис губернатор посылает нам сигнал сик терм

781
02:02:34.070 --> 02:02:47.500
Михаил Непряхин: а этот сигнал Анторопт Это то же самое что контрце он срабатывает когда мы кон контраце, нажимаем это что будет для локальной откладки а губернаторы будут посылать вот этот сигнал в сектором когда он его посылает он говорит Что все

782
02:02:47.660 --> 02:02:49.519
Михаил Непряхин: пора заканчиваться закрывайся

783
02:02:49.720 --> 02:03:07.459
Михаил Непряхин: Если Там тайм-аут выйдет Если Мы не закоемся То он уже кинет нас по-настоящему но это Мягко он говорит и

784
02:03:07.740 --> 02:03:16.859
Михаил Непряхин: а это мы просто создаем канал чтобы ну так вот такой синтез чтобы получить этот сигнал и дальше мы этот сигнал

785
02:03:17.400 --> 02:03:24.670
Михаил Непряхин: ждем, то есть вот мы здесь блокируемся мы здесь заблокировались до тех пор пока не придет один из этих сигналов

786
02:03:25.010 --> 02:03:36.109
Михаил Непряхин: и все и вот здесь мы зависли заблокировались приложение работает Оно принимает сообщение из сказки Оно обрабатывает

787
02:03:36.230 --> 02:03:41.840
Михаил Непряхин: запрос эпоха дтп серу дальше приходит сигнал

788
02:03:42.040 --> 02:03:51.719
Михаил Непряхин: мы здесь разблокировались потому что получили сигнал ну Можно его Влог записать Можно не писать Так понятно что как, Бы Других вариантов Тут нет Но этот сигнал получаем

789
02:03:52.130 --> 02:03:57.920
Михаил Непряхин: и Мы должны грамотно закрыть ресурсы кафка конюмер закрывается, первым

790
02:03:58.120 --> 02:04:05.379
Михаил Непряхин: Хотят и пояснить Ну хотя это присереры а любакавка контент они должны закрыться Первыми, потому что Мы хотим, больше Не Принимать запросы.

791
02:04:06.350 --> 02:04:19.420
Михаил Непряхин: А Дальше уже и

792
02:04:20.840 --> 02:04:29.539
Михаил Непряхин: а лучше чтобы эта функция квот Не возвращала ошибку чтобы Не надо было действовать в Этой гармонице тамработку ошибок Поэтому я предпочитаю внутри коуза вот здесь

793
02:04:30.240 --> 02:04:35.989
Михаил Непряхин: аа обрабатывать ошибку если, что писать влог именно, он в этом месте чтобы вот это Место, оставалось чистым

794
02:04:36.370 --> 02:04:50.820
Михаил Непряхин: и есть тут вариант я одно. Время упарывался делал обязательно через диферы и

795
02:04:51.310 --> 02:05:02.419
Михаил Непряхин: немножко замусора вот этот этот Год хотелось бы его чуть-чуть почище видеть и управлять вот в этом месте квозами как то, удобнее ты видишь порядок в каком они завершаются

796
02:05:02.610 --> 02:05:04.769
Михаил Непряхин: и важно конечно У

797
02:05:05.090 --> 02:05:11.499
Михаил Непряхин: От Х Дтп сервер умеет нормально закрываться Кафка Не умеет нормально закрываться ей приходится. Там Еще дополнительные

798
02:05:12.180 --> 02:05:16.690
Михаил Непряхин: а Давайте Посмотрим реализацию как грамотно закрыть кафку

799
02:05:16.900 --> 02:05:21.070
Михаил Непряхин: в одной с остальным вроде Проблем нету только сказка обычный гемор

800
02:05:22.320 --> 02:05:27.560
Михаил Непряхин: вот и соответственно когда мы выходим все у нас приложение закрыто оно Не, работает

801
02:05:29.480 --> 02:05:41.509
Михаил Непряхин: а вот и нетализационный код и соответственно его где То, надо помешать где Мы его помещаем вот эти вот все конструкторы ну смотрите это же вещи переиспользуемые так скорее всего вы их

802
02:05:41.510 --> 02:05:56.030
Михаил Непряхин: потянете в другие проекты Раз, так почему бы их не поместить в папке пг на верхнем уровне она для этого Не нужна То есть туда, помещаются какие-то переиспользуемые вещи конструктор это про сервера но он будет плюс-минус За всех

803
02:05:56.760 --> 02:06:01.489
Михаил Непряхин: а во всех проектах Одинаковый блогер какой-то да тоже бодрый знак там метрики

804
02:06:01.670 --> 02:06:10.420
Михаил Непряхин: а ну понятно Что есть метрки кастомные а есть метрики Х дтп сервера но они тоже будут Везде одинаковые их тоже можно как то абстрагировать

805
02:06:10.520 --> 02:06:29.569
Михаил Непряхин: суппан телеметры работа ну вот какие-то Хэлпперы да Там с маршингом ан марфингом ну тамзакционные какие-то Раперы У меня такой будет рапер ну потом Посмотрим реализацию тоже его можно абстрагировать и вот эти, вот вещи они уезжают в приватной репозитории

806
02:06:30.940 --> 02:06:36.430
Михаил Непряхин: в отдельной модули ну Там типа Проект, был обычно назад как-нибудь липс Но там

807
02:06:36.560 --> 02:06:48.619
Михаил Непряхин: и вы можете Переиспользовать Это в Других. Проектах ну и в целом как бы так смотрите если понимаете что что-то можно вынести что постоянно

808
02:06:48.820 --> 02:06:51.800
Михаил Непряхин: вы пишете. Что Ли шубы Кот Не копировать

809
02:06:52.220 --> 02:06:57.670
Михаил Непряхин: а вы можете его Вынести сперва в пг на первом этапе. А потом постепенно грибы

810
02:06:58.680 --> 02:07:04.800
Михаил Непряхин: вот и Это, все из Чего состоит архитектура

811
02:07:06.470 --> 02:07:11.720
Михаил Непряхин: То есть понятно, что, вот в доменах вот Здесь еще Здесь как, я сказал свой мир

812
02:07:13.100 --> 02:07:24.790
Михаил Непряхин: а ну в большинстве проектах вы будете видеть такую историю ну даже не, такую вот даже вот этот конструктор это уже такой элемент дидижней даже вот это вы не будете видеть на самом деле вы будете чаще всего видеть просто

813
02:07:25.180 --> 02:07:31.770
Михаил Непряхин: просто профиль ну Или там кутовалидацию и может какие-то там небольшие, функции ааа

814
02:07:32.160 --> 02:07:35.340
Михаил Непряхин: аа То Есть обычные коды они вот так утряют

815
02:07:36.290 --> 02:07:45.240
Михаил Непряхин: вот аа если у вас развесится Отменная модель, ну соответственно у вас появляются здесь Внутри папки домен на папке

816
02:07:45.240 --> 02:08:06.879
Михаил Непряхин: а уже с конкретными поддоменами и это и

817
02:08:07.140 --> 02:08:18.829
Михаил Непряхин: Если вы поймете ну поработаете с Этой Архитектурой Дальше вы уже можете думать, О своих каких-то там Оптимизациях если вы ее поймете прочувствуете

818
02:08:21.240 --> 02:08:23.190
Михаил Непряхин: короче какие это уже

819
02:08:24.080 --> 02:08:34.360
Михаил Непряхин: приспособление к проекту именно но дефолтна как Будто эта архитектура закрывает все потребности вот Поэтому мы тренироваться. Будем, на ней

820
02:08:35.910 --> 02:08:41.009
Михаил Непряхин: так давайте значит куньте обратную связь или Понятно силеок

821
02:08:41.520 --> 02:08:44.440
Михаил Непряхин: Нет ли Какого. То Отражения Непонимания.

822
02:08:45.800 --> 02:08:47.180
David R: Можно, вопросы.

823
02:08:47.180 --> 02:08:48.369
Михаил Непряхин: Да Давайте.

824
02:08:49.750 --> 02:08:51.299
David R: Нормально слышно.

825
02:08:51.300 --> 02:08:51.640
Михаил Непряхин: Да.

826
02:08:51.640 --> 02:09:01.959
David R: А вопрос такой а Сначала когда Пилится, Проект, с Нуля я не думаю Что Всегда этот Проект, пишется прям вот э микросервисами

827
02:09:02.040 --> 02:09:12.749
David R: наверное Сначала делается какой-то монолит и монолит наверное Это Будет модульный монолит чтобы можно было потом или конкретную модуль Вынести в микросервис или вообще все разбить на микросервиса и запускать все отдельно

828
02:09:12.840 --> 02:09:30.270
David R: и в данном случае мы можем текущую и.

829
02:09:30.700 --> 02:09:32.800
Михаил Непряхин: И это.

830
02:09:32.800 --> 02:09:34.900
David R: У нас получается. Модульный монолит.

831
02:09:35.660 --> 02:10:05.550
David R: В и там из каждого Модуля Уже подключался конкретный и

832
02:10:05.550 --> 02:10:14.619
David R: а в данном случае как можно вот не писать ну получать у нас файл мэйн Будет раздуваться. И раздуваться как можно его сделать Так чтобы файл мэн тоже был

833
02:10:14.620 --> 02:10:21.950
David R: Таким аляхабом который Будет все вот эти роутеры в одно место, собирать и Там а-ля условно

834
02:10:22.160 --> 02:10:26.840
David R: старт, Или ран запускать чтобы Это, было такое короткое.

835
02:10:28.550 --> 02:10:36.890
Михаил Непряхин: Ну да естественно как бы это ваш, вопрос это классическая классическая задача отвестись, естественно

836
02:10:37.310 --> 02:10:42.100
Михаил Непряхин: тоже есть пример у меня на этот счет вот

837
02:10:45.540 --> 02:10:52.350
Михаил Непряхин: короче говоря час репозитора из кино вот этот репозитор

838
02:10:56.500 --> 02:10:59.860
Михаил Непряхин: это вот У меня, максимально тут, как, бы учебный проект

839
02:11:00.120 --> 02:11:03.130
Михаил Непряхин: только что Мы смотрели то есть Я тут,

840
02:11:03.140 --> 02:11:20.319
Михаил Непряхин: и старался, упростить вот но до Самых вот Основ да чтобы проще, было Некуда понятно, что в реальной жизни все сильно сложнее и ну вот мейн обычно Это, просто ведь, у Шуток в центре панцилемметры ну как бы блогер вот а дальше уже

841
02:11:20.360 --> 02:11:22.499
Михаил Непряхин: дальше у нас идет уже ответвление

842
02:11:23.130 --> 02:11:39.390
Михаил Непряхин: а тут видите можно Делать вот так вот можно выделять зависимости вот так вот прямо, по Контейнерам дальше этот контейнер проббросить ну вот мы тут, все пронициализировали адапты пронициализировали

843
02:11:39.720 --> 02:11:46.369
Михаил Непряхин: дальше идет, инициация доменов вот у меня здесь как Раз, я как будто бы начал такой проект

844
02:11:46.540 --> 02:11:53.240
Михаил Непряхин: модуль не монолит значит я подразумеваю Что потом когда-то я оставляю Себе, возможность

845
02:11:53.340 --> 02:12:02.090
Михаил Непряхин: эпо будет самостоятельным сервисом но Сейчас пока это модульный монолит я там внутри делаю такую структуру заранее ну про которую то что. Говорили,

846
02:12:03.250 --> 02:12:14.899
Михаил Непряхин: и отдельно его собираю вот здесь внутрь пробрался. В Вот этот Вот контейнерчик, с зависимостями и Вот отдельно собираю здесь Вот Вот этот Вот конкретный Джентльмен

847
02:12:15.450 --> 02:12:20.360
Михаил Непряхин: ну и Вот собственно То что, вы только что, сказали ну вот как бы это то же самое.

848
02:12:22.290 --> 02:12:28.689
David R: А получается оно Собирается в единую. Структуру Внутри интернета.

849
02:12:30.190 --> 02:12:38.340
Михаил Непряхин: Да оно собирается не то что даже в единую структуру просто здесь все происходит создает через кейс из зависимостей

850
02:12:38.830 --> 02:12:51.439
Михаил Непряхин: и ну вот надо вот роутер вот раутер надо кафка кончумер вот кавказка конец умер и так далее то есть это становится самостоятельной программой в рамках

851
02:12:51.800 --> 02:12:57.299
Михаил Непряхин: нашли нашегоронтайма их может быть бесконечно много как бы

852
02:12:57.980 --> 02:13:15.139
Михаил Непряхин: и ничего же вас не ограничивает то есть прантай может быть гигантский. Вы можете кучу кучу всего контролеров крутить куча это может быть очень огромный, монолит то есть как бы вот это уже позволяет в принципе сделать ну плюс-минус что угодно

853
02:13:16.310 --> 02:13:30.310
Михаил Непряхин: но так обычно Не Делают потому что все-таки обычно выделяются отмены быстро и уже там и

854
02:13:30.380 --> 02:13:36.950
Михаил Непряхин: будь как бы у молитва Еще минус что вы постоянно. С коллегами должны их толкаться да конечно в разных папках, будете делать Но все равно

855
02:13:37.300 --> 02:13:41.660
Михаил Непряхин: гу-м надо Будет конфликт решать стендаря ну хорошо такое.

856
02:13:41.660 --> 02:14:09.630
David R: И и да может еще что-то там валиться.

857
02:14:10.180 --> 02:14:11.290
Михаил Непряхин: Может

858
02:14:11.550 --> 02:14:25.610
Михаил Непряхин: аа обычно Ну смотрите консю Мир. Можно отдельно. Запустить здесь. Просто Единица запуска если вы хотите, конюмер отдельно. Запустить вы можете собрать отдельный конюмер назвать его здесь эп дефис конюмер

859
02:14:25.750 --> 02:14:30.800
Михаил Непряхин: Я Всегда называю главное приложение эп

860
02:14:31.090 --> 02:14:37.509
Михаил Непряхин: по одной причине чтобы в доктор файли вот это вот не переписывать нокин, фару получается универсальный

861
02:14:37.780 --> 02:14:56.019
Михаил Непряхин: вот Поэтому как бы если одно приложение то он Всегда называетсяэп ну и как бы главное ну здесь Тоже, ведь и

862
02:14:56.060 --> 02:14:57.910
Михаил Непряхин: один бинарник вот и все

863
02:15:03.520 --> 02:15:14.280
Михаил Непряхин: так все из лекцию цвешь в приятной весне спасибо Окей так ладно

864
02:15:14.860 --> 02:15:23.380
Михаил Непряхин: следует на следующем уроке уже будем разговаривать про подходы котфест написание сервера

865
02:15:23.750 --> 02:15:43.740
Михаил Непряхин: уже был такой более боевой пример и

866
02:15:43.910 --> 02:15:53.029
Михаил Непряхин: шубу Уменьшить. Количество файлов и абстракций тут так слишком много сложностей приходится. Объяснять Поэтому здесь у меня, как бы задача была

867
02:15:53.230 --> 02:16:04.999
Михаил Непряхин: провести границы между Модулями да, как бы объяснить какие типы бывают этих модельков

868
02:16:05.410 --> 02:16:10.010
Михаил Непряхин: и самое главное чтобы вы поняли да как вот выделять

869
02:16:10.340 --> 02:16:13.180
Михаил Непряхин: какие-то вещи такие как адапторы отдельно.

870
02:16:13.530 --> 02:16:17.200
Михаил Непряхин: И показать как оно все Собирается

871
02:16:17.340 --> 02:16:20.330
Михаил Непряхин: вот если бы мне кто-то такое вот прям показал типа

872
02:16:20.460 --> 02:16:26.660
Михаил Непряхин: лет пять назад ну нет больше лет семь, назад Скажу. Вот если бы что-нибудь такое было или вы этому учили хоть где-то еще

873
02:16:26.800 --> 02:16:31.900
Михаил Непряхин: то блин я бы сэкономил кучу кучу времени. И проекты были, бы сильно лучше

874
02:16:32.070 --> 02:16:35.560
Михаил Непряхин: вот Поэтому завидую вам Что У вас Есть такая возможность

875
02:16:36.719 --> 02:16:43.170
Михаил Непряхин: вот ну. Ладно все Тогда Давайте всем. Пока увидимся на вторник.

