Павел
Еще бы тесты напихать, как Дмитий показывал в докладе и вообще норм. Правда надо тогда все пути в phpunit указывать что не удобно будет
Юра
Юра
На беке просто пока руки не доходят так попробовать
Юра
Ибо проекты обычно не настолько большие чтобы это имело смысл
Konstantin
на фронте компонентный подход, там и бизнес-логики меньше, в основном логика отображения, типа показать грид и пофильтровать его нехитро.
какой-нибудь замудренной темы с расчетом стоимости товара с учетом 10 вариантов доставки, персональными скидками, промоакциями итд там нет, поэтому код фичи проще отчуждать. а тут грубо замешано два десятка таблиц, кеши по хитрым ключам-тэгам, асинхронные запросы к партнерам
Юра
Что-то значит не то с архитектурой
Юра
Ну не поверю что все фичи зависят друг от друга
Юра
И нельзя что-то удалить чтобы другое все не сломалось
Юра
Кешер да знает о многом, но это не обязательно что все другое должно знать про кешер
Konstantin
не, кешер как раз пофиг, ему дали строку ключа и какие-то данные, ну метадату навроде тэгов-ттлей
Павел
Ну не поверю что все фичи зависят друг от друга
Даже если не будут зависит прямо будут зависеть косвенно: генерить какой то ивент, или быть источником инфы для другой фичи и т.д. Понятно что не все фичи так зависят, и есть полностью изолированные, но таких мало, имхо. Система мб и не грохнется с 500, но встанет.
Konstantin
я там легко могу примеров из жизни некрупного бизнеса нарассказывать навроде этих расчетов цены. к расчетам цен какие-нибудь рассылки-пуши привязаны, это все надо продублировать в апишке для мобил, не забыть в бухгалтерию отчетов нагенерить, статы какой-нибудь по распродажам, дальше посчитать топ-юзеров по лтв итд итп
Konstantin
оно все на бумаге только отчуждаемо, а в жизни бизнес не будет слушать "мы не можем сделать автоматические рассылки по распродажам потому что это смешение предметных областей" или "нам надо пересмотреть границы наших контекстов"
Konstantin
по-хорошему это все на микросервисы надо дробить, но с 5 рпс нагрузки и пятью разрабами, это не очень умно
Павел
я там легко могу примеров из жизни некрупного бизнеса нарассказывать навроде этих расчетов цены. к расчетам цен какие-нибудь рассылки-пуши привязаны, это все надо продублировать в апишке для мобил, не забыть в бухгалтерию отчетов нагенерить, статы какой-нибудь по распродажам, дальше посчитать топ-юзеров по лтв итд итп
Ну кстати тут контекст интересный. Нпаример удаляем расчет цен. Значит пушей не будет, - нет ивентов (не ломается значит просто отключается).
Отчет - тут хз, упадем по базе, убрали фичу - нет базы. Хотя если отчет куда то там ходил асинхронно, то ему эти данные никто не заполнит, будут 0 , отчет не упал.
Топ юзеров та же история, просто фича не дает свои сайд эффекты
Konstantin
не, вы правильно рассуждаете с точки зрения плавной деградации функционала, все так. выше же речь о том чтобы молча удалить папку с расчетом цен, а все остальное работает (!) дальше, типа ну ок
Konstantin
как условно если бы это был фронтенд: допустим есть какой-то виджет (календарик там), он перестал быть нужен, его удалили из единственного места, что его импортил, удалили папку - и живем
Konstantin
на сервере так уже сложнее
Павел
Gleb
Простите... я думал только у нас "ювелирные работы на боевом сервере") или это в принципе не редкость?
Gleb
или я неправильно понял обсуждение про сервер?)
Юра
Хз опять таки все это признак tight coupling
Gleb
Юра
Расчет цен тут я ничего не понимаю что это такое и почему его нельзя сделать сервисом, который млжно удалить и ничего не сломатется
Konstantin
Konstantin
ну типа того, мы об одном говорим
Павел
Т.е. например для низкой связи, нужно послать какой то хук/сообщение, который подхватят остальные фичи и заполнят и уже он вернетя в модуль отчета, и то возможно им не хватит инфы, надо сходить еще куда то, это касается множественных фильтров. Короче надо много чего допилить ради "удаления папки".
На фронте же как я вижу: мы удалили какую то форму, остальные формы остлаись рабочими. Там вроде и ненамутишь высокий каплинг при всем желании)
В принципе и мы можем на бэке удалить темплейт, а остальные темплейты останутся живыми.
А вот если на фронте например удалить фичу "Рендеринг ошибок на форме" или "модуль всплывающего сообщения", будет интересно как фронт переживет это и его импорты ) Хотя я мало за фронт шарю.
Konstantin
на фронте что хорошо - есть компайл-тайм, там тебе скажут что ты импортируешь несуществующее
Павел
Павел
хотя и тесты покажут если грохнутся😅😅😅
Konstantin
ну в том смысле что тут это опциональное, а там никуда не денешься от компиляции)
Павел
Юра
Юра
Все пишут 50 контроллеров в одну папку и домой
Юра
Если каждую фичу организовать в бандл, все возможно разнести в разные папки бандлы
Павел
Павел
Слово бандл - ровно ничего дает тут
Юра
И тогда твой бандл отчётов будет зависеть от бандла цен и в вроде норм
Konstantin
А как связыны кривые руки, распределенный монолит, микросервисы?)
ну бывает не особо опытная команда решает сделать по-модному и срочно все переписать на микросервисы. но ввиду недостатка опыта (и необходимости), вместо красивой слабосвязанной микросервисной архитектуры получается этот самый распределенный монолит, который имеет недостатки обоих подходов, но не имеет их преимуществ
Павел
Юра
Модульный монолит
Павел
Модульный монолит
Разнесение на бандлы, папки по фичам - не делает проект хорошим модульным монолитом
Павел
Остается все равно много вопросов в декомпозиции и организации
Юра
И вообще ясен пень что при удалении допустим модуля цен сломается модуль отчётов. Но поверь, при таклм подходе ты быстро понимаешь какой модуль сломался, и дальше ты уже можешь решить, имеет ди смысл модуль отчётов без модуля цен, если имеет то правишь его, если не имеет то удаляешь его. Это очень легко сделать когда структура папрк отражает функциональные логические единицы, а не абстрактные контроллеры
Павел
Попробуйте удалить какой то вендорный бандл, посмотрите что станет с вашей системой)
Павел
Самый сложный вопрос - это обещние и передача инфы между модулями, который никак не решается простым "положили в разные папки". Чтобы при этом не связать эти модули и сделать их слабосвязанными
S.
Всем привет👏
Ищу технаря, который может поднять сервак, умеет работать с кейтаро, клоакой, умеет делать интеграции, писать ленды с 0 и копировать/выкачивать существующие🚀
Аутсорс, можем поработать как от 1 проекта так и на долгосрок🤘🏿
Пиши в лс
Юра
Павел
Nikolay
Есть такая штука как anticoruption layer, чтобы ограничить взаимодействия между модулями
Nikolay
Работал в прошлой компании, возможности симфони использовались на 30 процентов примерно. Не было такой жёсткой зависимости от фрейма, никаких бандлов
Юра
Общайтесь через теги, ивенты, интерфейсы и т.д. и т.д.
Nikolay
Юра
Но вообще обычно среднестатистическому проекту все это не нужно
Nikolay
Юра
Я же говорю обычно проекты слишком простые, чтобы ощутить выгоду от разбивания на функциональные компоненты
Юра
Потому что если у тебя 90% кода зависит друг от друга значит это простл один большой компонент )
Павел
Nikolay
Юра
Это кусок проекта который можно удалить
Юра
Так чтобы проект прододжил работать и имел смысл
Павел
Хотя зачастую все равно DI фрейма слетит и надо что-то менять
Павел
Даже если все четко написать и проект не выдавал 500, одно можно удалить и продолжить работать а второе нет, как ни пиши)
Nikolay