Executando verificação de segurança...
8

PHP: Gostaria de saber se tem como/compensa upar um sistema php5.6 para PHP8 Moderno e adicional Laravel nele, ou seria melhor desenvolver do "zero"

Olá galera, estou trabalhando em uma empresa onde temos um sistema funcional que atende +1mil pessoas no semestre, só que em php legado versão 5.6, e meu supervisor quer o mesmo sistema só que novo, mais atual, para melhor segurança e desempenho.

Eu como um bom Dev Junior gostaria de saber se tem alguma documentação de boas práticas para fazer essa atualização de versão, ou se sisplesmente mudo a versão do PHP do meu ambiente de desenvolvimento e vou corrigindo os bugs que aparecerem, e depois mudo a versão que está rodando em produção.

Algum Dev PHP mais experiente poderia me dar uma luz ai? um caminho, qual compensaria mais, se é melhor construir do zero um sistema parecido, ou atualizar o atual mesmo?
Obs: só tem eu de Dev na empresa :)

Agradeço quem parar para responder. Gratidão!

Carregando publicação patrocinada...
4

Já subi uma aplicação escrita em PHP5.6 usando CakePHP2.1 para PHP7.4 e CakePHP2.13 (última revisão antes de CakePHP 3). Foi "chatinho"; várias alterações de namespace e de notação de objetos. Uma aplicação em PHP "puro" é mais fácil de subir, mas como vc está indo de PHP5 para PHP8, as diferenças podem ser grandes.

Se eu estivesse no seu lugar, eu pensaria no custo de manutenção atual do sistema. Vale realmente a pena reescrever em PHP8/Laravel? O que o usuário ganharia com isso e o que vc, como mantenedor do sistema, ganharia com isso? Sistemas bem escritos em PHP "puro" frequentemente são fáceis de dar manutenção; só isso já me faz pensar 1000 vezes antes de reescrever algo. Se o usuário é bem atendido pelo sistema atual e não tem grandes reclamações é outra variavel CONTRA reescrever. Pense se não vale a pena, ao invés de reescrever, refatorar alguns pedaços mais ofensivos (seja em performance, seja em funcionalidade, seja em mantenabilidade) e simplesmente subir para PHP8.

De qualquer forma, mesmo que seja um sistema estritamente interno, faça a mudança para PHP 8 ONTEM. Não só PHP5.6 está 100% sem suporte, como também tem vastos furos grosseiros (para os padróes atuais) de segurança. Sob esse aspecto, seu sistema está condenado... rs

Resumindo; não pense na tecnologia, mas sim nos benefícios que uma ou outra escolha vai trazer e, não importando sua escolha, suba imediatamente para PHP8, mesmo que seu sistema seja somente interno.

Espero ter ajudado!

Abs,

1

Eh pensando pelo lado do valer a pena, eu só reescreveria alguns modulos que estão lentos, fora ele não tem grandes reclamações realmente, e sim fácil manutenção, pois é PHP puro.

Nunca usei CakePHP, más vou pesquisar sobre.

Meu supervisor quer na versão nova para melhorar coisas pequenas, que dariam para melhorar nessa versão mesmo, mas no meu ver o grande benéficio é a segurança, não é um sistema interno, ele atende ao público, que faz cadastro nele e etc.

Obrigado pela reflexão, ajudou sim. Abs.

4

Rapaz, eu trabalho em 8 sistemas, todos em PHP puro, e estamos atualmente rodando com o "8.0". Começamos a implementar bastante JS para facilitar muita coisa em nossos sistemas, mas no começo, e alguns desses 8 sistemas, está bem puro no PHP.

O que eu te pergunto é, vale a pena todo o trabalho em refazer o sistema em laravel?
O que você ganharia com isso? Iria impactar no dia a dia do usuário? Para mim essa é uma pergunta muuuuuuuuito importante a ser feita, pois se não for fazer diferença no usuário final, ou se fizer diferença mas não for algo perceptível para ele, acredito que não vai valer a pena todo o esforço. Talvez seja melhor vc dar uma repaginada em como cada módulo funciona, melhorar o desempenho com o próprio PHP puro, sem ter que mudar para um laravel da vida.

