@oop_ru

Страница 743 из 785
Yegor
07.09.2018
09:37:40
логика та же?

F01134H
07.09.2018
09:37:49
на личности давайте на блоге переходить, там смешнее будет)
да не будет там смешнее. Знаешь почему? Потому что мне лень

Sergey
07.09.2018
09:37:58
да. и большие классы по 5000 строк это не проблема сама по себе. проблема, если внутри там нет четкой структуры. да?
классы по 5000 строк не являются сами по себе проблемой. проблемой является связанность между классами по 5000 строк

Yegor
07.09.2018
09:38:23
Google
Yegor
07.09.2018
09:38:32
я считаю что большие классы проблема сама по себе

Aleh
07.09.2018
09:38:49
И большие проекты

Sergey
07.09.2018
09:38:50
я считаю что большие классы проблема сама по себе
у этой проблемы есть решение - отказаться от классов (привет ФП)

Yegor
07.09.2018
09:39:06
ну в общем аргумент о том, что статья написана плохо -- разбит

ты просто не согласен с ее главным посылом

но это не значит, что он плохо изложен

Adel
07.09.2018
09:39:26
помоему вы зря тратите времяна абсолютно неправильную аналогию: монореп = класс 5000 строк

Sergey
07.09.2018
09:39:37
ну в общем аргумент о том, что статья написана плохо -- разбит
1. не разбит. ты просто говоришь "бла бла ничего не слышу мое мнение бла бла"

F01134H
07.09.2018
09:39:41
Sergey
07.09.2018
09:39:49
вот я тоже не понимаю

Yegor
07.09.2018
09:39:53
F01134H
07.09.2018
09:40:04
лол

Google
F01134H
07.09.2018
09:40:12
Артур Евгеньевич
07.09.2018
09:40:17
у нас проект с 2002 года и у нас монореп

это пиздец

Sergey
07.09.2018
09:40:49
ты просто не согласен с ее главным посылом
да, я не согласен. Потому что в статье вообще не прослеживается мысль про границы. Ты как границу модуля преподносишь репозиторий. Хотя можно просто "сделать папочку" и сложить туда код относящийся к модулю. Как если бы у тебя было 100 репозиториев для проекта и ты просто сделал бы 100 директорий в одном репозитории.

Артур Евгеньевич
07.09.2018
09:41:05
хотя я не уверен что с микросервисами хуже бы не стало, учитывая как у нас взаимодейстие между отделами строится)

думаю некотоыре просто стали бы копироать нужные куски кода себе?

из сервиса в сервис

Sergey
07.09.2018
09:41:38
хотя я не уверен что с микросервисами хуже бы не стало, учитывая как у нас взаимодейстие между отделами строится)
вот об этом надо писать статьи. О том что люди путают понятие "монорепозиторий" и"монолит" а потом противопоставляюют этому "микросервисы"

Артур Евгеньевич
07.09.2018
09:42:57
Артур Евгеньевич
07.09.2018
09:43:09
или можно из одной репы раскладываться на разные сервисы разные участки кода?

Sergey
07.09.2018
09:43:10
не я понимаю что переубедить Егора у меня не выйдет. Просто высказываю недовольства чтот Егор уже не торт. Раньше его набросы и аргументы заставляли задуматься. А сейчас чет как-то нет

но микросервисы это же автоматом, означает что будет не монорепозиторий
нет, микросервисы прекрасно вписыватюся в монорепозитории

Артур Евгеньевич
07.09.2018
09:44:03
звучит дико для меня

Sergey
07.09.2018
09:44:08
микросервисы это больше про шаринг знаний и управление инфраструктурой

ой

монорепозитории*

Артур Евгеньевич
07.09.2018
09:44:28
я как один из основный плюсов микросервиса выделял, административнео и техническое разделение работы

Sergey
07.09.2018
09:44:42
а микросервисы это просто про независимый деплой и декомпозицию системы на "большие объекты" (прям как алан кей хотел) которые владеют данными и обмениваюются сообщениями

Google
F01134H
07.09.2018
09:44:42
звучит дико для меня
а че такого, считай у тебя экосистема в одной репе и разбита на части - микросервисы

