Upgrade to Pro — share decks privately, control downloads, hide ads and more …

O que não fazer ao atualizar para o PHP 7

O que não fazer ao atualizar para o PHP 7

Em dezembro de 2018 será encerrado o suporte ao PHP 5.6, então se você ainda não migrou para o PHP 7 ainda da tempo. Você vai ganhar uma melhor performance, novas funcionalidades e muita coisa bacana! Mas nem tudo são flores, e algumas coisas podem dar errado. Para quem ainda não migrou ou para quem migrou mas não notou as vantagens do PHP 7 essa palestra é para você. Venha aprender o que evitar fazer nesse tipo de migração com o case de um projeto que adotou o PHP 7 talvez um pouco cedo demais.

Gabriel Caruso

July 21, 2018
Tweet

More Decks by Gabriel Caruso

Other Decks in Programming

Transcript

  1. O que não fazer ao atualizar para o PHP 7

    TDC SP 2018 - TRILHA PHP ESSENCIAL
  2. Agenda TDC SP 2018 - TRILHA PHP ESSENCIAL Benefícios do

    PHP 7 Migração para o PHP 7 (case Leroy Merlin) Problemas enfrentados Lições Aprendidas Conclusão
  3. Gabriel Caruso Evangelista PHP (internals e externals) BackEnd Developer na

    Leroy Merlin Membro da comunidade PHPSP @carusogabriel TDC SP 2018 - TRILHA PHP ESSENCIAL
  4. Por que atualizar para o PHP 7 em 2018? TDC

    SP 2018 - TRILHA PHP ESSENCIAL
  5. Histórico TDC SP 2018 - TRILHA PHP ESSENCIAL 2013 Laravel

    4 MongoDB 2.6 Elasticsearch 0.92 AWS CircleCI Newrelic 2014 Vagrant Scrutinizer Laravel 4.2 Elasticsearch 1.6 2015 Laravel 5.1 Elasticsearch 1.9 2016 PHP 5.6 MongoDB 3.0 Docker
  6. Migração PHP 7 Iniciada em Julho/2016 - Período 2 semanas

    entre as releases (Slack) Planejamento inicial ◦ Reescrita do Mongolid para suportar a nova extensão (ext-mongodb) ✔ ◦ Atualizar o Mongolid no projeto ◦ Atualização dos containers Docker ◦ Correção de breaking changes e testes unitários ◦ Atualizar versão do ElasticBeanstalk AWS Objetivo ◦ Melhorar response time da aplicação ◦ Reduzir o número de maquinas na AWS ◦ Possibilitar uso de novas funcionalidades TDC SP 2018 - TRILHA PHP ESSENCIAL
  7. ext-mongodb (^1.1) estava em WIP Objetos não tinham suporte a

    serialização Não era possível estender suas classes (final) Implementação diferente do objeto de datas (UTCDateTime) TDC SP 2018 - TRILHA PHP ESSENCIAL
  8. Converter e Serializer • _id: Mongolid\ObjectID • name: string •

    date: Mongolid\UTCDatetime Serializer/Converter • _id: Mongodb\ObjectID • name: string • date: Mongodb\UTCDatetime Persist/Find Solução ext-mongodb ^1.1 TDC SP 2018 - TRILHA PHP ESSENCIAL
  9. Suporte PHP 7 na AWS Elastic Beanstalk ◦ Solução PaaS

    na AWS para gerenciar aplicação web ◦ Permite customizações nível AMI ◦ Criação AMI custom a partir de um .sh de setup TDC SP 2018 - TRILHA PHP ESSENCIAL
  10. Incompatibilidade entre extensões TDC SP 2018 - TRILHA PHP ESSENCIAL

    • Processamento paralelo de arquivos lote • Um arquivo por loja • ~30 lojas pcntl_* • Persistência com MongoDB • Usado pelo ODM ext-mongodb
  11. Importância dos testes Testes unitários ✔ Testes em ambiente staging

    ✔ Testes com usuários internos TDC SP 2018 - TRILHA PHP ESSENCIAL
  12. Monitoramento em produção Testes unitários ✔ Testes em ambiente staging

    ✔ Testes com usuários internos ✔ Erros no NewRelic ✔ TDC SP 2018 - TRILHA PHP ESSENCIAL
  13. Monitoramento em produção Testes unitários ✔ Testes em ambiente staging

    ✔ Testes com usuários internos ✔ Erros no NewRelic ✔ Vendas do e-commerce TDC SP 2018 - TRILHA PHP ESSENCIAL
  14. Migração PHP 7 Iniciada em Julho/2016 - Período 2 3

    semanas entre as releases (Slack) Planejamento inicial ◦ Reescrita do Mongolid para suportar a nova extensão (ext-mongodb) ✔ ◦ Atualizar o Mongolid no projeto ◦ Criar serializer/converter ◦ Workaround ext-mongodb em threads ◦ Atualização dos containers Docker ◦ Correção de breaking changes e testes unitários ◦ Mais correções e bugs ◦ Atualizar versão do ElasticBeanstalk AWS ◦ Tratar falso positivos TDC SP 2018 - TRILHA PHP ESSENCIAL
  15. Migração PHP 7 Objetivo ◦ Melhorar response time da aplicação

    ◦ Reduzir o número de maquinas na AWS ◦ Possibilitar uso de novas funcionalidades TDC SP 2018 - TRILHA PHP ESSENCIAL
  16. Migração PHP 7 Objetivo ◦ Melhorar response time da aplicação

    ❌ ◦ Reduzir o número de maquinas na AWS ❌ ◦ Possibilitar uso de novas funcionalidades ✔ TDC SP 2018 - TRILHA PHP ESSENCIAL
  17. Cuidado ao usar os Tipos Escalares TDC SP 2018 -

    TRILHA PHP ESSENCIAL Não transforme documentação em tipos escalares nativos, ela pode estar desatualizada Não usar strict_types sem antes refatorar e analizar seu código, eles também afetam funções internas Use uma ferramenta de análise estática do código pode garantir que você não esteja passando tipos errôneos para as funções que serão tipadas
  18. Prepare seu código para facilitar migrações TDC SP 2018 -

    TRILHA PHP ESSENCIAL Respeite a arquitetura da sua aplicação/framework Crie ou use foward compatibility layers Aplique Pollyfills Procure por Adapters
  19. Incompatibilidade entre extensões Só use extensões se realmente necessário! Algumas

    estatísticas ⭐ ◦ PHP: 18k ⭐ (https://github.com/php/php-src) TDC SP 2018 - TRILHA PHP ESSENCIAL
  20. Incompatibilidade entre extensões Só use extensões se realmente necessário! Algumas

    estatísticas ⭐ ◦ PHP: 18k ⭐ (https://github.com/php/php-src) ◦ pthreads: 2,9k ⭐ (https://github.com/krakjoe/pthreads) TDC SP 2018 - TRILHA PHP ESSENCIAL
  21. Incompatibilidade entre extensões Só use extensões se realmente necessário! Algumas

    estatísticas ⭐ ◦ PHP: 18k ⭐ (https://github.com/php/php-src) ◦ pthreads: 2,9k ⭐ (https://github.com/krakjoe/pthreads) ◦ ext-mongodb: 527⭐ (https://github.com/mongodb/mongo-php-driver) TDC SP 2018 - TRILHA PHP ESSENCIAL
  22. Incompatibilidade entre extensões Só use extensões se realmente necessário! Algumas

    estatísticas ⭐ ◦ PHP: 18k ⭐ (https://github.com/php/php-src) ◦ pthreads: 2,9k ⭐ (https://github.com/krakjoe/pthreads) ◦ ext-mongodb: 527⭐ (https://github.com/mongodb/mongo-php-driver) ◦ Duas juntas: ??? TDC SP 2018 - TRILHA PHP ESSENCIAL
  23. Acompanhe a evolução na infraestrutura ◦ Use Infrastructure as Code

    ◦ ~5 minutos para configurar AMI ◦ Nova geração EC2 ◦ Redução de 12 para 4 servidores TDC SP 2018 - TRILHA PHP ESSENCIAL
  24. Obrigado! PERGUNTAS? TDC SP 2018 - TRILHA PHP ESSENCIAL gmsantos

    gmsantos__ gmsantos gmsantos Slides disponíveis em: http://bit.ly/tdc-sp-php7 carusogabriel carusogabriel carusogabriel carusogabriel