Reveja esses pontos, por que pode ser uma dor de cabeça desnecessária para você e para o usuário final da aplicação.
As vezes a vontade de fazer algo muito grandioso é interessante, mas se você já tem algo que está funcionando bem, talvez não seja tão bacana mudar isso.

1

Obrigado pelo comentário, faz todo sentido, provavélmente o usuário nem iria perceber o Laravel mesmo, ainda estou aprendendo para que serve esse framework.

2

Tem que ter um olhar mais amplo para tomar essa decisão.

Por exemplo, trocar um sistema feito em PHP puro legado para Laravel pode não trazer benefícios imediatos para o usuário, mas para a implementação de novos recursos e outras correções talvez faça sentido, o que vai impactar diretamente na outra ponta (usuário).

Quantos desenvolvedores conhecem esse sistema puro feito em PHP 5.6? Tem documentação atualizada? Se contratarem um novo dev amanhã, ele vai saber se virar em pouco tempo para começar a implementar novos recursos e subir correções? Quanto tempo você levou até se adaptar e entender esse sistema legado?

São esses pontos que também precisam ser levados em consideração. Laravel é um framework amplamente conhecido, por isso um dev que já sabe Laravel não terá grandes dificuldades para assumir o sistema. Ele já sabe a onde fica as rotas, as views, middlewares, etc, o que impacta no tempo de entrega das tasks.

3

Se o sistema está funcionando corretamente, e está com uma arquitetura organizada, não vale a pena fazer outro do 0. aqui vai algumas dicas para transforma-lo em PHP8.

  • faça upgrade de 5.6 para 7.2 (não existe break changes, mas é interessante para mensurar e etc, não deve ter muitos problemas)
  • faça upgrade de 7.2 para 7.4 (aqui existem muitos break changes, poucos do 7.3 e muitos do 7.4 pois o PHP muda-se de tipagem fraca para tipagem forte)
  • faça upgrade de 7.4 para 8.0 (não existe break changes siginificativos, apenas gambiarras muito pesadas podem quebrar, mas fique de olho)
  • por fim, você passa de PHP 8.0 para que lhe interessar, como por ex 8.2
1
2

Eu passo pelo o mesmo que você, sou desenvolvedor junior, sou sozinho na empresa, e trabalho com PHP 5.6 em um sistema grande, de gerenciamento de emprestimo consignado.
E depois de tanto pensar, escolhi refazer ele com Laravel 11, acredito que vai ser menos trabalhoso.

1
2

Cara, entrei recente em uma empresa, e me falaram de uns sistemas legados q eles tem, e q desejariam fazer a migração deles para algo mais atual, quase semelhante ao seu...
Fiz praticamente, a mesma coisa q vc, consultei dois amigos seniors, que atuam na area tem uns 10 anos.

Praticamente, os 2 me disseram a mesma coisa:

  • Precisa ter conhecimento claro das regras de negocio.
  • Precisa saber qual é o objetivo da empresa.
  • Precisa ser um processo gradual, pois demanda muito tempo.

Ahhh, e se puder, em um futuro, não muito distante, compartilhe conosco qual foi a decisão, e como foi processo...

2

Vou anotar esses pontos, e penser bem neles, imagino que iria demandar bastante tempo mesmo, ainda mais só para 1 dev fazer sozinho. (se tudo der certo volto a comentar aqui na publicação sim)

2

Se sua aplicação for uma API, você pode pensar em migrar cada uma das rotas aos poucos, coloca um proxy reverso como um NGINX na frente e faça o encaminhamento das rotas conforme for evoluindo.

Se sua aplicação é full stack, ou seja, se o front end é SSR (server side rendering). Procure fazer a migração por módulos do sistema, por exemplo, faça todos os processos de cadastros (produto, clientes, fornecedores...) e posteriormente as operações como pedido, faturamento, logística...

De qualquer modo, verifique se Laravel é realmente adequado a proposta do sistema. Eu particularmente fujo de frameworks que invadem toda a aplicação como Laravel, Rails, Django, Adonis... Eu prefiro aplicações menores, usando micro frameworks como Slim para PHP e ExpressJS para NodeJS por exemplo.

1
2

Cara, minha opinião baseado na pouca experiência que tenho.

Atualizar versão do php é essencial, as novas versão melhora desempenho, segurança, novas funcionalidades e afins.