Артур Евгеньевич
07.09.2018
09:44:50
т.е мы сидим в совей репе, предоставляем апи сервиса и никто к нам не залезет в наш уютный миро

Adel
07.09.2018
09:44:57
монорепозиторий не означаетчто весь код там связан друг с другом

Konstantin
07.09.2018
09:45:12
Sergey
07.09.2018
09:45:40
я как один из основный плюсов микросервиса выделял, административнео и техническое разделение работы
вот смотри. Предположим что у меня есть проект. И фича А сделана за счет стороннего сервиса А, фича б - за счет стороннего сервиса Б (например чаты, видеозвонки, CRM, форма обратной связи какая, какой-нибудь бложик на какой-нибудь облочной CMS-ке)

Артур Евгеньевич
07.09.2018
09:45:57
а че такого, считай у тебя экосистема в одной репе и разбита на части - микросервисы
в моем понимании это будут не микросервисы, т.к я под этом понимаю именно отдельные программки, со обособленнйо разработкой и деплоем

Sergey
07.09.2018
09:45:59
все эти штуки живут в своих репозиториях, деплоятся независимо - но это же НЕ микросервисы

просто лежат они рядом.

scheduling payments chats calls auth

типа так

каждый "модуль" можно независимо собрать, независимо задеплоить

Артур Евгеньевич
07.09.2018
09:47:33
вот смотри. Предположим что у меня есть проект. И фича А сделана за счет стороннего сервиса А, фича б - за счет стороннего сервиса Б (например чаты, видеозвонки, CRM, форма обратной связи какая, какой-нибудь бложик на какой-нибудь облочной CMS-ке)
хм...а вот у меня на прошлом проекте был сервис/словарь, который возвращаял по одному из строковых представлений страны: Россия, РФ, рф, рашка и т.д ее код в нужном формате...и он отдельно деплоился как бы и к нему обращались по http...это микросервис или нет?

Sergey
07.09.2018
09:47:42
можно вместе, можно независимо, можно общие модули как-то по хитрому реюзать, можно внедрять штуки которые по измеенниям проверяюют контракты между сервисами, можно много чего

микросервисы это про децентрализацию и низкую связанность

Уди Дахан часто говорит фразу "микросервис != deployment target".

при этом это не конфликтует с утверждением что каждый микросервис можно независимо деплоить

Konstantin
07.09.2018
09:49:49
scheduling payments chats calls auth
Тогда в такой структуре должно быть чётко описанное взаимодействие, которое бы не повлияло бы при очередном обноввлении одного из микросервисов

Артур Евгеньевич
07.09.2018
09:50:08
просто ятак поинмаю микросервис - сервис с четко определеннйо ответственностью, разрабатываемый и депломый отдельно от основного продукта. Ну и ключ в тмо что нельзя обратиться к его объектам напрямую в коде программмы, а только через внешнее апи

Google
Артур Евгеньевич
07.09.2018
09:50:59
т.е если у меня супер салбосвязанные модули, которые общаются только черзе определенные для этого методы(порты) но в рамках одного репозитория и написанные как части одного проекта я это микросервисом не назову

Konstantin
07.09.2018
09:51:52
а если бы структура была другой тебе не нужно было бы четкого описания?
описание нужно всегда. Я про то что если убрать один аргумент при отдаче или изменить поле, чтоб не посыпалось другое. Допустим даже если всё это дело покрыто тестами и изменения обошли тесты

Артур Евгеньевич
07.09.2018
09:52:42
а основной продукт - это тоже микросервис? или просто "другие микросервисы"? или микросервисы для тебя это инфраструктурные шляпы типа "pdf генератор" или там "mail сервер"?
ну я чисто с микросервисной архитектурой не работал. но видел монолиты, части из которых выпиливаются в отдельные сервисы. не только шляпа, которую ты перечислил. Потенциально, каждый bounden context домена это микросервис, и если он грамотно написан, не связан ни с каким кодом, тое го очень просто вынести

Konstantin
07.09.2018
09:53:38
ты не можешь их независимо разрабатывать и независимо деплоить? почему?
а можно пример хорошей практики по разработке микросервисов. Я один видел на хабре, но в него полетело много обоснованной критики, в стиле того что каждый микросервис должен жить в своём докере

