Подготовка к собеседованию на PHP Developer
Менторы
Специалисты своей области, которые смогут помочь вам
Middle .Net Developer
Senior Product Manager
Middle Python Developer
Ведущий программист
Backend Software Engineer (PHP)
Senior .NET/C# developer
Middle DevOps Engineer | Tbilisi, Georgia
Middle C# .NET
Senior PHP-разработчик
Middle python developer
Каналы
Полезные Telegram каналы и чаты
Транскрипция видео:
сто [музыка] надеюсь так вроде все пошло посмотрим как она будет окей меня зовут кирилл тебя и так понял зовут ваня судя по подписи собственная я сегодня проведу такой тестовый собесе так понимает так понимаю что то участво конкурсе и выбирала правильно подскажи пожалуйста сразу сколько по времени ты ограничен да вообще-то нет не ограничен ну это хорошо я просто потому что там если вдруг этот час полтора где-то вот таких пределов час-полтора до двух часов постараемся выложиться посмотрим как оно
00:00:00 - 00:02:01
пойдет хорошо тогда давай чтоб я чуть больше понимал бы грамм расскажи пожалуйста вот не интересует где вещи твой текущий опыт который у тебя собственно есть на данный момент и если ты уже присмотрел какую-то вакансию или может быть какую-то компанию то какие там есть требования или нужно чтобы ты хотел обратить внимание а вот во время нашего общения мой опыт в разработке то есть примерно две три тысячи четырнадцатого года то есть у меня образование неэтично я не заканчиваю как бы технический вуз но
00:01:08 - 00:02:29
не не пойти специальности в общем то через пару лет дед и переквалифицировался так скажем собственными силами в сторону идти и в общем где-то вода 2014 нашел какую-то первую работа такой староста жесткого типа так скажем ну соответственно я работал сначала в основном это было заказная разработка веб-сайтов работала там небольшой студии потом я работал в продуктовой компании там стартап который занимается автоматизация my процессов для лабораторий неразрушающего контроля потом стартапа кончилось финансирование и нас можно
00:01:53 - 00:03:42
сказать всей командой выкупила другая компания ну то она такая как бы была короче свои ребята мы всей командой ушли в проект который занимается доставкой видеоконтента там причем они в основном там на штаты работают теле бриз называется что-то между под доставкой видео контент это брат кастинг или что это такое ну да то есть у них там какая-то тема была такая ну то есть у них там свои медиасервера у них там сидел они в общем услуга заключалась в том что они на территории соединенных штатов предоставляли трансляцию разных
00:02:49 - 00:04:29
локальных телестанции там из европы из россии вот каким-то местным типа диаспорами так далее понял которые по другому никак не не посмотреть именно там вот ну этом недолго проработал около 3 месяцев там потому что у них было такое legacy с которым просто невозможно было работать на меня там еще были свои планы на небольшое путешествие было вот и после этого где-то через полгода и опять вернулся в тот проект который на занимался который занимался с лабораторий неразрушающего контроля ну и собственно
00:03:41 - 00:05:09
можно сказать что в настоящее время я как бы все еще в нем но у него опять проблемы с финансированием поэтому не в таком подвешенном состоянии что скорее ищу работу вот я тебя понял и сколько всего получается ты там проработал если в сумме вот за 1 2 раз за 1 2 1 это надо в режим и посмотреть не суть важно там 2 года 3 года 5 лет ну года 22 с половиной где-то так я думаю окей ну и подскажи пожалуйста тогда с каким стеком ты сейчас работаешь это пищу и 2 оргрэс ну вот снова вам все ну то есть у нас там есть еще конечно
00:04:27 - 00:06:19
всякие штуки типа там сервера мгновенных сообщений потому новых сокетах ну это как готовое решение больше я понял архитектуры отчасти микро сервисная часть монолит меня не до распиленный то есть в стандартном таком положении находитесь когда был монолиты решили что пора его делить да и вот потихоньку вы носите различать разные части да типа того ну там было как бы скорее сразу задел на то что нам нужно микро сервис и потому что у нас там планировалась как бы несколько web приложений которые должны у
00:05:26 - 00:07:01
них должны быть в общем общие компоненты то есть чтобы они работали с одними и теми же сервисами это понятно потом как бы прелесть всех сервисов и микро сервисов но обычно я между что на микро сервис и начинают распиливать когда там например там растет команда растёт продукты нужно разделять там чтобы там уменьшить сложность и чтобы масштабировать общем а тут как бы таких проблем еще не было собственно но причиной распила могут быть разные в том числе и про которые говоришь ты но это такая очень тонкая грань и не всегда
00:06:19 - 00:07:49
из-за того что растет команда выгодно действительно прямо перед нами к сервису ладно но это это такой подскажи пожалуйста а вас получается вся и и монолитный микро сервиса пишите на виктору правильно ты пропал я не раз слышал что было в конце говорю подскажи пожалуйста вы и монолиты микро сервисе все пишите найди втором правильно ну да один из микро сервисов на slimy остальные на или [музыка] используйте докер vagrant что-нибудь такое культа контейнеризации виртуализация да там для каждого сервиса и то есть
00:07:05 - 00:08:33
своя decker сборка ну то есть все можно поднять там через докер компас плюс я там делал еще как бы общей моих файл который является таким ну что-то типа gate в над всем вот этим под множеством там сервисов которые собственно проектируют все запросы и то есть через который можно отдельными командами там все сервисы поднять и сервис потушить там и так далее какие то выполнить действия над ними понял а вот что продакшне на текущий момент как раз вот это вот [музыка] докеры ну в общем вот этот докер обвес
00:07:55 - 00:09:35
который я писал он планировал сначала чисто для локальной разработки мною потом решили что мы его можем выкатить в продакшен как такой как переходный период пока нет нормальной регистрации в общем и потом все перевести там либо нас форм либо на cabernet основу скорее всего нас вор окей окей понял а подскажи пожалуйста что вот сводит свои обязанности на какой позиции ты находишься чтоб я понимал какие вопросы насколько глубоко там могу задавать ну вообще я лично свой уровень оцениваю как наверно мидл и может
00:08:52 - 00:10:26
отчасти синие ну как бы на позиции я нахожусь синий разработчика ну то есть вот последний вот этот год [музыка] то есть проект живет в таком режиме больше саппорта каких-то такие только критические изменения вносятся какие-то не затрагивающие именно fitch и там бизнес-логику то есть это много очень рефакторинга им занимался за последний год то есть и по сути я был единственным разработчикам то есть вот в таком состоянии стартап то есть как бы деньги должны были прийти на то чтобы нанять нормальную команду но
00:09:46 - 00:11:30
собственно так и не пришли заказчиков в общем то вроде это были договоренности но там что-то не срослось ночью бывает так понял поэтому сейчас команде сколько разработчиков ты один или кто то есть тобой ну есть я есть еще devops который занимается непосредственно разворачиванием боевых серверов черта все что с ними связано тем занимается он я понял а подскажи вообще опыт работы в команде у тебя есть как таковые может быть там в том стартапе в котором не срослось ну вот веб-студии [музыка] именно бы киндеров было до
00:10:38 - 00:12:15
4 5 человек на проект ну то есть сама команда больше там и front in der и соответственно проджект-менеджеры так далее так конечно но потом я в команде есть но не в каких-то там супер больших [музыка] вот так где компания занималась доставкой видеоконтента там штат разработчиков был порядка пятнадцати двадцати человек понял хорошо окей так в принципе мне background так поверхностно понятен чего туда где и как подскажи пожалуйста на давай так на какую позицию ты вообще сейчас смотришь вакансии может быть на
00:11:31 - 00:13:02
какую-то сумму на конкретную или от какой-то да там белки чтобы я тоже но понимал в каких пределах по вопросам тебя немножко погонять или ты пока не знаю вообще я ну пока не знаю есть конечно какие-то хотелки по этому поводу и ну еще в общем когда я вот сейчас смотрел вакансии это было типа medals лишь сеньор [музыка] сколько в долларах прости это недавно проводил озон короче contest сори мне походу ты немножко потрясающе я вижу что я как как бы тебя перебиваем с интернетом сколько этого долларов так плохо с
00:12:19 - 00:13:59
курсом сейчас где-то 3000 вот 3 ну как бы и может быть так чуть повыше да там трех с половиной часа ну я примерно чтобы понимать ориентир какой то есть не важно ты говорил про озон про то что был photo contest да они в общем набирают сейчас набирали курс на его разработчиков ну я на гол тоже немного изучал и хочу даже писал там по мелочи ну просто решил вписаться ради интереса то есть они там кто входит в какой-то их топ там типа top100 из этого контеста типа они берут на этот курс и в конце курса
00:13:22 - 00:15:09
делают офферы в общем тем кто себя хорошо проявил ну и о чем я туда вписался и это длится два месяца ну и решил что хочу попробовать именно светиться на гол вот если не зайдет или не выйдет будут продолжать искать печь пышные вакансии [музыка] понял тебя но я к сожалению погоде погонять не смогу потому что сам в нем только разбираюсь но подписчики пакет но правильно я понимаю что говори мне сейчас именно в бэг-энде не акустики и где-то условно middle плюсе не хорошо тогда поехали и такое давай сразу
00:14:29 - 00:15:59
вопрос в лоб раз вы решили использовать микро сервисы у себя на проекте то подскажи пожалуйста какие микро сервисные патроны ты знаешь микро сервисные паттерны если честно не встречала именно как паттерны что под этим подразумевается то есть это как они могут между собой общаться bass паттерны или антипатии таковых паттернов микро сервисных я не знаю я как бы у меня есть какая-то какие-то знания но формализовать и в паттерны я не могу окей я понял тебя но смысле они действительно существуют да это правда против отношений
00:15:19 - 00:17:02
взаимоотношения между собой то есть что если у тебя допустим там было сервиса находится грубо говоря прям рядом или если один там содержит базы 2 не содержит один обращается через другой в общем они как бы есть если вдруг вы дальше будете развиваться в этом плане тебе рекомендую как минимум понять про них почитать почему часто пирата чем-то не знаешь а потом такое прочитал что короче чуваки уже что-то придумали используют то возникают мысли как это спроецировать и прикольно завязать своих проектах
00:16:27 - 00:17:36
поэтому их на самом деле там очень много но достаточно там основных типа агрегаторов о прокси как в бочку построить и так далее то есть главное найти основные потому что там в разных источниках 20 50 но на этом не знаю первых хотя бы десяток понять все достаточно не сложно но прикольно когда хоть такой шпаргалка есть окей давай еще немножко про сервисы поговорим а что такое встретилась что такое the state это [музыка] когда ну программа либо сервис соответственно хранит в себе состояние либо не хранит
00:17:02 - 00:18:33
то есть это как это работает стыд лаз в каком контексте или стоит ну вот встретилась server service to micro сервис как как он будет выглядеть или может быть ты можешь привести пример так он игра сервиса пример такого микро сервиса может быть например там сервер [музыка] например сервис отправки email-сообщений то есть он будет стоить 1 то есть он не хранит все состояния то есть например отлавливает событие там из shinee и на их основе составляет email и и там отправляйте куда хорошо у него нет там собственной базы
00:17:53 - 00:19:32
или у него может не быть собственной базы может быть особенно в этом скорее всего будет отличие правда то есть если мы будем передавать параметры например от имени кого отправлять там куда отправлять тексте как называеться неважно тем кем сообщения тогда он будет 100 если допустим нам нужно хранить какие-то параметры где-то до то скорее всего будем хранить их где-то в банке и уже он будет идти мышцы и заговорил прошина события ваш пожалуйста подробнее рассказать что это такое и зачем оно используется
00:19:09 - 00:20:33
машина используется для асинхронного асинхронной передачи данных то есть данные как правило то есть формируется некое событие которое содержит какую-то информацию есть получатели этого события которые как-то на него реагирует и на основе этих данных которые в нем зашиты производит какие-то действия ok в чем преимущества и недостатки до вот таких вот асинхронных вызовов относительно мы же можем тоже самое передавать синхронно докинуть круглом попили еще как-то но почему-то ставим гулом шину в чем превышать в чем
00:19:55 - 00:21:40
недостатки ну первые первое преимущество в том что нам не нужно когда мы делаем запрос на мне нужно пока отработает там вся синхронная цепочка запросов там по нескольким сервисам типа ждать его ответы то есть может отработать один сервис сформировать какое-то событие отправить его в шину и ну дальше уже отдать какой-то ответ пользователя который производил это действие потом уже асинхронно будет сделан и какие то другие так скажем действия которые были поражены тем и событий а также это позволяет делать
00:20:50 - 00:22:37
сервисы более автономными то есть они меньше знают друг о друге случае синхронных запросов нам нужно знать конкретные то есть конкретный api сервиса и там ну то есть сервисы уже как бы знают друг о друге довольно много эти случаи когда мы формируем событие в принципе тому сервису который его отправляет вообще как бы безразличны какие дальше будут с ним отделаны действия то есть он в принципе об этом не знаю наверно это основные такие плюсы этого подхода [музыка] например по каким-то это событие например может быть не
00:21:52 - 00:23:50
обработаны там где оно должно было быть обработано и там тот начальный сервис об этом никак не уже хотя должен ли узнать ну то есть случае если бы это был асинхронный синхронная обращение если станут сервис что-то упало мы бы сразу узнали что дальше по цепочке случилась ошибка случае шины мы должны использовать какие-то уже другие способы работы с этой ошибкой которая случилась другом сервисе ну и плюс например если у нас есть работа с базами данных в нескольких сервис когда что в одном сначала сервисе должно быть
00:23:01 - 00:24:37
записывать на какая-то информация потом на основе этого события в другом сервисе то есть и это эти данные должны быть как бы связаны а у нас нету каких-то там распределенных транзакций и для этого и соответственно вторая порция информации не записалась в сервисе который нужен был ну а в первом записался мы получаем уже не консистентных данных а как этого избежать значки какой-то паттерн или подход [музыка] ну мне не приходилось с этим сталкиваться и ну я смотрел например [музыка] какие-то видео на эту тему что
00:23:51 - 00:25:23
даже во-первых есть насколько я знаю их вообще не особо используют потому что сам механизм который управлять распределенными транзакциями становится ну становится таким узким местом который можно влиять и раввина отказоустойчивость систем использовать абсолютно разные servername лет американцы синтез нам нужно соблюсти но в рамках нескольких микро сервисов давай сразу буду комментировать что в конце к этому не возвращаться потому что простота могу забыть в общем но если что почему собственно и начал сразу под этой
00:25:03 - 00:26:27
теме идти часто на собеседованиях на уровне мидл и синие но в большинстве компаний которые стараются действительно понять что же и как же человек мыслит будут задавать вопросы по тому опыту который ты ему расскажешь начал да то есть если ты будешь рассказывать про микро сервисы и про докер но про то что будешь как бы там просто под который будешь говорить поэтому будут стараться не спрашивать чтобы понять насколько глубоко ты там как бы закапывал ся поэтому если ты себе себя чувствуешь уверенность в каких-то
00:25:54 - 00:27:20
вопросах может быть то как бы возможно стоит называть какие-то чуть более свои сильные стороны и такая вот хитрость небольшая понятное дело что твоя с одной стороны твоя задача как разработчика заключается не в том чтобы настраивать архитектуру но исходя из того опыта который вызвал что ты сейчас один вместе с 2 сам это настраиваешь можно сделать хочет этим но как бы усердно занимаешься поэтому как бы отсюда и полетели вопросы давай тебе немножко по ответам подскажу значит смотри поттером который помогает
00:26:36 - 00:27:49
делать вот такие вот транзакционные действий между микро сервисами есть такой подход один из называется например сага когда ты грубо говоря делаешь назовем это сценарий до который будет идти по определенным шагом дергая различные сервисы или микро сервисы стараясь выполнить в них те или иные операции случай если не дождется подтверждение то для того чтобы не было ни консистентной стиву каждой операции есть компенсирующая операция на случай если цепочка не дойдет до конца и на каком допустим там 5 действий допустим
00:27:13 - 00:28:27
на четвертом мы заглохли то будете кино то события у всех предыдущих вызвать компенсирующий операции чтобы вернуть состоянии к первоначальному положению дальше для того чтобы не было вот и родника себя который ты говоришь так по синхронным и асинхронным в принципе неплохо есть важная важный нюанс вообще асинхронные штуки чтобы кстати используя kerabit наверное как многие мы не не используем асинхронных штук настолько синхронно и взаимодействие неплохо просто договорился заговорил за шина я подумала что что вы знаете в общем да
00:27:50 - 00:29:19
основных смысл в большей степени в том что [музыка] короче когда тебе синхронном взаимодействии есть у тебя всегда так как это microserver сюда или сервиса то у них будут сетевые запросы но сеть но не является стабильной штукой поэтому вполне вероятно что сетевые запросы где-то как-то не доходят падают и так далее при этом асинхронные но типа шины неважно очередь и что угодно имеют механизм r-drive просто из коробки да просто типом его подались куда-то отправить заканчивать какое-то событие что-то с ним сделать у нас не получилось
00:28:34 - 00:29:59
сообщение будет лежать в очередь для тех пор и повторять к у тебя-то сервис не поднимется но допустим эти микро сервис упал ты пытаешься что-то сделать не знаю списать деньги добавить пользователя возьмите это данные и у тебя при асинхронном подходит будет она ретро its прогрессировать не поднимется будет накапливаться очередь их запросы на только он поднимется типов все запросы которые накопились в очереди выполнил и как бы все хорошо система пошла концертное состояние при синхронном подходе но без коробки такого
00:29:17 - 00:30:23
ней да там приходится либо пилить что-то на коленке в общем вот это вот основное прим ну сильное преимущество почему чаще стараются использовать этот подход на счет того что ты говорил что в одном случае а в другом случае события которые не раскрывают знаний сервисом друг о друге это немного спорная штука потому что обе это по факту контракт который сам сервис я вот предоставляет в мир и так как я себе придумал так ко мне кто-то будет обращаться и звони точно также и события это контракт который если я куда-то
00:29:49 - 00:31:07
плюнул то кто то с ним должен как-то считаться то есть это просто контракт из двух разных сторон это не добавляет каких-то определенных знаний друг другу да то есть это просто знание контракте знаний об интерфейсе это нормально то есть я бы наверное если нет какого-то прям хорошего конкретного примера почему вот так я бы наверное это не упоминал потому что такая спорная возможно даже холивар на я тема но я бы расценивал именно так что скорее это не преимущество по поводу того что случае синхронного случая асинхронного
00:30:31 - 00:31:39
запроса мы сразу не получим ответ а в случае синхронного если там будет ошибка да мы сразу об этом узнаем это действительно правильно если что то это может быть добавить о том что для сафронов тут есть дополнительные механизма но party повод ты говорил что вы используете соки то вот те же самые соки ты мог быть механизмом доставки ошибки от какого-то сервиса для конечного пользователя который дело первоначальный запрос просто подход меняется становится сложнее и не такой очевидный но они как бы эти подходы
00:31:06 - 00:32:12
окей так и что то еще я хотел спросить по этому поводу такое ну ладно так может быть себя пески это вопросы появились по этой но ты сказал что при использовании шины раньше или позже мы достигнем консистентной состояния но например случая если шин упадет на же как правило ребятенка вроде бы нет ну то есть он это все хранит в памяти эти события могут потеряться [музыка] проблема в этом случае [музыка] событию event of который умер на месте который ты отправляешь в репите есть два типа хранение один из них действительно
00:31:40 - 00:33:21
памяти 2 из них синхронная записью на жесткий диск поэтому случае если сам сервис упадет то есть опять же там ты можешь задавать прям на уровне события но можно ли тебе хранителей не нужно там помогут называется delivery мод если не ошибаюсь и [музыка] ты сама собирать стоит ли ну важно но для тебя или неважно то есть условно если есть часть событий которые но дошли они не дошли в принципе от этого как бы никто не пострадает целом есть другой подход и то же самое с [музыка] скажи то же самое с чтением дат и
00:32:31 - 00:34:03
событий здесь разные подходы к получению эти данных то есть есть подход где мы кидаем события и нам все равно прочтет ли кто-то его в данный момент или не прочтет а есть подход в котором мы будем дожидаться ответа то есть в зависимости от ситуации от задачи у нас есть возможности этим по-разному управлять но если мы хотим там безопасно так чтобы если там рыбе попал то мы подняли обратно эти события или чтобы мы точно знали что мы от ним этот массаж только когда произойдут все операции такие такие подходы тоже 10
00:33:16 - 00:34:45
после такие возможности ребята тоже есть если у тебя будут по ходу возникать вопрос это тоже задавайте там и вроде бы как она собеседований но стаке с маленькая звездочка что я буду стараться тебе как бы комментировать отвечать хорошо давай все-таки поближе наверное к коду попробуем подскажи пожалуйста раз уж мы говорили за паттерны в начале только микро сервисный давай поговорим про то какие паттерна ты знаешь ее используешь в ходе работы судей написанием кода на бока индикаторная делится на три группы
00:34:00 - 00:35:31
это порождающие структурные и поведенческие порождающим можно отнести фабрику фабричный метод builder наверно [музыка] struct урны это декоратор крайне быть фасад чё там еще есть ну адаптер давай давай коротко пройдемся потому что ты назвал фабрика фабричный метод одно первых чем отличается во вторых какую проблему не решают они решают [музыка] проблему инстанции рования [музыка] объектов когда программа точно вообще не знает какой ей нужен получить объект какой внутренней структуры и даже может быть какого класса то есть это
00:35:02 - 00:37:13
может быть некое подмножество классов но случае с фабрикой ну просто мы запрашиваем фабрики некий объект который нам нужен придавая ей какие-то параметры на основании этих параметров она возвращает нам каким-то образом сформированный объект в случае с фабричным методом то есть это когда например ником общем классе базовым задается ну то есть в абстрактном получается задается абстрактный метод который должен возвращать экземпляр какого-то класса а собственно реализация этого метода возлагается на
00:36:32 - 00:38:08
[музыка] последних которая класса не обязательно этот метод должен быть абстрактным и не обязательно абстрактный плащи то есть это можно просто метод в реализации да но это метод который принадлежит собственной реализации кого-то конкретного объекта который мы хотим создать что это такое в чем его суть зачем вообще зачем нам нужен абстрактный класс странный класс это класс от которого невозможно создать экземпляр плюс он может содержать может но не обязан содержать абстрактные методы то есть это
00:37:34 - 00:39:15
сигнатуру методов которые должны быть реализованы в его потом то есть мы записываем допустим часть реализации какую-то нужных нам методов и плюс какие-то дополнительные абстрактные методы которые должны быть реализованы уже его потомках таки хорошо так тогда давай так дальше ты говорил декоратор какой собственно проблемы решает декоратор и как он устроен дико оратор решает проблему добавлении новой функциональности дополнительной функциональности к уже существующим методам какого-то класса то есть у
00:38:31 - 00:40:24
нас есть некий интерфейс который реализует объект и собственно декораторы тоже реализуют и тот же интерфейс насколько я помню так это работает ну и соответственно мы как бы оборачиваем объект одним или несколькими декораторами и соответственно вызов у нас проходит всех декораторов и возвращается обратно то есть получается что ответ [музыка] ответ от объекты которые обернут декораторы как бы проходит проходит как бы несколько добавочных ну может сказать преобразование так хорошо скажи пожалуйста какой и принципы соли
00:39:42 - 00:41:48
да это позволяет нам соблюдать [музыка] ну в это степени наверное сингл responsibility принц то есть каждый декоратор добавляет какой то определенно скажем функциональность уже существующей хорошо ну да почему нет но есть какое-то еще принцип который прям ну open close principal сюда хорошо подходит потому что для добавления какой-то новой функциональности мы не модифицируем существующий код добавляем именно новые сущности да да так и есть вот так ты говорил что [музыка] какой-то еще говорю ты говорил еще про
00:40:49 - 00:42:36
адаптер про фасад про прокси нет это что то ну может говорил машка может говорил оки-доки такую проблему решает давай еще буквально пару таких вопросов по по данным пойдем дальше какую проблему решает адаптер и в чем его будет отличие с декоратором адаптер решает проблему преобразования одного интерфейса в другой то есть у нас есть [музыка] какой-то клиент который на вход ожидает объект лимитирующей какой-то интерфейс но соответственно мы хотим туда засунуть объект который не реализует этот интерфейс для этого мы делаем адаптер
00:42:15 - 00:43:59
который соответственно на вход получает тот сторонний интерфейс но на выходе уже реализуют тот интерфейс который нужен клиенту окей хорошо и последний ты говорил спас от вас то есть фасад реализует какой-то единый интерфейс ней интерфейс ну это ну может быть единый репей в таком широком смысле для какой-то для какого-то множество объектов то есть он себе их собирает примерно так но данную проблему решает почему почему я возьму и сделаю фасад они используют допустим три других каких-то интерфейса
00:43:18 - 00:45:01
объектов ну во-первых так проще отделить то что скрыто за фасадом вот того что он предоставляет на выходе плюс это соответственно уменьшает количество зависимостей то есть теперь [музыка] можно зависеть только от фасада они там вот конкретных систем которые стоят за ним которым он предоставляет доступ хорошо засчитаем но основная его основная причина его использовать проблему которой он решает это то что просто тебе упрощает как такого интерфейса то есть ты для себя для своей команды понимаешь что вот этот скуп каких-то
00:44:37 - 00:46:44
сервисов в определенном месте при определенных условиях будут работать всегда одинаково и тебе не нужно действительно тянуть их все повторять это не те же действия тех марсе можешь просто обернуть спрятать за одним классом и одни вызовом и обозвать это каким-то действием на создание пользовать за создание пользователя может быть миллион всего и в клиентском воде тебе нужно достаточно будет вызвать только один какой-то сервис один метод и не смотреть вот этот вот не лезть в реализацию не прописывать ромни
00:45:49 - 00:47:07
куски кода просто ощущает она не просто обращать замещает сложную систему окей по паттернам неплохо скажем так я вижу что ты задумываешься что-то вспоминаешь хочется от тебя немножко уверенности в твоих словах потому что в целом ты говоришь правильно то есть и по [музыка] фабрикам его декоратору и с принципами то есть принципе но могут конечно спрашивать разные паттерн и не знаю правда как бы кто-кто зачем куда и как но рекомендую как минимум [музыка] с теми с которыми работаешь рассказывать про них да там сразу на себе системе с
00:46:27 - 00:48:09
которыми там не работал вот например я никогда не использовали с ну как бы сказать честно никогда не использовал там у проблему решает какую-то вот он решает потому что часто начинают люди придумывать особенно на вот таких вот них послойно штуках и тут ну короче лучше не придумывать лучше если честно то мне знать я не юзал своей жизни поэтому давайте лучше расскажу вам про что-нибудь другое так хорошо поехали дальше парочку ok но к солидом и еще немножко вернемся попозже думаю так так так так так так
00:47:25 - 00:48:53
интересно это интересно о или не окей ну давай пойдём в эту сторону дальше посмотрим чего чего дна и как пойдет собственно можешь ли ты рассказать про [музыка] зацепление и связанность что это за такие понятия как это работает и [музыка] короче так как добиваться того этих двух паттерна скажем так зацепление связанность [музыка] вспомнил что или что можешь на английском смысле это как тебе удобно на общем то что в английском кафе жим это полон как раз связанности обычно переводят то есть суть [музыка]
00:48:19 - 00:50:23
связанности в том чтобы у нас в одном программном модуле были наиболее близкие по своему функционалу своей цели объекты то есть они могут то есть они должны выполнять какую-то общую цель и принципе они могут много довольно знать друг о друге как бы считается что и так вот то есть и считается что должна быть высокая собственно связанность чтобы например в одном модуле у тебя не было каких то как бы 2 под систем которые очень косвенно либо вообще там как с друг другом связаны то есть скорее всего они
00:49:33 - 00:51:19
должны быть там в разных модулях ну и соответственно [музыка] зацепление это уже связь между модулями то есть модулем это как можно понимать в таком широком смысле то есть это может быть и микро сервис это может быть там и даже на уровне класса и на уровне какой как аватара модуля внутри приложение соответственно зацепление между модулями должно быть минимально то есть как бы модуль должны как можно меньше знать друг о друге и то есть в идеале должна быть какая-то единая точка входа вот тут модуль и соответственно другие
00:50:26 - 00:51:58
модули должны обращаться только через нее примерно так это выглядит хорошо вот скажи пожалуйста если говорить не знаю про уровень приложения неважно и сервисов по принципу ты бы старался в первую очередь разделять эти моды ну то есть это может быть уровень какой-то конкретной функциональности например отправить не знаю правления почту например то же самое да это может быть уровень это может быть например какой то там ограниченный контекста месте мы как-то там где работа и мы определяем там boundary контекст то есть это может быть
00:51:13 - 00:53:10
вот именно вот эта граница доменная можем привести пример не знаю любой из жизни может дойти своих проектов где бы ты такую границу провел на стене этих модулей вот про бандере контексте ну например там модуль который работает с пользователями там это один модуль соответственно модуль который работает с доставкой это другой модуль третье это не знаю модуль который работает с какой-то отчетностью для какой-то бухгалтерии еще что то вот смотри ты говоришь мадам ну например так с пользователем из бухгалтерии из
00:52:16 - 00:53:54
доставкой но ведь его в доставке и в бухгалтерии наверняка будут использоваться какие-то но пользоваться правда же то есть у бухгалтерии будут свои какие-то там не знаю допустим сотрудники отдела а о доставке тоже будут сотрудники например которые занимаются отправкой и получать electra занимаются отправкой то есть как мы будем использовать этот модуль который мы выделили в 3 до так называем или у каждого будет какой-то свой ну обычно если мы правильно выделили бондарика на вот эти контексты и нам нужно использовать
00:53:14 - 00:54:46
какие-то одни и те же сущности обычно это все-таки как бы все равно разные сущности то есть они это можно сказать что это тот же юзер но на которого мы смотрим как бы немного под другим углом то есть он там свой здесь свой то здесь нам одни поля нужны там другом модуле нам другая информация ним интересно то есть ну то есть у них все равно там будет единый какой то едишь ник но информация с которой работает сама модель она в каждом модуле будет своя хорошо подскажи раз можешь заговорили про сущности проедешь никита ну расскажи
00:54:09 - 00:55:38
пожалуйста что такое entity что такое агрегата что такое так entity это доменная сущность которую можно как-то идентифицировать как вот как отдельную сущность [музыка] соответственно вылью обжект [музыка] это объект который мы не можем как-то идентифицировать конкретно но он является как бы неким хранилищем вот какой-то какого-то значения каких-то значений агрегат [музыка] то есть агрегат это сущность которая аккумулирует в себе как бы несколько entity то есть как правило на уровне бизнес логики работы ведется именно с
00:54:54 - 00:57:01
агрегатами так давай сразу тебя немножко поправлю агрегат не обязательно может прям состоять дать ним за тебя должен создать и нескольких entity это может быть вообще часть сущности может быть высшей степени объект может быть действительно несколько сущностей в общем плане того что мы оперируем действительно бизнесовый модели это правда вопрос только в том что в данном конкретном случае бизнес у нас нужно моему агрегаты со старыми то есть более широкое понятие которая в которой поступает вопросов бизнеса вот
00:56:14 - 00:57:30
павильон джек то в чем то скажи зачем вообще использовать в чем преимущества использования у нее объектов или может быть недостатки ну в объект мы как бы знаем что там ну вот и сам создает ну то есть это же какой-то я пытаюсь сейчас нащупать в чем разница между датами хороший вопрос кстати вот я и пытаюсь вспомнить ну то есть когда мы работаем ну например это да то есть это как бы знаем там какие у него поля там какие методы если это если мы там напрямую не обращаемся который бутон а на случай если бы это были сырые данные
00:56:55 - 00:58:40
как бы с ними было бы сложнее работать то есть если бы это какой-то там просто массив гулял с ключами какими-то ну то есть основная [музыка] основной смысл д . это именно в этом были объект и отчета затрудняюсь ответить для того содержит какую-то логику вообще вообще зачем нужны для кошки ну вот ножки нужны чтобы ну по сути чтобы иметь объект с какими-то конкретно заданными свойствами чтобы мы там могли непосредственно к ним обращаться к крашусь data transfer обжиг так и зачем он нужен для передачи информации
00:58:34 - 01:00:25
супер отлично то есть действительно должен для передачи информации между микро сервисами чаще сейчас его используют между слоя до этого мы еще дойдем то есть существует там какой то логика или нет или мы просто обмотаем данные все нет там никакой логики обычно нет [музыка] абсолютного [музыка] существует нет то есть с вот со всей этой темы поднять идеи ну то есть я читал там смотрел ну как бы и как бы вот то что у меня было на [музыка] [музыка] но как бы с нормальным детей мне работать не приходилось нормально
00:59:34 - 01:01:17
реализованными системами полностью видите окей ну смотри иди на самом деле такая очень хайповая тема не все то что своей книге пса нужно использовать там прям только вместе большим скопом и так далее то есть в принципе по факту он собрала много разных других патронов как то это может быть неправильный патронов подходов что-то перри назвал что так ну в общем то так и на самом деле вот в и inject он сильно перед пересекается с таким подходом который наверное это фаулер пса не помнит из них короче 10 такой подход называется
01:00:37 - 01:02:15
холода то есть полный объект полный до полной объектом такой называется короче суть его в том что в принципе это одно и то же на свои основные тезисы которые к данному объекту выдвигается это действительно что ними какой-то идентификации да потому что но для этого у нас есть сущности какие-то уникальные наши в нашей системе в нашем бизнесе и так далее или же просто типа как бы значение но это значение которое должны нести [музыка] какой-то профит какую-то пользу и мы должны быть уверены что в рамках нашего
01:01:28 - 01:02:46
бизнеса они такую пользу несут а значит они как минимум обладают валидации то есть что есть внутри были общем то ты если допустим там передаешь какую-то строку и ожидаешь что это она не знаю какой нибудь карен си до то вполне себе ты можешь право лидировать что допустим там у тебя парень си в рамках свой бизнес там должно состоять из двух или из трех символов они должны быть там верхнем регистре но это сейчас чисто просто для примера то есть как не обладают они валидации как максимум вольет джек ты они
01:02:07 - 01:03:22
составные ну то есть имеют как бы полный объект что имеется в виду например если взять те же самые ноты прокормить если взять те же самые деньги то допустим часть чаще всего очень часто в бизнесе если мы говорим про деньги mount как то сказать но короче значение сколько денег не слишком много несёт информации без валюты но то есть то есть если у тебя там 10 долларов значит у тебя вэлью-бет по-хорошему должен состоять из двух значений mode и карен see the если передаешь и значение и валюту или там координаты должна быть
01:02:44 - 01:04:09
и ширина и долгота потому что сами по себе ну типа они не очень имеют значения и вот отсюда это пошло то есть на самом деле штука прикольная я просто к чему это говорю к тому что не обязательно там прям для того чтобы использовать те же самые опыты своем проекте не обязательно весь проект писать повелитель это реально прикольная штука которая прямо уже сегодня может помогать тебя решать какие-то задачи вот ладно раса валидации немного не задалось а но собственная дальше хотел поспрашивать в осло и просто я просто
01:03:27 - 01:04:40
думал что вы пишете в виде в каком-то формате это начало резко тоже говорить про этот он просто думал о вас сейчас поговорим потом как бы получается нет окей а подскажи пожалуйста тогда такой вопрос тогда такой вопрос давай хотя бы про и пройди поговорим и что из этого может использовать 1 себя на проектах вот и говорим про домен надо как-то кого данная область а какие есть еще и может быть вы как-то это у себя на сервисе использовать еще есть applications ло ну давай скажем так вот это основные три
01:04:04 - 01:05:40
а сама еще какой-то давай потому что дата на самом-самом тяну все сервисный слой сервисный на самом деле это апликэйшен разной архитектуры могут трактовать это по-своему да действительно может быть такое что то между про структуру при конечно будет сервис на его к в архитектуре вообще я до семи штук там его и и внутри есть core но смысл от этого не меняется в основном выделяют вот эти вот три который назвал раз но вчера obligations и домен можешь так ну в общем рассказать какой зачем нужен и вообще зачем эта
01:05:10 - 01:06:49
идея нужно то есть почему вообще к этому пришли и как это люди используют инфраструктурный слой нужен чтобы отделить логику работы с какими-то инфраструктурными штуками типа обращений там базу данных там обращения к другому сервис еще что то то есть вынести их куда-то отдельно и [музыка] чтобы как бы остальное например ту же самую слой доменный в принципе можно было писать не задумываясь о том а там а какая у нас база данных условно то есть это все будет уже решаться на уровне и как раз инфраструктурным то есть
01:06:00 - 01:07:50
над ним и будем ждать уже какие-то конкретные данные с которыми мы будем работать ну а applications какую то типа верхние верхние уровни вы так скажем бизнес-логику то есть обычно если приходит [музыка] в контроллер запрос да если и скорее всего это будет работа именно вызов какого-то сервиса из апликэйшен лера который дальше уже будет работать из инфраструктурным внутри слоем и с доменным вот сверху будет именно некий сервис там с какой-то точки доступа ну соответственно это тоже [музыка] если на что
01:07:06 - 01:09:08
немножко неправильно сказал что внутри сервиса инфраструктурными какими-то штука на тут еще очень важно что в этих слоев есть направление зависимости знаешь какое или соответственно то что слои которые лежат ниже не могут обращаться слоям которые лежат выше но соответственно самый высокий apple карточный веер потом ну то есть получается потом наверное просто капотом домен не [музыка] совсем за высоким прострочим то есть инфраструктура про которая на 7 уровне система пузыря rabbit манга что угодно
01:08:10 - 01:09:51
порты адаптер делать 10 дальше идет об лететь дальше идет домен вообще applications домен но в других еще разных источниках и то и другое могут назвать вместе доменной зоны то есть идея в том что applications это какие-то твои сервисы из кейсы хендлеры все что угодно которые оперируют как раз между собой разными сервисами и доменными существами внутри то есть они знают только бизнесе они знают про какие-то процессы которые происходят у тебя в бизнеса и им абсолютно неважно пришло от этом через контроллер тебя
01:09:14 - 01:10:36
запрос пришел или ты вызвал его из какой-то там консольные команды или ещё как-то этим занимается красный а вот это вот ядро до applications не домен слой они находятся красный поэтому про направлении она действительно снаружи вовнутрь только расположение сначала идет на страхе чего снаружи на плите шин домен ноги даже смотри ты хочешь сказать что ну то есть сервис не может например обратиться к репозиторию это хороший вопрос это хорошо про сможет но есть один маленький нюанс ты же [музыка] ладно не буду задавать вопросы лучше
01:09:56 - 01:11:34
просто отлично идея в том что у кого репозитория должен быть интерфейс то есть и интерфейс интерфейс репозитория к которому ты обращаешься он находится как раз домена за то есть ты говоришь что мне нужно найти пользователя поедишь нику это одно типа этот в интерфейс его polish домена и он у тебя есть а вот реализации этого интерфейса они будут лежать уже в infrastructure и тебе будет все равно это будет реализовать манга это будет из файловой системой спада ты будешь читать или это будет к склеить то
01:10:44 - 01:11:51
есть вот сервис в зависимость в конструктор ты сделаешь там правит репозитории интерфейс такой-то интернет такой-то репозиторий и будешь обращаться к интерфейс вот в этом суть ну как бы говоря о том что сервис множество процесса стороны инфраструктуры и как бы вот это имя ну понятно тут и тут тут есть маленький маленький кстати есть по именно поэтому вопросы есть прям классная статья с но вообще-то битов в крике может быть знаешь такого чувака матияс набок вдруг читал дров не читал у него есть блог на
01:11:18 - 01:12:38
английском языке и у него прям есть статья по этому поводу если тебе вдруг интересно машине найти в телеге я тебе прям могу скинуть там как раз много-много вам по этому поводу пишет и рассказывает как это работает очень прикольно и просто можно загуглить много недовольных стадий если вдруг то не знаю что это это один чуваков который там очень сильно много country you tell в symfony начиная с 2 дней до сих пор много много конфет некит ножки нет ни давно не видел кстати наверное contribute давно но по крайней мере точно стоял у истоков
01:12:03 - 01:13:22
окей так [музыка] хорошо хорошо давай еще тогда да тогда вот отойдём от темы да потому что все таки много где это могут спросить но не везде и наоборот не которые относятся к этому как к чему-то лишнему хотя в принципе мне подход нравится но следовать ему полностью конечно сложно и в больших командах тоже сложно потому что не все лишь готовым как эту информацию быстро окей это все наверно не интересно интересно это все неинтересно по базам данных чтобы давай еще такого просто на общие знания пару
01:12:44 - 01:14:27
каширование кодирования шифрования чем разница хэширование это [музыка] ну в общем у нас есть какой-то набор данных мы если прогоняем его через некое хэш-функции на них там определение длины который будет ну то есть если мы второй раз применим хэш-функцию к тем данным которым привели мы всегда получим такой же hash на выходе счетом 2 3 какие родирование шифрование кодирование и шифрование ну-ка верования наверное в общем смысле это процесс присвоения неких кодов каким-то значением но может быть это не то
01:13:40 - 01:15:29
конечно но по сути какая-нибудь любая система кодировки символов но это кодирование собственно но какие функции которые используется в разработке когда мы можем получить там код символа мнение проще проще что я может быть не совсем понимаю смысла как раз вопроса стал что часто не знают этого термина не знаю кстати почему без 64 джейсон тебе наверняка знакома вот это есть кодирование то кодирование строки в формат дожди насчет джейсон и что значит кодирование строки строки в том числе [музыка] ok звучит как преобразование данных
01:14:54 - 01:17:00
какой-то но по факту так и действенно и ну или только у этого есть свои цели как думаешь в чем цель кодировать что она обеспечивает ну случае с джейсоном например мы обеспечиваем создаем некую структуру которую потом сможет понять там система которая будет этим работать на случай это стандарт что-то еще можно например случае 54 мы например можем закодировать какую-то произвольную информацию именно в строковом виде и передать например там картинку кодировать бф4 и отобразить там уже непосредственно вычтем или
01:16:17 - 01:18:10
[музыка] ну давай я к этому еще добавлю что так или иначе они помогают сохранить какую-то целостность да то есть если ты допустил вся идея в том что эти данные существуют что допустим вот эти форматы существуют во многом и для передачи данных что можем картинку взять закодировать передать куда-то и так далее и летом с тем же фасоном а мы можем взять какую-то информацию закодировать джисона передать дальше ну и не в том что если мы просто передаём допустим какой-то текст и он да там где-то у нас оборвался пришли
01:17:30 - 01:18:47
не все пакетики то мы можем отобразить части а если мы придаем джейсон и у нас решение все пакетики тоже сон будет не валит на и мы будем сразу знать что нам пришли не все данные ну то есть на сразу поймем что есть к эта проблема и ну типа нужно повторить этот запрос вот это тоже как бы это не самое интересное в этом вопросе так давай перейдем к шифрованию чот ты пропал последний несколько секунд я не слышал там что-то последнее сказал по крайней мере давай перейдем к шифрование шифрование процесс преобразования информации то
01:18:09 - 01:19:36
есть на выходе которого мы получаем данные которые невозможно просчитать не произведя соответственно процесс дешифрования обратно то есть обычно используется какой-то ключ шифрования соответственно которым строится данные который нужно использовать для где шифрования вот есть асинхронное шифрование когда есть два ключа когда одним нужно зашифровать чтобы получить нужно расшифровать другим [музыка] на всех рану ну синхронным достаточно одного ключа в чем скажем так в чем преимущество в чем недостатки синхронного и асинхронного
01:19:03 - 01:21:09
синхронным у нас есть простота то что съесть один какой-то конкретный ключ [музыка] ну недостатки в том что чтобы нам передать кому-то эти данные нам нужно и передать каким-то образом ключ каким-то безопасным путем или мы должны знать что там у нас и у того кому передаем данные уже хранится точно одинаковые ключ так как мы используем в основном в плену с этим проблемы как правило поэтому используется синхронные шифрования асинхронного из кита недостатки недостатки [музыка] да чет навскидку так даже сложно сказать
01:20:16 - 01:22:15
недостатки ну не знаю может быть каких-то ситуациях неудобно что у нас съеденного ключа с ним приходится работать может быть какая то есть какая-то именно сложность там в самих алгоритмов шифрования ну я не знаю ответ на этот вопрос . но смотреть на самом деле действительно насчет безопасной передачи симметричного ключа это большие проблемы и сделать практически невозможно да то есть если какого-то защищенного канала но есть одна одно преимущество асимметричного шифрования перед асимметричным из-за которого мы от него
01:21:29 - 01:23:00
не откажемся наверное эта скорость но то есть действительно дело в алгоритмах для алгоритмы шифрования и дешифрования симметричным ключом работают но требует намного меньше ресурсов на большом объеме на большом количестве данных это может но теперь этом сильные сильные прироста boost давайте сначала я задам вопрос а потом если что-то бы тебе на него а можешь ли рассказать вот каким образом соединение https защищает нас все в принципе да защищает нас от того чтобы наши данные кто-то мог украсть как это работает
01:22:20 - 01:23:50
ну [музыка] рискует запрос устанавливается [музыка] соединение потом происходит процесс который заяц ахен шейк когда [музыка] клиент и сервер обмениваются получается там публичными ключами но и дальше соответственно начинается процесс передачи данных ну может быть там как как бы больше каких-то промежуточных конкретных шагов ну в общем картины думаю такой но до в целом в целом да но но если разбирать частности то в конечном итоге [музыка] скажем так что если тебе скажу что для обмена информации потом мы используем
01:23:10 - 01:25:04
симметричное шифрование вот это поэтому не слышит ну скажем так ну мы же также можем послать мы можем послать ключ для симметричного шифрования но с помощью асинхронного шифрования потом уже ключ использовать для синхронного да что-то вроде предлагали что-то вроде того на самом деле и делается только там мы не посылаем ключи там алгоритм диффи-хеллмана используется скажем так мы посылаем друг другу части определенная которые сами придумываем на своих сторонах в конечном итоге каждый и каждая из сторон получает ключ который
01:24:10 - 01:25:52
одинаковый ключ который используется это если очень вкратце если интересно рекомендую почитать очень прикольная штука как этого достигается вот это как раз используется в конечном итоге симметричное шифрование именно потому что она просто быстрее мы все любим чтобы сайт открывались быстро данные ходили быстро но и собственно чем меньше мы ждем тем как бы системном приятный окей так какие то вопросы по я вопросам которые скажем так мы обсудили у тебя есть да нет окей так ну и и что и что и что и что
01:25:04 - 01:26:34
могу задать еще буквально пара вопросов по базам данных потому как если ты говоришь что используешь разберем на что-то ещё кроме пузыри используешь чем заработал 1 2 немного работал там всякими достиг сердцами с редисом ну это как бы такая как у нас ямайской возраст какую проблему лежал с помощью ностях сердце какую проблему решат помощью ради со elastic search а ну на том проекте на которыми работал решалась проблема в основном проблема быстрых выборок то есть на sql базе там сложные запросы там
01:25:53 - 01:27:36
долго дорабатывают вместо этого собирают уже конкретные какие-то записи для власть эксперт уже с нужными полями которые нам нужны соответственно сильно увеличивается сильно уменьшается время поиска [музыка] сиксерс конечно используется для того чтобы искать по каким-то записям чтобы работал в том числе нечеткий поиск что нынче на как бы и название ok редис редис мы использовали для хранения сезонных данных [музыка] я настраивал для губернатора проект и соответственно так как [музыка] запрос поступает через слот блендер то
01:27:07 - 01:29:20
есть и ну в общем несколько сервисов должны работать с общим с хранилищем сессии начале будет получаться так что у нас приходит запрос в одном сервисе создала сессия потом второй запрос балансировщик послал на другой сервиса там нету этой сессии то есть редис использовался для хранения сессии но также для каширования можно использовать один раз приходилось использовать regis качестве сервер очередей наверное вырывает из коробки на что-нибудь такое нет там был проект который работает как раз тоже с видео но это еще
01:28:18 - 01:29:56
было когда мы делали сайты не умерла вальтом штука просто larghetto из коробки и поэтому я очень часто слышу строки с использовали в одну команду это ставится окей так слушай ты говорил там про баланс есть давайте чадо с другой стороны заем знаешь ли ты что такое джавад а вот и таки да знаю что такое джейсон в потокин соответственно talking которым зашита некая информация по моему там вся эта информация как раз кодируется боишься 4 ну и плюс еще у токена есть подпись то есть [музыка] некие опять же
01:29:13 - 01:31:13
подпись которую мы можем получить прогнав тело токена через алгоритм кодирования шифрование да так лучше а еще лучше хэширование на самом деле там три лари там хочу реване и насколько я помню но с секретом типа солью вот и поэтому хотя нет шифрования там я помню там можно даже типу к какой алгоритм шифрования мы используем да да да ты прав есть и подходит включаем сейчас сказал и действительно есть есть такой подход что и правда рассылается разным сервисам публичный ключ на одном находится приватный и
01:30:34 - 01:32:07
публичный все подписывают эти запросы да да да есть это что-то я плохого окей вот вопрос собственно вот в чем почему был выбран механизм через балансер к разным сервисам сессий и 1 хранил кай если обращаемся к сервисам они с джоном вопрос услышал нет нет не услышал повторите пожалуйста очень бесит я увидел говорю почему 1 2 я слышала ни сори это мне походу интернет отвалился на какое-то время я тебя вижу и слышу теперь о разные новости туда салют обхода мне что с интернетом падла гола вот собственно давай потихонечку еще пару
01:31:27 - 01:33:10
просто будем заканчивать вопрос был какой почему использовали механизм с со сессиями при балансе rido я запросом к разным если это правильно сервисом они с тем же видели кеном и каким-нибудь тварям например не а до дожди был какой-то вопрос более глубоки на которые надо ответить было не до не вопрос был почему был сделан такой выбор чисто [музыка] да почему почему именно так да собственно просто задача была поднять как бы уже существующее приложение в cabernet из кластеры как бы минимальными усилиями
01:32:59 - 01:34:29
соответственно и никаких живот этом не было на тот момент но скажем так и идея понятна просто было интересно вдруг есть какая-то архитектурная штука знаешь как которую можно было бы по которым можно было бы поговорить но в целом тоже архитектурное чтобы сделать потому что уже есть готовое так не чаще хотел по базам по теории спрашивать не очень интересно я смотрю по теории ты где то что то читала даже как бы готов по крайней мере там по предыдущим вопросам давай на какую-нибудь задачку такую логическую
01:34:03 - 01:35:31
а представь представь что у нас есть большая база с и какими-то показателями не знаю 20 миллионов записей с например информации о том кто посещал какие-то определенные страницы на сайте какие ссылки кликал какие-то экшен и выполнял да вот и значит вот эти у нас двадцать миллионов записей есть и они там за последний год скажем так у нас хранятся и тут нас наши менеджеры ставят нам задачу ребята мы хотим видеть красивых график красивый отчет с информацией о том что какое количество посещений было на нашем
01:34:48 - 01:36:40
сайте там за последний месяц или за любую выбранную произвольную за любой выбранный праве произвольный промежуток времени нам не очень важно чтобы это было прям точно но порядок цифр нас достаточно сильно интересуют и собственно вот вопрос как бы ты решал подобную задачу то есть нам нужно получить ну то есть данные какие-то то есть этот график просто один раз и дальше ну а дальше я задать смотри я допустим и идей как они как менеджер захожу на страницу выбираю произвольные две даты то есть промежуток
01:35:47 - 01:37:09
времени там за последний месяц за последние две недели или там с первого по пятое число нажимаю построить график и хочу увидеть графикой наверное какие-то цифры что там 50 посетителей или 100 посетителей ну то есть если бы нам нужно было это просто один раз сделать это просто можно было какое-то написать там искали запрос для этого который наверное бы довольно долго отрабатывал но в итоге нам просто показал то что нам нужно если это операция которая планируется там ну типа часто это чтобы в любой момент
01:36:35 - 01:38:01
можно было прийти там посмотреть на определенную дату возможно стоит сделать некую там агрегацию [музыка] ну то есть можно даже сделать отдельную табличку где будут просто записи например по дням посчитайте сколько в какой день у нас было посетителей и соответственно будет на год там 365 записей там с ними как будет просто власть можно сделать какой-нибудь материал в юном возрасте которые это посчитает и можно будет обращаться хорошо как вариант как ну то есть мы там раз какое-то время это пересчитываем
01:37:27 - 01:39:03
правильно за предыдущие там день например каждый день за предыдущий день сохраняем и потом можем это использовать вводить окей ну вот представьте что нам говорят ладно по дням это прикольно но я хочу знать с точностью до часа хочу допустим с вчера с 9 утра до 6 вечера чтобы мне показала сколько было посетителей в принципе 365 x24 это тоже вполне себе данные с которыми можно на лету работать поэтому [музыка] ничего я специально не стал придумывать дальше для этого окей но если вы дойдем вдруг да секунд
01:38:19 - 01:39:58
то как бы поменялся какой подход и поменялся либо до секунд [музыка] ну то есть это уже я просто того что если идея кого-то другого подхода который мог бы нам позволить делать не ну в общем не слишком долгие выборки да то есть с каким то вменяемым временем ожидания по произвольному времени заданном там ну мы наверно можно сделать какой-то родирование разбить таблицу на множество и там с ними работать уже непосредственно неплохо но и мы бы точно усну пример но вы точно ускорились потому что в одной
01:39:16 - 01:41:10
таблице на зубок на 3 миллионов записей до него какое-то определенное значение до зависимость этого случая давай тогда только что такое формирование что такое репликации шарди рование это обычно page армированием понимают разделение одной таблицы на множество по какому то определенному критерию то есть по критерию именно данных которые туда пишется но насколько я помню разделения например существующей базы то есть множество таблиц на несколько баз в которых содержится какое-то часть этих таблиц тоже формирования
01:40:48 - 01:42:24
то есть на на разнесение по разным серверам общем [музыка] репликация это [музыка] создание копии базы данных которые ну например можно создать копию базы данных из которой мы будем из которой будем читать соответственно основная база данных будет использоваться для записи соответственно мы таким образом я разгрузим соответственно мы например можно сделать там том числе несколько реплик на разные сервера что вам чтобы как раз разгрузить чтение так как правило чтение гораздо чаще чем записи такой подход есть
01:41:42 - 01:43:25
еще преимущества дает репутации помимо на запись и чтение основное но отказоустойчивой сцене в общем-то дают по крайней мере если у нас там если нас мастер мастер ну в принципе если у нас только masters life все равно мы получим отказоустойчивость просто например если ляжет мастер на какое-то время не сможем ничего записывать мы сможем продолжать чтение на время пока мастер не поднимется или переключить слоев временно в мастер когда поднимется основной то переключить его условий для того чтобы ну да ну
01:42:33 - 01:44:02
праздник по труду тоже с этим есть мастер мастера очень опасная штука сразу тебя если вдруг не скажем так если вдруг первый раз кто-то пробует и не имеет опыта окна можно шишек и достаточно много водки про ширди рование поговорили на есть пару вопросов знаешь ли ты что такое горизонтальное что только вертикально шунтирование ну здесь звание горизонтальное разделение по нескольким серверам вертикальное разделение в рамках соответственно того же самого сервера баз данных нет тут надо смотреть на таблицу нас таблица
01:43:21 - 01:45:04
горизонтальное сортирование такада мы отсекаем определенное количество записей да то есть моя мы понимаем допустим что нам мы чаще будем использовать там записи за последнее время и там с какой-то по какой-то булку или еще как то есть мы понимаем что вот по нашей там сортировки мы будем использовать чаще определенный набор данных а вертикальная это когда мы делим грубо говоря таблицу вот так то есть например у нас есть таблица с большим количеством полей но для работы с ней нам ну допустим какие-то
01:44:23 - 01:45:39
частых операций там из двух ста полей нам нужно 10 остальные там что 90 0 утрирую конечно условно остальные-то много большое количество полина но они участвуют редко отчетах и так далее для этого следует отдельную таблицу есть такой тип связи как один к одному никто его как бы не отменял все и часто используемая часть оставляет 1а редко используемые выделяют другую они не участвуют выборках тем тем самым ты ускоряешь свою свое приложение есть еще такое понятие как парте церовани и сталкивалась или 3 статьи
01:45:01 - 01:46:24
портишь не [музыка] думаю я определенно что-то про это слышал судя по всему это как раз [музыка] разделение на несколько серверов то что то что сервера но он не буду не буду [музыка] лучше меня не знают этот вопрос но это скажем так есть но лопасть грех мускуле в том же точно есть такой механизм который без физического разделения позволяет тебе сделать партиции прям внутри определенно чтобы на то есть то есть физические тебя как бы на уровне жесткого диска это будет как бы разные файлы да то есть разные
01:45:47 - 01:47:37
партиции условно но при этом ты будешь работать грубо говоря как с одной таблице идея в том что когда ты бьешь напротив и то внутренний механизм помогает тебе при выборках задействовать только определенную часть ну то есть мы знаю допустим что мне обратиться по времени не там за последний месяц если мы запрашиваем данные там будем брать из одной партиции если будем брать больше там будет дорожать до тех пор пока мы не доберемся до нужного нам диапазон в общем полезная штука может вполне помочь решить какую-то задачу рекомендую с ней
01:46:50 - 01:48:06
как бы там немножко познакомиться но и давай вернемся к нашей задаче так вдруг пришла эта идея как с этим бороться как нам за произвольный промежуток выбрать данные мы тут разговаривали про выживание цианирование ну как бы я вроде уже проекта говорил не буду тебя мучить но на самом деле то что то говорил тоже мог быть таким вот вода в данную сборку по часам в определенных условиях но тут было очень и очень важный нюанс которая сказала условия задачи что она мне важна точность до а важен порядок цифр
01:47:29 - 01:48:55
в таком случае есть такой подход называется он сэмплирование слышал только мнит я рекомендую почитать не знаю правда породу задач еще может быть с ними сталкивался но если вдруг ты будешь устраиваться какой-то highload проект вполне вероятно что столкнешься его идея в том что вот у нас и 20 миллионов записей и нет определенные временные рамки в общем если мы захотим построить прикинуть какую-то цифру за определённый промежуток то нам не обязательно выбирать все данные за этот промежуток чтобы что-то посчитать
01:48:29 - 01:49:56
например мы там рис 2 миллиона вадим выбросьте тысяч записей они посчитают а не зная средние и сумму или еще что-то идея его в том если грубо говоря что мы можем выбрать какой то процент понять что у нас в среднем там будет определенное количество за ну в день да и прикинуть сколько это будет за месяц но что-то вроде такого есть разные подходы к сэмплирования разные погрешности соответственно будут вот они будут то где то больше где то меньше китае сэмплирования почти тогда без поверхности что все равно на будет но
01:49:16 - 01:50:25
тем не менее вот подобная задача сильно экономит по времени и по ресурсам экономит как бы применение такого подхода экономит ресурсы лодок но в целом после ipo шарнира во либо репликации [музыка] как бы хорошо хорошо [музыка] вопросы ко мне по этой части может быть что-то рекомендуешь может быть конкретная почитать даже смотри вот собираюсь попробовать устроиться в озон и не как раз у них огромная микро сервисной архитектуры высокие нагрузки пожгли они используют [музыка] вот ну смотри мне сложно дать тебе что-то конкретное да
01:49:51 - 01:51:43
вот прям скачки smotret eto kniga на те прямо поможет но я вижу что ты что-то записывал из тех нюансов про которые мы говорили да и соответственно с ними желательно ознакомиться могу тебе подсказать так ну в первую очередь нужно посмотреть на вакансию обычно там о самих требованиях иди вон ну короче в описании вакансии обычно откроются какие-то подсказки то есть условно там может быть я в с какой нибудь там gcp что нибудь такое да ну короче кто-нибудь elastic что-то еще и из описания вакансия ты сможешь уже понять
01:50:57 - 01:52:26
в каком направлении могут быть вопрос по хайло ду и всему остальному к сожалению и частью это достаточно [музыка] индивидуально все-таки штуки да то есть хайло там потому эхолот потому что много решается ну как бы весьма своеобразными методом не под все есть прямо какие-то универсальные решения но тем не менее вот о чем мы говорили в самом-самом начале если человек и используют микро сервисы архитектуру то вот ну как минимум как минимум я бы рекомендовал ознакомиться с паттернами а как максимум знаешь что вот есть очень
01:51:41 - 01:53:25
хороший курс начнет даже не курс боже как же он называется сто лет назад он усмотрел и он действительно прям очень просто широкий спектр инфы покрывает зовут его уде дахан я помню когда муха сейчас загублен [музыка] дауди дахан а вот как назывался его этот у попова вот распределенной системы по микро сервисных victory да-да-да-да-да дизайн распределенных систем и называется д с д с а д с д л д с а [музыка] д с д да вот можешь загуглить и поискать он где то есть открытом доступе точно его если на сайте можно купить там 1000 за
01:52:32 - 01:54:40
две с половиной полного продается курс но если он у вас и в открытом доступе если поискать он на английском языке но он очень большой и но там типа часов скажем 40 до и там workshop там прям но под класс он рассказывает очень много много теорий много схем но короче и прям вот он рассказывает про ну про распределенная система и соответственно про сервис параметра 7 короче это то что я бы прям рекомендовал насчет хайло да там упоминает он или нет я не помню мне кажется что скорее нет чем да что он
01:53:43 - 01:54:55
больше затрагивает как раз так вот правильно делить какие подходы есть как раз рассказывает о чем с тобой говорили про сетку почему асинхронные запросы лучше использовать и не синхронно и так далее но в общем-то много-много тем поднимается прям вот его посмотреть точно да в остальном в остальном такого голову быстро ничего не приходит если честно вот это еще вопросы да в общем-то нет окей давай тогда коротенькая как детки беда в целом в целом ты молодец я думаю что ты вполне можешь претендовать там на три три с половиной
01:54:19 - 01:55:37
то есть смело ты можешь подавать резюме сразу тебе скажу так если давно не проходил собеседование рекомендую тебе может быть еще попрактиковаться то есть дать может быть еще какие-то в несколько контор ты сразу нити прям вот по пощупать потому что одно дело мы с тобой сейчас поговорили но у каждого есть свои подходы к собеседованию и ситуация могут быть абсолютно разные да то есть кто-то будет спрашивать прям по самым базовым штукам пуазон но то есть мысль об этом начали дарить я процент послушал и понимаешь допустим спрашиваю
01:55:07 - 01:56:27
тебя типа данных кличко но так себе план но ответишь ты мне и что я узнаю из того что ты знаешь типа данных . спустя томского позже 8 лет разработки ну как бы но не удивляйся такие вопросы тоже бывают разные уровни в общем к чему еще стоит быть готовым и так life кодингу вполне вероятно то есть вполне вероятно что тебе могут дать какую-то задачку по решать прямо на собесе то есть попросят указать редактор расширить экран и скажут допустим там задача могут быть разное можешь и вот тоже для примера бы тебе рекомендовал
01:55:51 - 01:57:16
так для себя почитать возможно посмотреть и попробовать может что-то решить обычно это что-то простое но типа там напиши алгоритм там вот если массив отсортирован пузырьком или там не знаю построить фибоначчи какой-то рио 3 то еще что то есть достаточно такие они пошевелить мозгами просто прикинуть основная идея этого всего в том чтобы посмотреть как ты себя ведешь в нестандартной ситуации вот когда тебе дают задач сразу тебе порекомендую самое важное в этом все а стараться рассуждать вслух почему потому что это самое важное на
01:56:34 - 01:57:57
самом деле для за беседующего то есть им интересен ход их мыслей мы на самом деле не интересно решите задачу правильно или нет это дело вообще 10 вот интересный ход твоих мыслей как ты подходишь это первое то есть проговаривать не стесняться этого и как бы вот стараться и второе это даже если не получается то как бы не сдаваться и стараться решить задачу все-таки до конца через какое-то время если что-то будет не получаться тебя остановит но это знаешь такой важный критерий если вдруг что когда она была до такие ребята
01:57:16 - 01:58:28
ну всё я не могу решить и интервью для себя делает такой выбор что типа но блин наверное на работе примерно так же но типа быть реши задачу будет а потом типа скажет ну поэтому тут такой есть нюанс так так вот чего бы мне чего мы не скажем так не хватило у тебя да немножко я вижу что ты то ли ты много чего то читал но не использовал на практике вот то ли может быть но ты такой как бы до в общении в принципе вот ты говоришь многие вещи правильно но как бы так сказать вот не хватает мне какой-то уверенности может быть где-то
01:57:51 - 01:59:26
каких-то деталей может быть где-то какие-то вопросы уточняющие то есть идея в чем но я не могу так сказать что нужно прямо тебя заняться ораторским искусством еще что-то не день и в этом идея в том что если ты можешь дать какие-то детали более развернутые по вопросу старайся и давать чтобы показать что ты в теме ориентируешься вот тут как бы ну то есть если ты понимаешь что ты там знаешь можно добиться то это круто если ты можешь просто чуть деталь опять же тут стараться не уходить от конкретного вопрос да то есть условно
01:58:39 - 01:59:55
не менять тему но тем ни менее каких-то деталей рассказать если ей будет много то опять же интервью тебя остановит в этом нет ни чего плохого просто перейдешь даже в бельем следующего вопроса вижу что ты знаешь где поэта норм практика вполне вот такой наверное мой сносит спасибо пожалуйста надеюсь было полезно сказать спасибо за совет да пожалуйста я думаю что если вдруг утепляются и допросы позже можешь смело их знать написать в принципе я не просто не знаю с кем ты контактируешь можешь задать там узким контактируешь и мне их
01:59:16 - 02:00:38
передадут или прям на прямой контакт найти в телеграме я есть в принципе могу постараться тебе ответить на вопрос если видимость о и все принят договорились прошу тогда тебе хорошего дня и удачи слева спасибо давай поговорим
02:00:07 - 02:00:49