Sobre migrar pra laravel, tem muita coisa que pode pesar. Onde trabalho todos os projetos são em laravel com exceção de um, a principal aplicação. Ela é gigantesca e reescrever demandaria muito tempo, muito esforço, muitas pessoas, ou seja, muito custo.
Teria benefícios no final? Sim.
Mas no final das contas o Laravel é o bom e velho PHP, só que estruturado. Se seu projeto estiver bem escrito, bem organizado e tals, será que realmente precisa ser reescrito só pra usar um framework?

Um fato é que se voce tem um app legado, seria interessante criar uma boa documentação sobre esse app, como usar as estruturas internas que foram criadas e tals, porque a maior barreira para novas pessoas entrar nesse projeto será a falta locais para buscar informações.

2

Meus 2 cents:

  1. Existem 2 pontos aqui: a atualizacao da linguagem (de 5.6 para 8.2) e a possivel migracao para um framework (p.ex laravel ou slim)

  2. Como o gestor ja colocou algo "moderno" - imagino o uso de um framework.

  3. Uma opcao eh usar laravel + filamentphp: acelera a parte interna de administracao/dashboard

  4. Como fazer:

    a) levanta uma VM (p.ex. virtuabox, vmplayer, proxmox, etc) com tudo novo e zerado: php, laravel+filamentphp, banco de dados, git, etc

    b) Sobe uma copia do BD nesta VM

    c) desenvolve primeiro a parte de administracao dos cadastros nesta copia - ate para voce comecar a entender o relacionamento entre as tabelas, montar os modelos, etc

    d) Escolha um cadastro (simples, p.ex. categorias) e desenvolva a solucao dele (CRUD, dashboard, etc) de cabo a rabo para entender o funcionamento da nova solucao (git, versoes, deploy)

    e) Com um CRUD funcional - e voce confortavel na atividade - continue com as demais tabelas (o suficiente para voce se sentir seguro com as ferramentas novas)

    f) O CRUD esta razoavel ? Nao precisa ser 100% das tabelas, mas o bastante para ser funcional)

    g) Com um CRUD basico, escolha uma tela de funcionalidade (p.ex. emissao de boleto) e comece a desenvolver (incluindo as regras de negocio para esta tela)

    h) veja tudo funcionando - parece OK ? Continue com novos CRUD e telas, e assim vai indo ate terminar

    i) percebeu em algum momento (principalmente no inicio) que seguiu um caminho que nao ficou legal ? Preserve o que ja fez (faz uma copia do codigo novo mas que vai ser descartado) e comece novamente do zero (sem do ou piedade), agora com os aprendizados coletados

    j) Como voce eh JR, vai fazer besteira para caramba, principalmente no inicio, escolher metodologias que mais tarde se mostram inadequadas, etc - esta eh a fase onde jogar tudo fora e comecar novamente eh normal.

    j.1) Por jogar tudo fora: criar um diretorio "lixo", colocar la e usar eventualmente para consultar o que tinha feito - antes de zerar o jogo e comecar novamente

    k) So mao mexa muito no sistema legado / atual (exceto correcoes) - qualquer coisa nele eh perda de tempo.

    l) procure usar solucoes modernas (p.ex. ACL/roles, 2FA) ja prontas no desenvolvimento

    m) Se voce usa framework (p.ex. laravel) nao reinvente a roda - veja o que ele tem pronto e use (o composer eh teu amigo)

    n) Aproveite o maximo para aprender sobre solucoes/automacoes de backend (terraform, ansible, puppet, etc) durante o desenvolvimento

Sao recomendacoes genericas - ate porque nao conheco as especificidades do teu sistema nem tua experiencia, mas eh mais ou menos por ai.

1

Obrigado pelas dicas, pois é vejo todo mundo usando composer hoje em dia no PHP, ainda estou aprendendo sobre ele também, pois não tem nos sistemas antigos aqui, Terraform já ouvi falar também, vou atrás de aprender mais sobre ele. obrigado!

2

As duas opções são factíveis.

Mas migrar a versão da linguagem do projeto atual me parece um desafio técnico mais interessante e que pode agregar mais experiência para um dev junior do que criar um projeto novo.

2

