Проектирую архитектуру чата

Sdílet
Vložit
  • čas přidán 14. 09. 2021
  • #soer #itubeteam
    Основной канал для общения и публикации новых видео - Телегарм - t.me/softwareengineervlog
    Спонсорство - donate.s0er.ru
    Сайт платным контентом - soer.pro
    Зеркало для видео Дзен Видео - zen.yandex.ru/id/5f578bdf22e2...
    GitHub - github.com/soerdev
    Чат для программистов - / discord
    Группа ВК - codeartblog

Komentáře • 139

  • @DevilAlex03
    @DevilAlex03 Před 2 lety +12

    Как же я соскучился по таким видео от Соера! Спасибо, было очень полезно и интересно!

  • @IlyaRachinsky
    @IlyaRachinsky Před 2 lety +9

    Переосмыслил свой текущий домен. Было полезно, спасибо.

  • @ivankarash2646
    @ivankarash2646 Před rokem +2

    Просто великолепное разъяснение, огромное спасибо, будет очень полезно и на прохождении интервью, и на работе.

  • @soulcode9941
    @soulcode9941 Před 2 lety +2

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

  • @VladykaVladykov
    @VladykaVladykov Před 2 lety +2

    Приятно тебя послушать, спасибо!

  • @honeybadger3756
    @honeybadger3756 Před 2 lety +3

    Чем больше проект, тем мощнее себя раскрывает архитектура

  • @eleimt
    @eleimt Před 2 lety +3

    Отличный канал. Спасибо автору

  • @user-hc1hl2nx8e
    @user-hc1hl2nx8e Před 2 lety +53

    Соэр, давно смотрю твой канал. Благодаря твоим видео понял что такое архитектура и как правильно ее воспринимать. Негативные комментарии идут от малого числа дураков, которые никогда не поймут что ты говоришь. Смотри на лайки, много людей очень ценит твой контент, не обращай внимания на дураков и не переставай вести канал.

    • @S0ERDEVS
      @S0ERDEVS  Před 2 lety +22

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

    • @Nandarion
      @Nandarion Před 2 lety

      @@S0ERDEVS Когда добавляем сервис, нужно всегда говорить зачем этот сервис нужен. Иначе получается "истина", на уровне "следуй божественным заповедям".

    • @MoDKona
      @MoDKona Před 2 lety +5

      Вот обожаю логику "если негатив - значит завистник или дурак". Откуда такое ограниченное мышление? Почему ты отвергаешь версии о том, что человек может быть не согласен с мнением автора? Или автор - это истина в последней инстанции и всегда, без каких либо исключений, прав?

    • @user-hc1hl2nx8e
      @user-hc1hl2nx8e Před 2 lety +1

      ​@You Tube неуверенность делает тебя смешным. Ты ставишь вопросы после каждого утверждения, скрываешь имя... Не тебе давать оценку Соэру, он в миллион раз умнее тебя и компетентнее. Сначала сделай хоть что-то, чтобы тебя не за бота можно было считать, потом пиши свой бред.

    • @dirtyhandz
      @dirtyhandz Před 2 lety

      @@S0ERDEVS Привет, а скажи пожалуйста, куда надо подписаться - на патреон или ютуб чтобы начать изучать архитектуру?

  • @jz4887
    @jz4887 Před 2 lety +1

    Привет. Что для начинания нужно читать из книг по архитектуре?

  • @user-bi4zw1hw2s
    @user-bi4zw1hw2s Před rokem

    Побольше бы таких видео о проектировании архитектуры

  • @lvn5609
    @lvn5609 Před 2 lety +3

    1:35 спалили палитру кистей Криты) От меня как от художника мое вам уважение!

  • @kirillnikulin605
    @kirillnikulin605 Před 2 lety +8

    Действительно, удивительная ситуация! Человек бесплатно выкладывает ТОП контент. Он на лету генерит решения, которые расширяемые и рабочие, их можно править и дополнять, но они уже рабочие. Если говорить совсем коротко, у всей молодой поросли, которые ассоциируют себя с IT отсутствует культура создания ПО (о культуре общения и вообще жизни в социуме, говорить просто не приходится). То что автор говорит об этапах создания ПО, они даже не воспринимают и обычно называют это водой! "Ты мол нам про код говори, че ты лечишь??" это позиция кодера, цена ему 60тр в тучные годы и то переплата. Еще много написал бы, но времени нет. Автору большое списибо, виден опыт и глубокие знания по разным аспектам создания ПО. Успехов!

    • @supervichka7764
      @supervichka7764 Před 2 lety +2

      да, контент просто ТОП, чтобы хейтить такие материалы, надо быть немного одноклеточной амебой.

    • @doc-jp2bf
      @doc-jp2bf Před 2 lety

      По вашему всегда надо только хвалить?
      Вот ради интереса вы на патреоне поддерживаете соера или только словесно?

    • @kirillnikulin605
      @kirillnikulin605 Před 2 lety

      ​@@doc-jp2bf не знаю, а ты как думаешь?

    • @kirillnikulin605
      @kirillnikulin605 Před 2 lety +2

      @You Tube ваша адекватность под вопросом, отойдите от клавиатуры дальше, от капающей слюны может случиться короткое замыкание. Напоминаю о прописанных вам лечащим врачом препаратах, необходимо срочно их принять. Берегите себя!

  • @wertX1
    @wertX1 Před rokem

    Спасибо, очень полезное видео!

  • @gecnepago
    @gecnepago Před 2 lety

    Кайф! Как же ты ахеренно раскладываешь!

  • @RuslanMavlyanov
    @RuslanMavlyanov Před 2 lety

    Поделитесь плз о каком видео идет речь - про архитектурные стримы на 0:46. Всё смотреть нет времени, но какой-то конретный - посмотрю с радостью.
    Спасибо

  • @astronauvtsir1566
    @astronauvtsir1566 Před 2 lety

    Здравствуйте, есть такой вопрос, во время учёбы в ВУЗе или в школе вы участвовали в олимпиадах по спортивному программированию?

  • @Iskandarko
    @Iskandarko Před 2 lety +2

    Спасибо за видео 👍

  • @TeaWillHelp
    @TeaWillHelp Před 2 lety

    Спасибо тебе, соскучились

  • @user-nq3oq6ke1y
    @user-nq3oq6ke1y Před 24 dny

    В общем телегу описали...
    А мне почему-то больше интересует, как спящий телефон мгновенно просыпается при входящих сообщениях?
    Телефон не щадя батарею постоянно поддерживает соединение? Есть подозрение, что тут не всё так просто...

  • @sergeyharchenko5116
    @sergeyharchenko5116 Před 2 lety

    Уважаемый Соер)
    Твой контент уникальный среди десятков каналов и групп, на которые я подписан.
    Надеюсь подписчики не повлияют на него, требованиями типо: "Почему не рассказал что такое контроллер? Я просто в деревне, здесь интернета нет."
    Таких видео, с рассуждениями, очень не хватает.
    Обычно включая видео, начинает болеть голова в ожидании зачитывания документаций.
    А за эти 16 минут, с уровнем понимания архитектуры как у подписчика, который задал вопрос, я получил удовольствие, стало понятно куда копать, как мыслить и что ожидает, если решиться сделать такую задачу грамотно, а не костылями.
    Каеф, лайк.

  • @Anatoly555
    @Anatoly555 Před 2 lety +1

    Спасибо за ролик, но есть вопрос.
    На 4:55 была высказана мысль о практически полном отсутствии требований в формулировке вопроса. И утверждение, что именно требования должны определить всю архитектуру, вплоть до того, монолит это будет или микросервисы.
    Но... после этих слов внезапно было начато проектирование и в результате создан то ли первый вариант, то ли ядро архитектуры. Это - нормально?
    Может, так оно на практике и работает - заказчик высказал какую-то хрень, думать некогда, разговаривать с ним тоже, херакс-херакс в продакшен, а там посмотрим?
    S0er, возможно ты перед проектированием предположил недостающие требования (из своего опыта, есс-но), и уже на основании своих гипотез начал прорабатывать архитектуру? Тогда хотелось бы понимать, из чего ты исходил, что сподвигло к созданию именно такого количества слоёв и объектов.
    Ведь далеко, далеко не всегда это всё нужно.... Не мог бы ты озвучить, хотя бы примерно, каких целей достигает озвученный подход?

  • @Ali_Ibragimov_Jostkiy

    Здравствуйте! А какую ЭВМ вы используете в повседневной работе?

  • @user-uj5ol5fm1u
    @user-uj5ol5fm1u Před 4 měsíci

    Подскажите, можно ли интегрировать модуль в монолитную архитектуру? Или лучше микросервис разработать для монолита?

  • @uygf4029
    @uygf4029 Před rokem +1

    Я кодить то толком не умею, а тут чёт капец интересно

  • @user-ch5uw2kp4l
    @user-ch5uw2kp4l Před 2 lety +3

    Спасибо !
    Хотелось бы еще что-бы ты разъяснил про то, как правильно выстраивать модели и архитектуру для реализации подписок на пользователей. Как в инстаграм, к примеру.

    • @S0ERDEVS
      @S0ERDEVS  Před 2 lety +5

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

    • @user-ch5uw2kp4l
      @user-ch5uw2kp4l Před 2 lety

      @@S0ERDEVS Спасибо за ответ!
      Вот как раз таки со структурой моделей не совсем понятно, как лучше все выстроить, что бы это было удобно все использовать. Был бы рад получить информацию от Вас!

  • @danilakhtarov
    @danilakhtarov Před 2 lety

    Архитектора прикольная. Хотелось бы ещё услышать как сохранить согласованность данных и определить причинно-следственные связи. Получится ли так, что пользователь отправит сообщение, это сообщение увидит другой пользователь, а в базу в итоге не запишется. Это уже конечно зависит от конкретной реализации, но было бы прикольно посмотреть на эти примеры

  • @AndrewLewman
    @AndrewLewman Před 2 lety +4

    Поправьте меня, но ведь клиент (пользователь) должен получать только те сообщения, которые ему предназначены?
    То есть бОльшая часть логики реализуется на сервере?, данные хранятся в базах (например в реляционной с использованием many-to-many связи через промежуточную таблицу), пользователь забирает с сервера/подписывается на - свои сообщения, которые уже на клиенте распределяются по комнатам, доступным пользователю.
    Было бы здорово увидеть продолжение этого видео, с разбором серверной архитектуры и реализацией fullstack MVP на основе этих набросков. Понятно, что требований может не хватать, но польза обучающего видео в практике, которую можно подглядеть и начать думать ближе к мышлению автора
    Спасибо

    • @bubblesort6368
      @bubblesort6368 Před 2 lety +1

      Комната и пользователь могут быть связаны не напрямую, а опосредованно через третью сущность под названием подписка. А подписка будет ссылаться на пользователя и на комнату.

    • @drovoseg
      @drovoseg Před rokem

      Пользователь подписывается именно на комнаты, а не на сообщения. Делать many-to-many между пользователями и сообщениями это абсурд

  • @eaglesm1993
    @eaglesm1993 Před 2 lety

    О, скоро как раз чат делать, возьму за основу)

  • @igor8219
    @igor8219 Před 2 lety +7

    Соер, здравствуйте! Наверняка вам этот вопрос уже неоднократно задавали, но я ответа не видел. Расскажите, с помощью чего вы рисуете на экране?

    • @alexeyaleksandrov
      @alexeyaleksandrov Před 2 lety

      графический планшет это называется

    • @user-ew6vd4ud3z
      @user-ew6vd4ud3z Před 2 lety +1

      у него шаринган

    • @igor8219
      @igor8219 Před 2 lety

      @@user-ew6vd4ud3z что такое шаринган?

    • @sergeyharchenko5116
      @sergeyharchenko5116 Před 2 lety +1

      @@igor8219 одно из Сандай Додзюцу

  • @ripichipina
    @ripichipina Před 3 měsíci

    Хороший формат, спасибо

  • @staskapanin
    @staskapanin Před 2 lety +2

    Мне кажется, автор вопроса (как и большинство тех, кто негативно высказался о видео) путают архитектуру и проектирование отдельных классов(или таблиц в БД). Спросил про архитектуру и тут же скачок на более низкий уровень абстракции - как сделать композицию в классе и нужно ли это делать. Вопрос был про архитектуру и Соер по минимальным данным на него ответил. Архитектура же про слои и их изолированность, про группы классов, про обмен данными между ними. IMHO, конечно)

  • @nikitaderyushev7555
    @nikitaderyushev7555 Před 2 lety +1

    Привет, большое спасибо за контент, хочу задать вопрос или попросить освятить такую тему, как SaaS, а именно организация архитектуры сервиса (b2b), который поставляется сразу нескольким организациям-кастомерам, наибольший интерес тут именно к тому как хранить данные каждого кастомера (организации) и не пересечь их друг с другом? Ведь в одной базе хранить конечно можно, но тупо страшно. Независимые виртуалки под каждого? Может выйти дорого по железу и как-то сложно. Есть ведь еще такой термин как multitenancy, но у него несколько интерпретаций. Очень хочется узнать где истина, потому что сейчас занимаюсь именно таким проектом
    Сколько ни гуглил никак не могу найти материал о том как грамотно строить SaaS

    • @TwilightSun32
      @TwilightSun32 Před 2 lety +1

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

    • @drovoseg
      @drovoseg Před rokem

      Зависит от количества организаций и как часто они будут добавляться

  • @user-ul7uy6om7k
    @user-ul7uy6om7k Před 2 lety

    Подскажите пожалуйста, если я оплачиваю на патреоне подписку уровня Workshop Donate я получаю доступ к архитектурным стримам И к воркшопам? Или только к воркшопам?

    • @S0ERDEVS
      @S0ERDEVS  Před 2 lety

      И к стримам, и к воршопам.

  • @user-cy3do4xc2c
    @user-cy3do4xc2c Před 2 lety

    Охренеть 🤯 наконец-то начинаю понимать, как подходить к архитектуре и как её дальше отображать на фреймворк. Лет 5 назад промаялся полгода с руби он рейлз, и забросил. А надо было вот с этих схемок начинать!

    • @Deletedeletedelete
      @Deletedeletedelete Před 7 měsíci

      Блин ну рельса довольно проста в изучении

  • @user-gj6vo3xm5b
    @user-gj6vo3xm5b Před 2 lety

    Нужна таблица юзеров, сообщений, самих чатов. В остальном дело логики.

  • @uranproject
    @uranproject Před 2 lety

    много проще начинать с конца, а это tdd. а что если не писать тесты. Вопрос! не является ли эта схема апогеем разработки

  • @leosmile341
    @leosmile341 Před 2 lety

    А где и что почитать по архитектуре? Есть курс какой-то или книги?

    • @inzagher
      @inzagher Před 2 lety

      Есть видео на канале, называется "5 книг по архитектуре ПО, которые стоит прочитать в 2021". Там 5 книг + ссылка на патреон, где есть расширенный список.

  • @VanyaQA
    @VanyaQA Před 2 lety

    обожаю твой канал!

  • @deni5n
    @deni5n Před 2 lety +4

    как то скомкано, вроде почти 17 минут, но какими-то боольшими мазками. реально автру интересно стал понятен ответ на его вопрос или нет?

    • @socialcatalyst2608
      @socialcatalyst2608 Před měsícem

      Автор видео старался, но в видео есть много точек роста. Как такого самого проектирования тут показано критически мало.

  • @chashkovdaniil
    @chashkovdaniil Před 2 lety +1

    Что если пользователь не отправил ни одного сообщения в комнату, но находится там в качестве слушателя, получается комната должна знать о пользователе?

  • @user-sn3mg8wk7v
    @user-sn3mg8wk7v Před 2 lety +2

    Многоуважаемый S0ER, хотел бы попросить Вас, объяснить, что такое контроллер, по всем остальным частям понятно, а вот слово контроллер не укладывается в голове, что же оно такое и с чем его едят. Понятно что термин контроллер - значит контроль или управление. В конечном исполнении сервис - служба к примеру, а что контроллер непонятно(, ясно, что служба ждет чего-то, а как проходит жизненный цикл контроллера - не пойму, но интуитивно предполагаю, что он реагирует на входные данные. Был бы благодарен Вам за разъяснения.

    • @sergeyharchenko5116
      @sergeyharchenko5116 Před 2 lety +2

      в этом и фишка Соера. Он часто не рассказывает то, что гуглится по первому запросу.

    • @shalidor1619
      @shalidor1619 Před 2 lety

      Контроллер обрабатывает входные данные в адекватный вид для сервиса и возвращает данные в необходимом виде клиенту

    • @user-on7sc3eg8i
      @user-on7sc3eg8i Před rokem

      @@sergeyharchenko5116 это не фишка, а не умение преподнести инфу систематизированно

  • @hino2
    @hino2 Před 2 lety +1

    Дак я не понял. Если в комнате не будет храниться список пользователей, то как пришедшее в эту комнату сообщение найдет всех своих адресатов?

    • @animatronioboss
      @animatronioboss Před 2 lety +2

      Наберет на мобилу

    • @drovoseg
      @drovoseg Před rokem

      На бэкенде в базе будет храниться конечно. А на фронтенде это и не нужно, там получатель только один.

  • @eugeneponomarov7429
    @eugeneponomarov7429 Před 2 lety

    Класс!

  • @MyQuickChannel
    @MyQuickChannel Před rokem +4

    Не особо понятен смысл видео, автор упустил ответ на вопрос и при этом начал описывать MVC паттерны и прочее не имеющее отношение к вопросу, которое имхо можно было бы пропустить. Тут важны были детали именно реализации отношений

    • @vladimirgrebenyuk3943
      @vladimirgrebenyuk3943 Před 11 měsíci

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

  • @Alexis007
    @Alexis007 Před 2 lety +5

    Я извиняюсь конечно, но сейчас в доброй половине приложений есть:
    1) клиент-серверная архитектура
    2) Контроллер
    3) Сервис
    4) Сущность "юзер".
    И еще базу данных можно нарисовать. Всё это примерно так и связано. Но это слишком общая архитектура получается. Важны всё таки детали

  • @dann1kid
    @dann1kid Před 2 lety

    Я освоил декомпозцию после того как разобрался в Django с его MVC.

  • @razumov_uv
    @razumov_uv Před 2 lety +3

    Я хоть и для ПЛК софт разрабатываю, но слушать все равно интересно. Не все понятно, но жутко интересно!

    • @merxan2417
      @merxan2417 Před 2 lety

      Извиняюсь спросить, что такое ПЛК?

    • @razumov_uv
      @razumov_uv Před 2 lety

      @@merxan2417 Программируемый Логический Контроллер, или PLC по буржуйскому. Железки, которые промышленным оборудованием управляют.

  • @supervichka7764
    @supervichka7764 Před 2 lety

    Архитектура не терпит скомканности! (с)

  • @diatm1506
    @diatm1506 Před rokem

    Почему так мало кто говорит о сокетах, webrtc, oauth2?

  • @petrvictorovich
    @petrvictorovich Před 2 lety

    Нихрена не понял, но начал понимать, что нужно начать понимать.

  • @radar9171
    @radar9171 Před 2 lety

    Сделайте пожалуйста видео по фреймворку radare2

  • @kourgeek758
    @kourgeek758 Před 2 lety

    Последние 2 минуты это краткий гайд как пройти собес на разраба)))

  • @user-wv8xz3vi3l
    @user-wv8xz3vi3l Před 2 lety +2

    а потом лид приносит правки от заказчика и все идет к чертовой матери...

  • @VanesStalkers
    @VanesStalkers Před 2 lety +6

    По-моему автор вопроса под формулировкой "архитектура приложения" имел в виду банальное "какие таблички мне создать в бд, какими ключами их между собой сцепить и какие должны быть запросы выборки в конкретных случаях". Не буду спорить с автором канала на тему первостепенности выбора шагов при решении подобной задачи, однако предполагаю, что части негативных комментариев можно было бы избежать, приложив к видео простенькую схемку архитектуры бд + несколько живых sql-запросов по предложенным бизнес-кейсам.
    не то, за что зацепился и начал объяснять автор канала (конкретный шаблон реализации клиент-серверной архитектуры)

  • @johnwalker1232
    @johnwalker1232 Před 2 lety

    Небольшое пожелание по качеству видео. На заблюренный экран неприятно смотреть, глаза с ума сходят. Черный кусок экрана (как раньше) для схем был бы лучше.
    За архитектуру несомненно респект, всегда интересно посмотреть.

    • @Anatoly555
      @Anatoly555 Před 2 lety

      наоборот, норм.
      Соблюден нынче модный и привычный формат говорящей головы - и визуализация информации на фоне её. Лучше, чем квадратик, который торчит в каком-либо из углов экрана, занимая место, а то и загораживая контент!

  • @alexgavril385
    @alexgavril385 Před 5 měsíci

    Бляяя.. примерно такаяже мутатень у метя происходила первые два года в ит, печалька

  • @user-oh5jk6kf4x
    @user-oh5jk6kf4x Před 2 lety

    Ух как сложно, сложно вычленить какую нибудь теорию

  • @itforall89
    @itforall89 Před 2 lety

    Давненько не было слышно тебя

  • @md5login
    @md5login Před 2 lety

    Безусловно, любую задачу можно разбить и подогнать под ту или иную архитектурную модель. Однако, мне кажется, вопрос был не только об архитектурной основе чата, но и максимально эффективной связке комната-юзер. При абстрактно верном ответе, все же остается нерешенным вопрос, как лучше сделать эту привязку. Насколько мне ясно из видео, сообщение хранит все данные, но ведь эти данные - следствие, а не причина.

    • @S0ERDEVS
      @S0ERDEVS  Před 2 lety +1

      Связка хранится вне комнаты и юзера, их связывает сервис, который может делать это любым способом, обычно хранение реализуется где-то в БД на сервере в виде пар внешних ключей.

    • @md5login
      @md5login Před 2 lety

      @@S0ERDEVS В таком случае, почему сообщение вообще имеет отдельную ценность? Возможно, более верным решением будет DTO типа "event" которая хранит данные о любой активности и сообщениях в том числе? В таком случае, можно будет составить полную картину в любой момент, без лишних итераций поиска и сопоставлений...

    • @S0ERDEVS
      @S0ERDEVS  Před 2 lety

      ​@@md5login не понял вопроса, сообщение - это обобщение над возможными типами передаваемых данных "event", "command", "text".

    • @md5login
      @md5login Před 2 lety

      @@S0ERDEVS Это именно то, что я имел в виду. Вопрос снят, спасибо.

    • @sixstringautist5089
      @sixstringautist5089 Před 2 lety +1

      @@S0ERDEVS Разве в терминах DDD - комната не является агрегатом для пользователей и сообщений? Если так, то получается что комната будет хранить и то и то.

  • @user-ux5qd5zr2k
    @user-ux5qd5zr2k Před 2 lety

    I'm from Senior Software Vlogger

  • @fedordostoevskiy4209
    @fedordostoevskiy4209 Před 6 měsíci

    Если комнате user не нужен, то ч зачем она нужна??? (

  • @mukhammadrustambayev2051

    То есть модели анемичные будут.

  • @evgenasd8892
    @evgenasd8892 Před 2 lety

    Правильно ли что сервисами здесь называется класс который имеет поведение но не имеет состояния - то бишь симплДоменМодел ?

  • @ksviety
    @ksviety Před 2 lety

    Где то в мире техо плачет один кактус

  • @KopoLPedov
    @KopoLPedov Před 2 lety +1

    опять дед бухтит

  • @user-mw2cd3lu8n
    @user-mw2cd3lu8n Před 2 lety

    А где же СОЛИД и +100500 паттернов ?

    • @shalidor1619
      @shalidor1619 Před 2 lety

      В идеальном мире собеседований)

  • @user-oe2oq6gl8n
    @user-oe2oq6gl8n Před 2 lety +2

    В коментах есть джу....?)) Вам дали главное архитектурное решение для чата - месседж это серебренная пуля и даже некий god object все остолное вокруг него - реализуйте как хотите. Работаю в конторке где один из продуктов мессенджер. Вся архетектура как описанно в видео - а парни кто делал под него архитиктуру почти год ресерчили телегу инсту твитер слак вк вичат лайн и т.д. и как оказалось - везде так. Тока не нада что все слизали друг у друга... сделай подругому, а когда упрешся в проблемы маштабируемости, ботов, шаблонов, бесед, групп и ой там б много еще чего тогда и ответишь.. И понятно что автор вам тут мессенджер не напишет, так как это один из самых сложных продуктов (ну для тех кто незнал).

    • @drovoseg
      @drovoseg Před rokem +1

      Одни из самых сложных продуктов это банковские сервисы, биржи, логистика. Это на много порядков сложнее мессенджера

  • @doc-jp2bf
    @doc-jp2bf Před 2 lety +2

    Меня запутало. Если чуть конкретнее, то 2 вещи которые я вынес из видео, которые меня сильно смущают.
    1) Комната это модель данных
    2) Посередине между всеми сущностями есть сервис
    1. Окей комната это модель данных, но разве других моделей нет? Сообщение и юзер это тоже модели данных
    2. Скалывается такое ощущение из видео, что модели ничего друг о друге не знают, и все это обмазано сервисами, которые знают все обо всем. Тогда возникает вопрос а как же сервисы хранят информацию о этих связях?
    На мой взгляд комната и юзер действительно не связаны на прямую, те не зацеплены. По тому как комната связана с сообщением, и юзер связан сообщением. Но вот сообщение должно, обязано хранить ссылку и на комнату и на юзера. На этом этапе мы еще ничего не должны знать ни о каких сервисах, иначе все становиться запутано.

    • @S0ERDEVS
      @S0ERDEVS  Před 2 lety +1

      1) Комната модель, в том смысле что она имеет атрибуты:
      - id
      - описание
      - имя
      т.е. модель несет описание комнаты
      2) Сервис - это логика, сервисов много и они решают задачи:
      - получить список комнат
      - получить список пользователей
      - сопоставить пользователей с комнатой
      а сообщение - это объект передачи данных, он таскает в себе информацию, которую используют сервисы, чтобы изменить свое состояние.

    • @doc-jp2bf
      @doc-jp2bf Před 2 lety

      @@S0ERDEVS Хорошо, сообщение изменяет состояние комнаты.
      - Как получить список своих сообщений без привязки к комнате? Нужно просканировать все комнаты, выцепить там только свои сообщения? Немного это не правильно.
      Еще раз сообщение изменило состояние комнаты. Это означает что нет реляции между пользователем и сообщением. Сообщение это не вода, которую выгрузил из одной емкости и загрузил в другую.

    • @doc-jp2bf
      @doc-jp2bf Před 2 lety

      @@S0ERDEVS " которую используют сервисы, чтобы изменить свое состояние" - мы предпологаем что сервисы хранят состояния?

    • @S0ERDEVS
      @S0ERDEVS  Před 2 lety

      @@doc-jp2bf
      1) Я сразу обозначил, что все пляшет от сообщения и его структуры, в структуре сообщения предусмотрено как "Room", так и "User", чтобы получить все сообщения User-а, нужно фильтровать по User-у, чтобы получить все сообщения по комнате, нужно фильтровать по комнате.
      2) Клиент серверная архитектура предполагает хранение стейта на сервере, а на клиенте только "отображение" этого стейта, соответственно, если вы хотите что-то фильтровать на клиенте, то это идет в разрез с выбранным стилем архитектуры
      3) У каждой сущности есть состояние, у сервисов, у контроллеров, у роутера. Сущность без состояния - это null (хотя отсутствие состояние, тоже можно рассматривать как состояние)
      Но в любом случае мы не знаем какие у нас задачи (об этом сказано в видео) и какие ограничения. Видео описан общий принцип построения архитектуры клиент-серверного приложения с разделением ответственности, конечную архитектуру надо строить с уточнением требований.

    • @doc-jp2bf
      @doc-jp2bf Před 2 lety

      @@S0ERDEVS "чтобы получить все сообщения User-а, нужно фильтровать по User-у" Фильтровать по юзеру что? Состояние комнаты (комнат)? (Еще раз зафиксирую мысль, сообщение меняет состояние комнат, но само при этом не является сущностью)

  • @QuickCube
    @QuickCube Před 2 lety

    Отличный контент, удивляет, что многие пишут не совсем объективные комментарии (негатив), скорее всего сказывается недостаток опыта, у таких комментаторов.
    Рекомендую книгу: system design interview An Insiders's...
    Там есть глава: design a chat system

  • @lanfix1320
    @lanfix1320 Před 2 lety +1

    Нагородил сто пятьдесят тысяч абстракций и сделал приложение, которе не запустится ни у одного клиента

  • @alicenNorwood
    @alicenNorwood Před 2 lety

    Бис

  • @dmitrysomsin2117
    @dmitrysomsin2117 Před 2 lety +6

    Вода же. Просто по верхам водички полили и пошли дальше.

    • @S0ERDEVS
      @S0ERDEVS  Před 2 lety +3

      Напиши конкретнее чего не понял, постараюсь уточнить в следующих видео.

    • @user-hc1hl2nx8e
      @user-hc1hl2nx8e Před 2 lety +5

      @@S0ERDEVS не обращай внимание, очередной вкатывальщик в айти зашел не на тот канал. Я очень рад что ты выпустил ролик! Очень полезно.

    • @ilyazyabirov4884
      @ilyazyabirov4884 Před 2 lety

      ​@@S0ERDEVS имхо, слишком мало внимания уделено взаимодействию бизнес-сущностей друг с другом и обоснованию того, почему бизнес-сущности должны быть выстроены именно так. В видео речь идет больше о программных сущностях - архитектурных компонентах.
      Но отмечу и довольно полезную мысль из видео - про необходимость избавления от привычки сразу пытаться уместить бизнес-требования в парадигму конкретного языка/фреймворка.

    • @S0ERDEVS
      @S0ERDEVS  Před 2 lety +1

      @@ilyazyabirov4884 я готов обсуждать любые предметные мысли и критику, но я не могу помочь человеку что-то понять, если он не написал ничего предметно. По сути воду в видео только пара человек увидели, остальные смогли довольно интересные мысли написать.

  • @leshiq4214
    @leshiq4214 Před 2 lety +3

    Божественный ответ с полезностью ~ 0. Дрочка абстракций вместо конкретной помощи по конкретному вопросу. Полезность на уровне рассказа о принципе работы двигателя внутреннего сгорания в ответ на вопрос "как завести машину".

    • @supervichka7764
      @supervichka7764 Před 2 lety +1

      Гегель переворачивается в гробу

    • @S0ERDEVS
      @S0ERDEVS  Před 2 lety +4

      Дружище, я бы рад помочь тебе разобраться, но ты напиши что ты хочешь понять. Конкретно на поставленный вопрос я ответил почти сразу - объединение в композицию комнаты и пользователя недопустимо, почему тоже объяснил в видео.
      Более правильная декомпозиция тоже есть в видео. Чего не так-то?

    • @kirillnikulin605
      @kirillnikulin605 Před 2 lety +1

      @@supervichka7764 ааа, вот это ты жжешь))

    • @offroadnewbie
      @offroadnewbie Před 2 lety +4

      Действительно, божественный ответ с полезностью . Если вы не поняли его, то пересмотрите еще раз, и подумайте. На мой взгляд это весьма полезная информация, о которой не только лишь все думают. Соер подробно рассказал, почему автор вопроса столкнулся с проблемой, и показал вариант решения ее проблемы. И да, чтобы завести машину нужно знать хотя бы отдаленно принцип работы ДВС. Вдруг, у вас там бензин закончился, или мотор вообще стуканул?)

  • @Wansery
    @Wansery Před 5 měsíci

    Видео объективно ни о чём. Всё что ты описал и так понятно, обычный mvc. Лучше бы ты рассказал какие именно технологии ты бы использовал на каком этапе, чтобы обеспечить максимальную скорость и оптимизацию при работе с большим колличеством подключений. Если мессенджер был бы десктопным, то что есть комната? Нужен ли ей свой Server socket или использовать один на весь мессенджер? Не понятно.

  • @fallenangel1395
    @fallenangel1395 Před 2 lety +1

    MVC/MVP/MVVM - худшее, что могли придумать в программировании

    • @md5login
      @md5login Před 2 lety +4

      А можно немного конкретнее?