Sergey
07.09.2018
09:53:54
описание нужно всегда. Я про то что если убрать один аргумент при отдаче или изменить поле, чтоб не посыпалось другое. Допустим даже если всё это дело покрыто тестами и изменения обошли тесты
и монорепозитории тут как раз помогают потому что у тебя все всегда синхронизировано между собой. Всегда можно сгенерить/прокинуть общие контракты и проверить их на уровне CI. Ну и опять же - то о чем ты говоришь - это проблема которая возникает в любом случае даже если мы просто говорим о нескольких модулях между которыми есть зависимости. Зависимости полагаются на контракты, нужно проверять соблюдаюют ли модули свои конттракты

Артур Евгеньевич
07.09.2018
09:54:21
ты не можешь их независимо разрабатывать и независимо деплоить? почему?
потому что нет технического ограничения, кто то может зайти из команды, и написать своей хуйни в мой сервис + если спуститься до конкретных реализаций, то в пыхе пока не подвезли возможность приватных классов и у меня нет гарантии, что никто не нарушит инкапсуляцию и не будет юзать мой сервис дергая методы, которые я делал для себя

Sergey
07.09.2018
09:55:19
я так Сэма Ньюмана хочу почитатть

уже год хочу но лень

Артур Евгеньевич
07.09.2018
09:55:36
есил связь через RPC то у меня есть четкий интерфейс, и я буду уверен что иначе инкто не сможет обратиться ко мне

Google
F01134H
07.09.2018
09:55:43
и все могут твою репу отредактировать все равно

Артур Евгеньевич
07.09.2018
09:56:04
ссылку моэно
можешь вечером мне написать, у меня дома есть эта книжка

Sergey
07.09.2018
09:56:12
и все могут твою репу отредактировать все равно
можно запретить людям пушить в мастер)

Sergey
07.09.2018
09:56:34
ну и опять же - в чем проблема? это ж GIT - главное что бы форс пуш в мастер был отключен

а может быть даже не гит а меркуриал - тогда еще проще

Артур Евгеньевич
07.09.2018
09:57:10
вы сейчас решаете проблему, которой не существует в случае, если разработка ведется как два разных проекта) и согласовывается лишь API

+ не забывайте про административную часть

если у вас в команде меньше 100 человек, проект не 20 летний, и нет менеджеров которым надо еще вчреа, то тогда да конечно, можно много как извращаться по поводу ограничений прав, ревью и т.д

а в реальном мире разграничение сервисов по командам и репозиториям, со стандартизацией протокола общения между ними - БЕЗ возможности "о бля что то этот метод не принимает числа тока строки, расширю как я тип параметра" - это самый надежный вариант

Артур Евгеньевич
07.09.2018
10:02:41
хочу заметить, что я не говорю что не возможно на монолите с монорепой все по красоте сделать. Просто вопрос в том, как сложно будет поддерживать ограничения и как долго они продержутся

Sergey
07.09.2018
10:03:31
хочу заметить, что я не говорю что не возможно на монолите с монорепой все по красоте сделать. Просто вопрос в том, как сложно будет поддерживать ограничения и как долго они продержутся
1. не сложно, вопрос инструментов 2. продержутся пока ограничения не будут мешать, тогда просто пересмотреть оные. 3. помимо гита есть и другие распределенные VCS которые умеют разграничивать доступ 4. GIT идеален если ты пилишь linux kernel и принимаешь патчи через email-ы (и зовут тебя Линус, или Лайнас. не уверен как правильно)

хочу заметить, что я не говорю что не возможно на монолите с монорепой все по красоте сделать. Просто вопрос в том, как сложно будет поддерживать ограничения и как долго они продержутся
ну и да - я не говорю что тебе НУЖНО переходить на монореп. Монорепы решаютт определенные проблемы и датю определенные возможности, но не бесплатно. Дальше вопрос cost/benifit анализа для конкретно твоей ситуации

это... настораживает

Aleh
07.09.2018
10:41:43
Согласен)

Sergey
07.09.2018
10:41:55
ждем белпошту

Страница 743 из 785