Слайд 1
Чемодан без ручки
переезд на другой фреймворк
без остановки разработки
Дмитрий Косов
Panda
Meetup #27
Слайд 2О себе
Дмитрий Косов, senior developer
Ex: Russia Today, Белый Ветер, banki.ru
Now:
в Финам с 2016 г.
CRM, интеграционные сервисы, автоматизация
Слайд 3О компании
Крупнейший брокер в России
Существует 25 лет
Представительства по всей России,
в США, Европе, Китае, Индии, Юго-Восточной Азии, Караганде
Слайд 4О проекте CRM
Начата в декабре 2011 г.
Слайд 5О проекте CRM
Начата в декабре 2011 г.
Мало пользователей, много данных
Слайд 6О проекте CRM
Начата в декабре 2011 г.
Мало пользователей, много данных
>
230 таблиц в DB, около 2 млн клиентов
Слайд 7О проекте CRM
Начата в декабре 2011 г.
Мало пользователей, много данных
>
230 таблиц в DB, около 2 млн клиентов
Данные поступают из
нескольких внешних ИС
Слайд 8О проекте CRM
Начата в декабре 2011 г.
Мало пользователей, много данных
>
230 таблиц в DB, около 2 млн клиентов
Данные поступают из
нескольких внешних ИС
И всё это на ZendFramework 1
Слайд 11Чем плох ZF1?
Нет поддержки авторами
Слайд 12Чем плох ZF1?
Нет поддержки авторами
Не дружит с PHP 7.2 и
выше, патчим сами
Слайд 13Чем плох ZF1?
Нет поддержки авторами
Не дружит с PHP 7.2 и
выше, патчим сами
Устаревшие стандарты (нет namespace, свой autoload, etc…)
Слайд 14Чем плох ZF1?
Нет поддержки авторами
Не дружит с PHP 7.2 и
выше, патчим сами
Устаревшие стандарты (нет namespace, свой autoload, etc…)
Нет специалистов
Слайд 17На что переходить?
Кандидат
ZF1
Нет поддержки авторами
Не дружит с PHP 7.2 и
выше, патчим сами
Устаревшие стандарты (нет namespace, свой autoload, etc…)
Нет специалистов
Слайд 18На что переходить?
Кандидат
Живой проект, LTS
Поддержка новых версий языка
Поддержка актуальных стандартов
и технологий
Живое комьюнити, большое количество готовых библиотек
ZF1
Нет поддержки авторами
Не
дружит с PHP 7.2 и выше, патчим сами
Устаревшие стандарты (нет namespace, свой autoload, etc…)
Нет специалистов
Слайд 22Но как?
"Взяли и переписали" (с)
Поднимем рядом новое приложение, новые модули
в нём, старые постепенно переносим, nginx разруливает мажорные роуты
Слайд 23Но как?
А на какие автономные куски можно разделить приложение?
Слайд 24Слои приложения CRM
Item (ORM)
Mapper (DBAL)
Model (Domain)
Controller/Cli
View
Слайд 25Слои приложения
CRM
Item (ORM)
Mapper (DBAL)
Model (Domain)
Controller/Cli
View
Symfony
Entity
Repository
Services
Controller/Cli
Resources
Слайд 26Поехали?
Подключили Doctrine: весь новый код на ней, старый постепенно переносим
Слайд 27Поехали?
Подключили Doctrine: весь новый код на ней, старый постепенно переносим
Подключили
и перешли на Symfony console
Слайд 28Поехали?
Подключили Doctrine: весь новый код на ней, старый постепенно переносим
Подключили
и перешли на Symfony console
Рефакторим Domain помодульно в текущем приложении,
а не соседнем
Слайд 30Как пишем
Следуем стандартам Symfony codestyle и PSR
Слайд 31Как пишем
Следуем стандартам Symfony codestyle и PSR
Cтрогое разделение слоёв: вся
логика в Domain, максимально тонкие контроллеры
Слайд 32Как пишем
Следуем стандартам Symfony codestyle и PSR
Cтрогое разделение слоёв: вся
логика в Domain, максимально тонкие контроллеры
Выносим автономный код в библиотеки
Слайд 33Как пишем
Следуем стандартам Symfony codestyle и PSR
Cтрогое разделение слоёв: вся
логика в Domain, максимально тонкие контроллеры
Выносим автономный код в библиотеки
Фреймворконезависимый
код
Слайд 37Насущные вопросы
Как подключить Smarty к Symfony
Слайд 38Насущные вопросы
Как подключить Smarty к Symfony
Что делать с Zend_Form
Слайд 39Насущные вопросы
Как подключить Smarty к Symfony
Что делать с Zend_Form
Может всё-таки
можно не самим писать код, а чтобы оно само?
Слайд 40Спасибо за внимание!
Дмитрий Косов, ведущий разработчик в ФИНАМ
d.e.kosov@gmail.com