Oi Kevyn, vendo o que respondeu e o que o pessoal compartilhou, com uma experiência que já tive. Vai subindo de versão do PHP, 5.6 e 7, realmente tende a ter poucos ajustes e vai escalando até chegar no máximo que você consegue com pequenos ajustes.
Chegando no limite, com ajustes simples, compartilha com seu supervisor, de ir do 5 para 7 a velocidade é absurda, se conseguir chegar no 8, nossa, melhor dos mundos. O bom de ser PHP puro, a tendência é ter ajustes simples, projetos com composer e várias libs, podem ser mais complicados.

Bom chegando ao limite e tendo mexido em quase todo o projeto, você vai ter uma visão melhor do que fazer em uma nova implementação, quem sabe poder usar Laravel ou outro framework mais simples para a nova implementação.

A ideia seria ir em etapas menores, conhecer e ir escalando versão.

2

Vamos lá... Como dev, é sua obrigação advogar pela qualidade construtiva do projeto.

Continuar a usar php5, coloca o projeto, vc, a empresa e todo mundo que utiliza em risco, uma vez que esta versão sequer recebe updates mais.

O upgrade pode ser custoso demais. Sem ver o que tem aí, te digo que é melhor refazer do zero, usando laravel e seus startkits.

Como és novo no laravel, evite ficar adicionando muitas libs maneiras que existem por aí.

Autenticação robusta, vc pode pegar alguma já pronta: breeze, jetstream, etc. Recomendo iniciar com breeze.

O resto, toca o barco, mãos a obra. Você é responsável pela segurança do projeto a nível de desenvolvimento. Caso não haja uma camada específica na empresa que monitore o projeto, você é responsável por isso. Cuidado com versões. PHP 5 é uma versão que eu mesmo me recuso a atuar hoje em dia.

2

É uma baita responsabilidade para o seu nível de experiência ainda mais por ser lobo solitário na empresa.

O que eu faria na sua pele é, sobe a versão do PHP do projeto atual e depois que tudo estiver OK e o número de bugs for baixo você inicia um novo projeto usando uma framework mais atual Laravel/Symfony, identifica e migra os serviços integrando com o legado até que todo legado esteja migrado para o novo projeto.

Tudo que você for fazer tem que ser aos poucos, indo por baixo, médio e alto impacto. Começe com baixo impacto e vá avançando.

Assim como toda migração de legado as palavras "fácil" e "rápido" não fazem parte do vocabulário, mas saiba que é possível.

Abaixo dois projeto/ferramentas para te ajudar nessa migração, caso não conheça.

https://github.com/rectorphp/rector
https://github.com/PHPCompatibility/PHPCompatibility

Se possível faça tudo com Docker, vai te salvar muito tempo.

Boa sorte.

1
1

Normalmente a troca de versão em php não é tão complicada, mas você vai trocar de uma versão que vai ter coisa que muda muito, as versões da 5 para 7 tem uma mudança muito drástica no php.

Acredito que você vai arrumar pra cabeça fazendo essa troca, dependendo do tamanho do sistema pode ser mais eficaz refazer inteiro mesmo, ainda mais que você tem essa possibilidade de colocar o Laravel.

Aqui na empresa onde trabalho temos um sistema legado que está com php 7.4, o problema não é a versão mas sim a complexidade do código, 10 anos sendo desenvolvido com muitos devs contribuindo acabou deixando o sistema complexo e desorganizado.

Isso resultou na decisão que não vale a pena mexer, pois o trabalho seria muito grande e não teria retorno financeiro suficiente para justificar a mão de obra em cima do sistema, não sei o seu caso mas as vezes a complexidade que você vai ter pode não ser justificada sendo que a versão estavel com php 5.6 não traz muitos riscos (posso estar falando bosta pois sou junior também kkkkk).

Minha visão é essa, quis comentar pois trabalho com esse sistema legado e hoje mesmo tive uma conversa com meu sênior onde ele disse que não vale a pena a mão de obra em cima e que o cliente não teria como pagar para justificar refazermos do 0 com uma framework.

1

É essa a dúvida, em relação as mudanças que teria de fazer por causa das versões como você disse por exemplo da 5 para 7.

Se ia quebrar muito o sistema a ponto de ficar impossível de atualizar.
Aqui o sistema tem mais o menos 10 anos também, e passou por 3 devs, um deles deu uma bagunçada kkkk más acho que não ta tão complexo assim, já trabalho aqui a 2 anos(tem 3 sistema legado aqui :) e consigo encontrar oque preciso no código, já acostumei com ele.

