Задать вопрос

Можно ли как то внедрить Laravel постепенно, например установить как основной каркас и в него уже встроить CMS?

есть достаточно старый проект, который за годы оброс контентом и функционалом. Портал работает на самописной CMS (PHP 5 +MySQL), разработчики все время советуют перейти на новые технологии а если точнее на Laravel и с MySQL на PostgreSQL чтоб сайт не только стал современным но и работал шустрее.

Я понимаю что совет разработчика хороший вот только функционала и контента много было написано за 10 лет, в среднем чтоб переписать проект на Laravel потребуется минимум год, а скорей всего полтора, самое забавное что портал тоже постоянно дописываем новыми фишками и получается что обновленный проект вечно будет опаздывать, а еще хуже то что можно уйти в вечное дописывание и переписывание.

Вопрос, можно ли как то внедрить Laravel постепенно, например установить как основной каркас, в него уже встроить CMS и далее постепенно переписывать каждый компонент?
  • Вопрос задан
  • 2345 просмотров
Подписаться 2 Средний 8 комментариев
Пригласить эксперта
Ответы на вопрос 7
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
разработчики все время советуют перейти на новые технологии а если точнее на Laravel и с MySQL на PostgreSQL чтоб сайт не только стал современным но и работал шустрее.
Переход с самописа на лару - хороший шаг, переход на постгрес нужен только если нужны конкретные задачи, решаемые постгресом лучше чем мускулем. Например, если у вас есть большой массив json данных, хранимых в соответствующих полях и требующий каких-либо выборок на основании этих полей, то есть по сути - если у вас база хранит ненормализованные сортируемые данные. В остальном выгода от перехода с мускуля на постгрес будет не видна без микроскопа.

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

Обычно заявы по типу "мускуль гуано, надо менять на постгрес" без конкретных аргументов признак поклонников карго культа, а не профи. Так что я бы послушал аргументы для начала, а то потом окажется что там индексы только первичные на таблицах, про explain никто никогда не слышал, а выборки идут по тысяче в циклах, но виновата, конечно же, тормознутая бд.
Ответ написан
yesbro
@yesbro
Думаю, помогаю думать
Можно. Ставите php8.4, cтавите «Ларавель», интегрируете аутентификацию, чтобы она была сквозной. Делаете лейаут из старого сайта. Делаете модели под таблицы. Новые модули делаете уже в «Ларавеле», постепенно переносите в него старые.

Проблемы, которые точно придется решать:

1. Всё время придется поддерживать два шаблона для сайта.
2. Если старый сайт использует одну точку входа index.php, а там уже определение роутинга, то придется слегка помучиться. Тогда сперва запрос должен принимать «Ларавель», искать подходящий роут, а потом, если нет совпадения, то проксировать его в старую систему (разумеется, с передачей всех данных).
3. Бардак в структуре проекта.
4. Настроить работу одновременно с двумя php (5-ой и 8-ой версии). Скорее всего придется делать два внутренних домена и перед ними ставить nginx как прокси. Можно на него попробовать и возложить проблему распределения роутов между старым и новым кодом.

Ну и по ходу наверняка еще будет много подводных камней.

В общем задача сложная, но очень интересная :)

С MySQL на PostgreSQL переходить не обязательно. Подробно об этом выше ThunderCat написал. Полностью согласен с ним.
Ответ написан
Комментировать
@UPSA
anykey. Я не программист, я просто ленивый.
Нельзя.
Через извращение можно.
Как устроена у вас Аутентификация? Можно попробовать вход переписать.
Как устроена самописная CMS? Можно попробовать вызвать render или вызывать страницы с другого сервера. Извращеный API.
Ответ написан
Комментировать
@BabrHabr
Совершенно точно не нужно преходить на postgre. Это ничего не даст
Совершенно точно не обязательно переходить на laravel. Это тоже может не принести никаких результатов кроме потерянного времени
Обязательно нужно сделать вот что
1. Перейти на современную версию php сразу на последнюю 8.4 А также на современную версию mysql. Одно это может вылится в многомесячный марафон. Но это придется сделать в любом случае. Как вы до сих пользуетесь 5 версией которую невозможно установить на современную ОС и на котороую уже годы не приходят обновления?
2. Двигать в сторону ООП если этого еще не сделано и писать все в классах
Ответ написан
Комментировать
@programmer403
Все очень просто. Добавьте второго разработчика у которого Лара Мейнстрим фреймворк и дайте ему задачу переписать вашу CMS на Лару. Паралельно добавляя ему таски тех фич которые добавляются у вас.
Ответ написан
Комментировать
tkovacs
@tkovacs
веб мастер
Если переходить то сразу или просто трансформировать проект постепенно используя пакеты symfony, laravel и другие. Иначе может превратиться в долгострой который никогда не будет завершен.
Ответ написан
Комментировать
@Pubert
Программирую с младенчества
Чтобы сменить БД, нужны веские причины. Для перехода на постгрес, как писали, выше, это может быть хранение JSON. Но на мой взгляд, учитывая лучшую производительность postgres в других аспектах, если у Вас очень большая база данных с раздутыми таблицами, или если у Вас совершается очень много join-ов, то переход также может быть оправдан. Опять же, нужно смотреть, тянет ли MySQL запросы, или нет. Может достаточно просто настроить индексы, и происзодительности хватит. В общем, перед переходом на postgres нужно попытаться выжать из MySQL максимум, т.к. такой масштабный переход часто бввает моторным.

По поводу ларавеля. Люди задавали правильные вопросы. Самый первый был про авторизацию и аунтефикацию. Если механизмы будут одинаковы, в теории можно запустить две версии сайта одновременно. Далее хороший вопрос: каким образом посылаются запросы на сервер? Через XHR/fetch? Или прямой переход на другую страницу? Если 1 вариант, то это упрощает плавный переход, т.к. можно часть эндпоинтоы переписать на ларе. Тогда на первом этапе у Вас на ларе будет только бэкенд. В ином случае, нужно будет сперва перевести все шаблоны под лару, опционально - с использованием компоновщика (в последней версии это vite).

Если же нет возможности параллельно развернуть сайты, или это трудно/неэффективно/и т.д., то, поздравляю, Вы в одной лодке со мной) советую сначала перевести макеты под лару, затем поэтапно (по частям) внедрять бизнес-логику: писать роуты, создавать модели и контроллеры, и т.д. Где можно, лучше сначала сделать заглушки. Таким образом, можно будет сразу тестировать внедрённый функционал. В таком случае даже необязательно писать в точности такую же систему авторизации - главное, чтобы не пропали учётки пользователей и не поменялось шифрование паролей)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы