
Sergey
20.02.2017
16:14:52
чуваки, почему у Симфони такая убогая инфраструктура?

Алексей
20.02.2017
16:16:48

smile
21.02.2017
08:47:57
Всем привет. Был ли у кого опыт перехода в рамках большого легаси проекта на другой фреймворк, в идеале на Symfony?
Что можете посоветовать? С какой стороны вообще заходить? Что можно почитать?
Что имеется?
- Самописная CRM на Codeigniter
- Команда порядка 10 человек, из которых реально могут что-то делать 2-3
- Все чаще появляющиеся ответы - хз как отрабатывает тот или инной бизнес процесс
- Большие классы-модели по 15к строк, в которых методы делают все, что душе угодно
- База данных MYSQL с таблицами по 100 полей
- Быстро изменяющиеся требования и функциональность проекта (чаще всего наростание функционала)
Что нужно?
- Слезть с иглы codeigniter и дальнейшего погружения в тлен
- Оставлять проект в рабочем состоянии на время перехода
- Иметь возможность проводить процесс перехода плавно т.к. нет возможности выделить большую команду и остановить всю разработку
Буду благодарен любым советам, ссылкам, мыслям


Дмитрий
21.02.2017
08:53:23
у меня есть проект, аналитика для руководителей.
Когда пришел в компанию начал писать без фреймворка, теперь жалею.
Пытась перенести его на симфони, но времени не хватает :)
При переносе на симфони, обнаруживаются ошибки, код ,который можно и нужно оптимизировать. Для себя переход вижу правильным направлением, но ведется параллельно с основным проектом.

Google

Daniel
21.02.2017
08:55:45


Ринат
21.02.2017
08:57:31
Откат

Big_Shark
21.02.2017
08:57:31


Ринат
21.02.2017
08:57:35
Мертвые души

smile
21.02.2017
08:58:28
скажем так, этот вопрос не в моей плоскости - но на сколько я понимаю и подводил к этому вопрос - они могут внести постоянно нужные изменения/дополнения хотелок в уже реализованный функционал за копейки. дешего и сердито

Vadim
21.02.2017
08:58:55
3 разработчика и макаки в общем

Alex
21.02.2017
08:59:48
начать нужно с создания AppKernel во всех точках входа (в идеале привести все к одной точке входа). Потом прикручиваем DI и начинаем выносить все в сервисы. Потом можно заморочиться с Request/Response. Дальше - куда душа ляжет

Sergey
21.02.2017
09:08:15
например есть проблема - управление зависимостями. Ставишь какой-нибудь контейнер поудобнее и работаем дальше. Причем не переводим приложение полностью на него - а постепенно. Фичи ж надо пилить тоже
и главное при всем этом - тесты писать. Разобрался как работает кусок - покрыл тестами поведение.
пишешь что-то новое - покрыл тестами
интересный факт - если мы возьмем легаси проект, перепишем его с нуля до той же функциональности не разбираясь как оно должно работать и без тестов то через пол года у тебя просто будет еще один легаси проект но уже на другом фреймворке
ну и правило бойскаута - оставляй код который ты сейчас трогаешь чуть чище чем он был до тебя. Хотя без тестов это сложно)

Google

smile
21.02.2017
09:17:25
понятно - спасибо)
Просто как раз таки этого сейчас и боимся, что начнем чтото делать и скатимся опять к легаси.
Пока из всего что обсуждали мне твой вариант больше по душе т.к. он более плавный и из всего что нам предлагали чуваки с других проектов - это разбивать все на микросервисы(но тут мне кажется мы вообще все заруиним и прийдется искать другую работу :D) или делать "бридж" между двумя фреймворками. Но я не особо вижу как это можно совмещать с длительным процессом перехода и необходимостью попутно пилить фичи.


Sergey
21.02.2017
09:19:31
> это разбивать все на микросервисы
это норм стратегия. Есть еще более клевый вариант. То же самое но без микросервисов. Ну или два микросервиса - старое приложение и новое.
профит - если не умеешь готовить микросервисы ты проиграешь
а так будет проще
хотя опять же вариант есть еще круче - тоже самое но вообще без разделения. Просто одно приложение монолитное
все те же идеи изоляции из мира микросервисов приминимы и для монолитов
только не надо страдать болью с распределенными системами

Denis denya Voskoboinik
21.02.2017
09:24:26


Aleh
21.02.2017
09:26:04
что касается моделек опять же, ставите ту же доктрину и постепенно выносите логику в сущности
причем взаимодействие между частями как раз и получится как у "микросервисов", будет два bounded context которые никогда не будут работать в одной транзакции
ну т.е. eventual consistency
в идеале добавляйте сценарии на чем-то типа behat, но это только если есть с кем общаться из мира бизнеса, т.е. если есть кто-то, кто реально понимает кому в вашей приложеньке что нужно, какие они решают вашей приложенькой проблемы и как деньги на вашей приложеньке зарабатывают
> в идеале добавляйте сценарии на чем-то типа behat
т.е. можно просто конечно доку составлять, но лучше с автотестами)

Sergey
21.02.2017
09:28:29

Aleh
21.02.2017
09:28:48
не

Sergey
21.02.2017
09:28:48
а так возможно стоит начать не с доктрины

Aleh
21.02.2017
09:28:51
старую не трогать
это ж больно

Sergey
21.02.2017
09:29:07
ну можно тупо заюзать row data gateway + active record

Google

Aleh
21.02.2017
09:29:12
ну вообще да

Sergey
21.02.2017
09:29:16
выйдет больше кода но зато можно очень быстро рефакторить

Aleh
21.02.2017
09:29:31
тут возможно так проще, если таблички реально ад и угар