Só que não sei se com meu nivél eu conseguiria completar essa atualização do PHP.

1

Olha, depende do tamanho do sistema, mas eu indicaria refazer, agora com PHP e Laravel 11, quem sabe até usando Livewire e TallStackUI para acelerar o seu desenvolvimento, sem perder o benefício da reatividade estilo js.

Saiba que se escolher mudar a versão apenas, vai quebrar seu sistema inteiro. Quando comecei no PHP era 5.4 e isso já tem mais de 10 anos. Recomendo refazer

1

Quebrar o sistema inteiro, que legal kkkk
Imagina quando subir para o servidor, pretendo deixar o nginx rodando nas duas versões(não sei se tem como)? php5.6 e php8 pra min poder rodar o mesmo sistema nas duas versões e ir arrumando a com PHP 8

1
1

Sim pensei nisso, ir construindo com base no comportamento do código antigo, só que com base a base nova, versão nova e funcionalidades tbm

1

Passei por algo semelhante. Na empresa em que trabalho, o sistema é totalmente integrado, parecendo um verdadeiro ninho de mafagafos (rs... não ironicamente). O sistema legado estava em alguma versão do PHP 5.X, e atualizamos o servidor para o PHP 8.X, incluindo o banco de dados, que é MariaDB. Tivemos diversos problemas de compatibilidade no sistema, com funções, telas e classes deixando de funcionar, já que a linguagem havia sofrido alterações e melhorias. O objetivo era apenas atualizar, então eu e o estagiário que trabalhava comigo na época utilizamos Docker para simular a atualização e corrigir os erros. Esse processo levou alguns meses. Acredito que, se tivéssemos que refazer o sistema, levaríamos alguns anos, mas esse não era o objetivo da empresa.

Mesmo corrigindo diversos erros, quando implementamos a atualização, passamos cerca de um mês ainda resolvendo novos problemas que só foram identificados quando os usuários começaram a utilizar o sistema.

Não sei como é o processo de desenvolvimento na sua empresa, mas, se possível, teste todos os aspectos durante as atualizações, simule casos e ambientes isolados. Se puder, desenvolva de forma a facilitar futuros testes e manutenções na aplicação, sempre mantendo o objetivo em mente. Acredito que a empresa, acima de tudo, queira o projeto funcionando.

1

Legal a sacada de usar o Docker para simular, vou tentar fazer isso aqui! seu comentário foi muito bom, algo que me perguntava era sobre o tempo também de ir por um caminho ou outro, você respondeu isso muito bem, obrigado por compartilhar sua experiência passada.
Sim acima da tudo o projeto tem que estar rodando paralelo, mesmo que na versão antiga, enquanto resolvo os bugs da nova.

1

Sim, usar o Docker foi de grande ajuda. Vi alguns comentários mencionando exatamente que essa mudança de versão é muito drástica, e isso é um fato. Chegamos a usar várias versões do PHP no Docker: 5.x, 6.x, 7.x, até chegar na última. Obviamente, foi o meu caso. Além do sistema, tínhamos um site feito em October (um framework bem parecido com o Laravel, voltado para plugins, como o WordPress – acho horrível, kkkkk), que foi o que mais deu problema. Os erros não eram exibidos de forma correta, então não conseguíamos encontrá-los. Por isso, tivemos que passar versão por versão. Foi uma experiência e tanto.

Espero que consiga achar o melhor caminho para começar e que tenha sucesso nele.

1

Opa fala ae blz? na minha humilde opinião seria validar se realmente tem necessidade de ir para o Laravel. Eu creio que a migração do 5.6 para a última versão do PHP seja imprescindível por conta de melhorias e atualizações de segurança, deixar a aplicação com versão obsoleta pode acarretar problemas de segurança. Todavia se for migrar para Laravel eu aconselho criar um novo projeto e reutilizar os códigos (os possíveis) do projeto antigo, afinal ainda é tudo PHP. :)

1

Considere dar uma olhada no Symfony, um framework excelente e bem componentizado.
Independente de qual escolher, seja framework ou PHP vanila, considere testes automatizados.