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

Поделиться
HTML-код
  • Опубликовано: 24 ноя 2024

Комментарии • 139

  • @DevilAlex03
    @DevilAlex03 3 года назад +12

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

  • @ivankarash2646
    @ivankarash2646 2 года назад +2

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

  • @IlyaRachinsky
    @IlyaRachinsky 3 года назад +9

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

  • @uygf4029
    @uygf4029 Год назад +1

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

  • @VladykaVladykov
    @VladykaVladykov 3 года назад +2

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

  • @eleimt
    @eleimt 3 года назад +3

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

  • @lvn5609
    @lvn5609 3 года назад +3

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

  • @honeybadger3756
    @honeybadger3756 3 года назад +3

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

  • @Александр-й7б9и
    @Александр-й7б9и 2 года назад

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

    • @Deletedeletedelete
      @Deletedeletedelete Год назад

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

  • @РоманВойтук
    @РоманВойтук 3 года назад +53

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

    • @S0ERDEVS
      @S0ERDEVS  3 года назад +22

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

    • @MoDKona
      @MoDKona 3 года назад +5

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

    • @РоманВойтук
      @РоманВойтук 3 года назад +1

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

    • @dirtyhandz
      @dirtyhandz 3 года назад

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

    • @kost9kost
      @kost9kost 3 года назад

      @@РоманВойтукты школу закончил?

  • @Alexvilg
    @Alexvilg Год назад

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

  • @РоманТимощук-ж9и
    @РоманТимощук-ж9и 3 года назад +3

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

    • @S0ERDEVS
      @S0ERDEVS  3 года назад +5

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

    • @РоманТимощук-ж9и
      @РоманТимощук-ж9и 3 года назад

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

  • @Alexis007
    @Alexis007 3 года назад +6

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

  • @wertX1
    @wertX1 2 года назад

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

  • @Iskandarko
    @Iskandarko 3 года назад +2

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

  • @MyQuickChannel
    @MyQuickChannel 2 года назад +5

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

    • @vladimirgrebenyuk3943
      @vladimirgrebenyuk3943 Год назад

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

  • @ripichipina
    @ripichipina 9 месяцев назад

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

  • @danilakhtarov
    @danilakhtarov 3 года назад

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

  • @soulcode9941
    @soulcode9941 3 года назад +2

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

  • @eaglesm1993
    @eaglesm1993 3 года назад

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

  • @gecnepago
    @gecnepago 3 года назад

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

  • @TeaWillHelp
    @TeaWillHelp 3 года назад

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

  • @kirillnikulin605
    @kirillnikulin605 3 года назад +8

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

    • @supervichka7764
      @supervichka7764 3 года назад +2

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

    • @doc-jp2bf
      @doc-jp2bf 3 года назад

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

    • @kirillnikulin605
      @kirillnikulin605 3 года назад

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

    • @kirillnikulin605
      @kirillnikulin605 3 года назад +2

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

  • @VanesStalkers
    @VanesStalkers 3 года назад +7

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

  • @sergeyharchenko5116
    @sergeyharchenko5116 3 года назад

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

  • @eugeneponomarov7429
    @eugeneponomarov7429 3 года назад

    Класс!

  • @razumov_uv
    @razumov_uv 3 года назад +3

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

    • @merxan2417
      @merxan2417 3 года назад

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

    • @razumov_uv
      @razumov_uv 3 года назад

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

  • @AndrewLewman
    @AndrewLewman 3 года назад +4

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

    • @bubblesort6368
      @bubblesort6368 3 года назад +1

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

    • @drovoseg
      @drovoseg 2 года назад

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

  • @staskapanin
    @staskapanin 3 года назад +2

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

  • @petrvictorovich
    @petrvictorovich 3 года назад

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

  • @НиязРустемов-р3ц
    @НиязРустемов-р3ц 6 месяцев назад

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

  • @Эвенкийка24
    @Эвенкийка24 10 месяцев назад

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

  • @deni5n
    @deni5n 3 года назад +5

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

    • @socialcatalyst2608
      @socialcatalyst2608 7 месяцев назад +1

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

  • @dann1kid
    @dann1kid 3 года назад

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

  • @igor8219
    @igor8219 3 года назад +7

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

  • @diatm1506
    @diatm1506 2 года назад

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

  • @Ali_Ibragimov_Jostkiy
    @Ali_Ibragimov_Jostkiy Год назад

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

  • @НиколайТуршиев
    @НиколайТуршиев 3 года назад +2

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

    • @sergeyharchenko5116
      @sergeyharchenko5116 3 года назад +2

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

    • @shalidor1619
      @shalidor1619 2 года назад

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

    • @РичардЖиулиевич
      @РичардЖиулиевич 2 года назад

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

  • @uranproject
    @uranproject 3 года назад

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

  • @VanyaQA
    @VanyaQA 3 года назад

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

  • @RuslanMavlyanov
    @RuslanMavlyanov 3 года назад

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

  • @Anatoly555
    @Anatoly555 3 года назад +1

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

  • @radar9171
    @radar9171 3 года назад

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

  • @федов-ф4х
    @федов-ф4х 3 года назад +2

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

  • @chashkovdaniil
    @chashkovdaniil 3 года назад +1

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

  • @nikitaderyushev7555
    @nikitaderyushev7555 3 года назад +1

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

    • @TwilightSun32
      @TwilightSun32 3 года назад +1

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

    • @drovoseg
      @drovoseg 2 года назад

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

  • @МихаилСвиридов-ц9п
    @МихаилСвиридов-ц9п 3 года назад

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

  • @hino2
    @hino2 3 года назад +1

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

    • @stow1x
      @stow1x 3 года назад +3

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

    • @drovoseg
      @drovoseg 2 года назад

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

  • @jz4887
    @jz4887 3 года назад +1

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

  • @supervichka7764
    @supervichka7764 3 года назад

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

  • @kourgeek758
    @kourgeek758 3 года назад

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

  • @КлимНуралин-у4у
    @КлимНуралин-у4у 2 года назад

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

  • @alexgavril385
    @alexgavril385 10 месяцев назад

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

  • @astronauvtsir1566
    @astronauvtsir1566 3 года назад

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

  • @md5login
    @md5login 3 года назад

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

    • @S0ERDEVS
      @S0ERDEVS  3 года назад +1

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

    • @md5login
      @md5login 3 года назад

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

    • @S0ERDEVS
      @S0ERDEVS  3 года назад

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

    • @md5login
      @md5login 3 года назад

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

    • @sixstringautist5089
      @sixstringautist5089 3 года назад +1

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

  • @ИльяФалько-в4ц
    @ИльяФалько-в4ц 3 года назад

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

    • @S0ERDEVS
      @S0ERDEVS  3 года назад

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

  • @johnwalker1232
    @johnwalker1232 3 года назад

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

    • @Anatoly555
      @Anatoly555 3 года назад

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

  • @fedordostoevskiy4209
    @fedordostoevskiy4209 Год назад

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

  • @ЕвгенийБокач-ю7ч
    @ЕвгенийБокач-ю7ч 3 года назад

    I'm from Senior Software Vlogger

  • @itforall89
    @itforall89 3 года назад

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

  • @leosmile341
    @leosmile341 3 года назад

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

    • @inzagher
      @inzagher 3 года назад

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

  • @ksviety
    @ksviety 3 года назад

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

  • @misterbob9827
    @misterbob9827 17 дней назад

    Левкин завязывай, там новые кейсы завезли пополняй кошелек и бегом в пабг

  • @mukhammadrustambayev2051
    @mukhammadrustambayev2051 3 года назад

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

  • @doc-jp2bf
    @doc-jp2bf 3 года назад +2

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

    • @S0ERDEVS
      @S0ERDEVS  3 года назад +1

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

    • @doc-jp2bf
      @doc-jp2bf 3 года назад

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

    • @doc-jp2bf
      @doc-jp2bf 3 года назад

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

    • @S0ERDEVS
      @S0ERDEVS  3 года назад

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

    • @doc-jp2bf
      @doc-jp2bf 3 года назад

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

  • @evgenasd8892
    @evgenasd8892 3 года назад

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

  • @MaksimK-l4k
    @MaksimK-l4k 3 года назад

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

    • @shalidor1619
      @shalidor1619 2 года назад

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

  • @KopoLPedov
    @KopoLPedov 3 года назад +1

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

  • @lanfix1320
    @lanfix1320 3 года назад +1

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

  • @СтасСеров-я7щ
    @СтасСеров-я7щ 3 года назад +2

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

    • @drovoseg
      @drovoseg 2 года назад +1

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

  • @QuickCube
    @QuickCube 3 года назад

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

  • @leshiq4214
    @leshiq4214 3 года назад +3

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

    • @supervichka7764
      @supervichka7764 3 года назад +1

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

    • @S0ERDEVS
      @S0ERDEVS  3 года назад +4

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

    • @kirillnikulin605
      @kirillnikulin605 3 года назад +1

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

    • @offroadnewbie
      @offroadnewbie 3 года назад +4

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

  • @dmitrysomsin2117
    @dmitrysomsin2117 3 года назад +6

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

    • @S0ERDEVS
      @S0ERDEVS  3 года назад +3

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

    • @РоманВойтук
      @РоманВойтук 3 года назад +5

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

    • @ilyazyabirov4884
      @ilyazyabirov4884 3 года назад

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

    • @S0ERDEVS
      @S0ERDEVS  3 года назад +1

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

  • @Wansery
    @Wansery 11 месяцев назад

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

  • @alicenNorwood
    @alicenNorwood 3 года назад

    Бис

  • @fallenangel1395
    @fallenangel1395 3 года назад +1

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

    • @md5login
      @md5login 3 года назад +4

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