Из шаурмы в Symfony, или миграция legacy
Наш доклад расскажет о том, как мы мигрировали ERP-систему написанную на «голом» PHP5.3, работающую на винде, в Symfony + PHP7, и построили на его основе облачный сервис в сфере b2b.
Если коротко, то за полтора года основной движок портала был переписан на компоненты из Symfony, и при этом мы не только сохранили функционал legacy кода, который на данный момент составляет порядка 200к строк, но и добавляли новые фичи.
В докладе мы можем рассказать о том, какие тонкости могут быть при внедрении в legacy ORM Doctrine, о интеграции legacy во фреймворк, об ошибках, которых можно избежать и многом другом.
План доклада еще обсуждается, но на данный момент он выглядит так:
0. Перевод проекта в utf8 и конвертация баз данных.
1. Интеграция Doctrine ORM:
1.1 генерирование сущностей с конфигом в виде аннотаций;
1.2 кириллические коменты в сущностях;
1.3 создание внешних ключей и как они всё ломали;
1.4 миграции - от schema:update до DoctrineMigrationsBundle
2. Интеграция HttpKernel:
2.1 адаптации существующей системы контроллеров (предшествующий разработчик назвал их plugins), возвращающей разные типы данных или просто echo exit (подменяем HttpKernel);
2.2 аутентификация пользователя с использование RequestListener;
2.3 обработка ошибок через Exception Listener;
2.4 Подключение SymfonyTemplating.
3. Интеграция проекта в Symfony Framework
3.1 пытаемся подключить legacy контроллеры не заменяя HttpKernel;
3.2 заводим legacy синглтон контейнер;
3.3 подключение SecurityBundle и перевод legacy acl на Symfony Security component.
4. Создание CI/CD инфраструктуры проекта на базе Gitlab ce.
5. Создание тестового окружения (тесты мы делаем на Codeception - это api, unit, acceptance)
6. Создание собственного облака на базе docker и saltstack (лютый devops)