Visão global:
Esta pergunta foi feita originalmente e depois encerrada no StackOverflow . Afirmamos na meta que aqui é o lugar certo para esta pergunta.
Esta pergunta é a favor de ajudar muitas pessoas a encontrar a maneira correta de estimar as atualizações do Magento.
A questão:
Estou interessado em saber como você mede o tempo necessário para a atualização do Magento? Acho que muitos de vocês tiveram dificuldade em responder à pergunta do cliente: "Quanto tempo levará para atualizar minha loja Magento?"
Normalmente, o cliente precisa ouvir apenas um número, por exemplo: "Levará X horas e custará Y Bucks".
A principal idéia por trás da pergunta é sobre o lado técnico e o que você verifica como desenvolvedor para fazer seus próprios cálculos para atualizações do Magento.
Criei a próxima lista de verificação, apenas para meus próprios cálculos:
- O núcleo do Magento é tocado?
- O esquema do Magento DB foi tocado?
- Temos dados inconsistentes no banco de dados?
- Quantas extensões personalizadas estão instaladas no conjunto de códigos local e da comunidade?
- A extensão personalizada é compatível com a versão mais recente do Magento?
- O desenvolvedor do tema usou o arquivo local.xml para as diretivas de layout ou apenas copiou os arquivos xml da base / default / layout para o diretório de layout do tema personalizado?
- Temos diretivas de layout / métodos de bloco obsoletos nos arquivos xml de layout?
- Eu desenvolvi esta loja Magento?
Você acha que estou perdendo alguma coisa e, se sim, gostaria de compartilhar comigo e com a comunidade seus pontos adicionais para a lista de verificação?
Respostas:
Estimar a atualização do Magento é um processo de coleta de informações sobre as modificações aplicadas na instalação que você está prestes a fazer, verificando se essas modificações podem causar um problema e avaliando quanto tempo é necessário para contorná-las.
Todas as modificações podem ser literalmente divididas em fora do núcleo e dentro do núcleo .
Modificações fora do núcleo são aquelas que não serão substituídas pela atualização. Essas são extensões de terceiros , arquivos principais colocados no escopo local (app / code / local / Mage) e um tema personalizado .
As modificações no núcleo são aplicadas diretamente nos arquivos principais do Magento (app / code / core), arquivos de localização (app / locale / en_US), modelos principais e algumas coisas como javascripts , bibliotecas externas que raramente são personalizadas, mas precisam ser levadas em consideração .
Modificações fora do núcleo
Extensões de terceiros
Durante as atualizações, extensões de terceiros são a principal fonte de problemas. O que significa que, quanto mais extensões você tiver, mais tempo será necessário para analisá-las.
A primeira coisa a verificar é se a funcionalidade fornecida pela extensão ainda não foi implementada em uma versão do Magento para a qual você está atualizando. Por exemplo, algumas extensões como
Yoast_CanonicalUrl
,Mxperts_CustomerAddress
ouFontis_Wysiwyg
foram amplamente utilizado em Magento 1.3.xx e mais velhos, mas agora fazem parte do núcleo funcionalidade Magento e não é mais necessário.É uma boa ideia verificar (pergunte ao seu cliente) se você realmente precisa de todas as extensões que possui. Pode haver algumas extensões instaladas, mas nunca realmente usadas. Portanto, neste ponto, é bom fazer uma espécie de limpeza.
Então, uma coisa importante a verificar é a compatibilidade de cada uma das extensões restantes com uma versão do Magento para a qual você está atualizando. Caso algumas extensões não sejam compatíveis e nenhuma extensão semelhante esteja disponível, você terá a opção difícil de perder alguma funcionalidade ou modificar as extensões existentes para torná-las compatíveis.
Depois de tudo isso, é possível fornecer a análise real de cada uma das extensões restantes. Sempre deve começar com o exame do
etc/config.xml
arquivo. Há três coisas a procurar:app / code / local / Mage
Depois de terminar as extensões, é hora de dar uma olhada no seu
app/code/local/Mage
diretório. Aqui você encontrará arquivos principais modificados movidos para umlocal
escopo. Cada um deles certamente custará alguns cabelos grisalhos, porque você nunca sabe (se não foi você quem os colocou lá) o que foi modificado lá e por que motivo. Portanto, você deve comparar cada um deles com uma origem e migrar funcionalidades adicionais para o arquivo correspondente da nova versão.Tema personalizado
A última modificação fora do núcleo foi o tema personalizado. Pode parecer que não é grande coisa, mas na verdade é uma área cinzenta. O tema base do Magento está sendo modificado de versão para versão e cada tema personalizado deve imitar algumas dessas modificações. Infelizmente, não existe uma bala de prata para determinar o que procurar e o que deve ser migrado. Portanto, esteja preparado para algumas surpresas importantes e pequenos detalhes após a atualização.
Modificações no núcleo
No mundo perfeito, não há nenhum. Mas quando você recebe uma instalação do Magento após ter sido abusada por desenvolvedores de terceiros, que estão oferecendo muito barato, você pode esperar qualquer coisa. Portanto, modificações internas são aquelas que serão substituídas durante o processo de atualização. Na maioria dos casos, isso não produzirá erros, mas, como resultado, você perderá a funcionalidade que foi adicionada de maneira tão brutal.
A única maneira de detectar modificações no núcleo é comparar todos os arquivos da instalação do Magento com arquivos limpos da mesma versão. Eu recomendo fazê-lo com o git. Por quê? Simplesmente porque ele lidará bem com todas as novas linhas e espaços em branco.
Mesmo que sua instalação do Magento não esteja sob o git, você ainda pode copiar seus arquivos em um diretório separado e executar o git init. Em seguida, faça o commit inicial, copie os arquivos Magento “limpos” e execute
git status
. Você obterá algo como isto:Agora, dependendo do número de arquivos modificados, você pode executar
git diff
em cada arquivo ou em todo o lote de uma só vez. Isso fornecerá uma referência abrangente de todas as modificações internas feitas. Se você tem alguma visualização git como o phpStorm, a vida é muito mais fácil para você:Sugiro que
git diff > changes.txt
você sempre tenha uma lista de modificações à mão.Tendo a lista de modificações principais, é possível estimar o que deve ser transferido para a nova versão e quanto tempo será necessário para isso.
Agora, gostaria de dar alguns conselhos para uma atualização real. Esse processo está bem documentado, portanto não escreverei quais comandos executar e onde clicar. No entanto, quero enfatizar várias coisas importantes:
dataflow_*
,log_*
,report_*
.Após o script de atualização concluído:
changes.txt
você fez antes de migrar todas as modificações internas que realmente valem a pena migrar.app/code/local/Mage
modificações encontradas antes da atualização.Conclusão
Sei que tudo isso parece assustador, mas se você estiver atualizando regularmente, mantendo seu núcleo limpo e instalando extensões apenas de fornecedores em quem realmente confia, e somente se você realmente precisar delas, não enfrentará a maioria das dificuldades descritas neste artigo. Mantenha seu Magento EcoSystem saudável e você será recompensado.
Post Scriptum
Em casos muito complicados, faz sentido começar tudo de novo com uma nova instalação do Magento mais recente e migrar o tema e a funcionalidade da sua loja passo a passo. Definitivamente, isso levará tempo, mas no final você terá um sistema Magento saudável, com total consciência do que está acontecendo.
fonte
De um modo geral, o código Core nunca deve ser tocado durante o desenvolvimento. Existem muitos mecanismos no Magento que permitem solucionar qualquer problema, inclusive erros internos. Dito isto, há outras questões a serem observadas também.
<rewrite>
e é uma prática recomendada, pois eles realmente devem usar código não invasivo, como eventos)No que diz respeito ao modelo, pela experiência anterior, posso dizer que ele mal quebra, a menos que o desenvolvedor tenha enlouquecido com a codificação do modelo (que deve estar em blocos de qualquer maneira).
fonte
Aqui estão algumas coisas para manter na mente:
Uma maneira de lidar com esse tipo de solicitação do cliente é fazer uma revisão de estimativa.
Isso implica dizer ao cliente que você gastará algum tempo (faturável) olhando para ele e fornecerá a eles um prazo / custo mais preciso para a execução do projeto.
Seguir essa rota beneficia você e o cliente.
O cliente geralmente se sentirá mais confiante em sua estimativa e respeitará suas recomendações, o que, por sua vez, beneficia você, reduzindo o possível estresse.
Revisão de estimativa:
A revisão da estimativa real seria algo como estas:
Esse processo deve levar em média duas horas faturáveis e fornecerá as informações necessárias sobre o sistema em questão.
fonte
Fizemos várias atualizações no Magento CE, sendo a pior de 1,3 para 1,7, o que levou quase quatro dias completos. A estimativa inicial foi de 1-2 dias. Eu acho que a atualização do 1.x para o 2.x será uma tarefa igualmente grande e, mesmo que as ferramentas de migração sejam fornecidas pela equipe principal, pode ser mais limpo começar do zero.
fonte
Quero acrescentar uma coisa às excelentes respostas fornecidas acima:
Não farei uma atualização sem os processos adequados por trás dela e a possibilidade de voltar atrás quando ocorrerem problemas (ainda mais se eu não tivesse trabalhado no site antes). Cerca de 90% dos clientes que se aproximam de nós para uma atualização do Magento (que não eram nossos clientes antes) só têm um ambiente ativo sem nenhum teste / teste, VCS em qualquer lugar.
fonte
A integração com outras entidades é uma coisa importante a se perguntar. Isso é algo que você talvez não consiga identificar ao olhar para o site - é comum que os clientes tenham sistemas de back-end buscando pedidos por meio da API Magento, por exemplo, e se você não lidar com a continuidade dessa integração enquanto estiver atualizando você pode entrar em uma bagunça.
Ao revisar componentes, procure aqueles que conversam com outros sistemas - cada um deles será complicado de testar porque você não deseja enviar acidentalmente dados de teste para um sistema ativo. Muitas vezes, existe um ponto de extremidade de teste usado pelos desenvolvedores originais, mas você pode não ter mais essas informações ao atualizar.
fonte