smile
21.02.2017
09:29:42
таблички ад и угар полный

Aleh
21.02.2017
09:30:24
хотя с другой стороны можно мапить туда-сюда

smile
21.02.2017
09:30:25
пилили все как хотели и могли порядка 8 лет

Sergey
21.02.2017
09:30:42
таблички ад и угар полный
а вообще у тебя есть представление о том что в проекте хуже всего? или "плохость" равномерно распространена и нельзя выделить приоритетные участки?

smile
21.02.2017
09:31:16
все равномерно плохо
я так понимаю руководитель проекта понял что мы катимся к ... и решил начать чтото предпринимать

Aleh
21.02.2017
09:31:39

Sergey
21.02.2017
09:31:39
все равномерно плохо
ок, тогда по другому вопрос поставлю. Фичи новые планируется? Баги возникают где-то? Есть более приоритетные баги?

smile
21.02.2017
09:31:43
еще год назад все все устраивало

Roman
21.02.2017
09:32:39
а что не устраивает теперь? зачем нужна Симфони?
есть ответ на этот вопрос?

Sergey
21.02.2017
09:33:00
вот я тоже не понимаю)

Denis denya Voskoboinik
21.02.2017
09:33:12
ну почему смена фреймворка ничего не меняет?
Есть код - неконтролируемый и нетестируемы код, в октором уже никто не может разобраться.

Roman
21.02.2017
09:33:14
"я так понимаю руководитель проекта понял что мы катимся" - это же не причина

Denis denya Voskoboinik
21.02.2017
09:33:26
и никто не знает откуда прилетит баг

Roman
21.02.2017
09:33:33
ну так будет такой же новй код только на симфони

Google

smile
21.02.2017
09:33:33
сейчас не устаривает то, что все становится неконтролируемым

Denis denya Voskoboinik
21.02.2017
09:33:40
для этого проще переписать функционал

smile
21.02.2017
09:33:54
вносишь изменения в одно и думаешь что это ничего не затронет - а вылазит вообще в местах где никогда бы не подумал

Denis denya Voskoboinik
21.02.2017
09:33:54
зачем его снова писать на CI если мжно заюзать удобную симфони

smile
21.02.2017
09:34:14
и бывают случаи когда изменив мелоч - ты отваливаешь просто куски

Sergey
21.02.2017
09:34:38

Denis denya Voskoboinik
21.02.2017
09:34:49
почему?

smile
21.02.2017
09:35:07
сейчас в планах руководства разобрать весь функционал, определить что нам реально надо из всего что есть и что самое критичное и требует стабильной работы

Sergey
21.02.2017
09:35:11
почему?
потому что подавляющее большинство не умеет писать тестируемый и контролируемый код)))

Admin
ERROR: S client not available

smile
21.02.2017
09:35:22
т.к. всех начинает подхаривать то кол-во багов всплывающих на важных процессах, которое в последнее время резко возросло

Sergey
21.02.2017
09:35:24
а смена фреймворка похожа на имитацию бурной дейтельности. У вас не с фреймворкрм проблема а с кодом
сначала надо код подготовить к переезду

Denis denya Voskoboinik
21.02.2017
09:36:07
а если весь код нужно переписать?
то почему не сменить фреймор по ходу дела

Sergey
21.02.2017
09:36:24

Roman
21.02.2017
09:36:29
у нас есть проект большой, его начали два года назад переводить на симфони. врапнули весь код и заменяем частями.
переносим логику в сервисы, переписываем работу з базой на репозы и доктрину
но больше не заменяем а пишем новое, а старое просто поддерживаем

Sergey
21.02.2017
09:36:30
ну и опять же - добавляешь нужные компоненты

Vadim
21.02.2017
09:36:50
ох что-то мне прям знакомо это, кодгнитер, 8 лет, 100 полей на таблицу, но наверное это не то, о чем я думаю :)

Google

Sergey
21.02.2017
09:36:54
но просто взять и "а давайте перепишем все на symfony" это одно из худших решений которые можно предложить бизнесу
ну и в целом вообще у тебя должен быть хотя бы схематичный план того что должно получиться по итогу. Надо искать где границы модулей размыты, где надо изолировать... убирать магию и сайд эффекты
в целом может быть и стоит глянуть в сторону стратегии с микросервисами - постепенно копировать функционал в другую систему и сделать мосты между ними.... но это уже сильно сложнее

Denis denya Voskoboinik
21.02.2017
09:39:41
зачем делать полумеры, если можно наперед начать норм разработку

Ivan
21.02.2017
09:40:19
привет, подскажите, может есть либа для автоматического мапинга массива данных на такие объекты с аннотациями:
/**
* Document DTO
*/
class Document
{
/**
* @var string
*/
public $code;
/**
* @var string
*/
public $title;
/**
* @var \DateTimeImmutable
*/
public $created;
/**
* @var Element[]
*/
public $elements = [];
}
/**
* Element DTO
*/
class Element
{
/**
* @var string
*/
public $name;
/**
* @var string
*/
public $content;
}

Sergey
21.02.2017
09:40:23

Sergey
21.02.2017
09:41:17
когда вам предлагают микросервисы как панацею, можешь смеяться в лицо таким людям


Sergey
21.02.2017
09:41:39

Sergey
21.02.2017
09:41:41
они не знают о чем говорят

Sergey
21.02.2017
09:41:49

Sergey
21.02.2017
09:42:25

Sergey
21.02.2017
09:42:57

Sergey
21.02.2017
09:43:10
@sergey_smile чего вы вообще ожидаете от перехода на другой фреймворк?

Denis denya Voskoboinik
21.02.2017
09:45:09
и смыла это делать в том же месте -мало

Sergey
21.02.2017
09:45:46