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

Dicas para iniciar um projeto em PHP

Dicas para iniciar um projeto em PHP

Dicas básicas que podem ajudar a criar uma boa base para o desenvolvimento e manutenção de um projeto em PHP, entre essas dicas, algumas também podem ser úteis em projetos desenvolvidos em outras linguagens.

Lucas de Oliveira

March 16, 2019
Tweet

Other Decks in Programming

Transcript

  1. Dicas para iniciar um
    Dicas para iniciar um
    projeto em PHP
    projeto em PHP
    16/03/2019
    16/03/2019

    View Slide

  2. Lucas de Oliveira
    Lucas de Oliveira
    Líder de Técnico / Desenvolvedor Backend na Acruxx
    Líder de Técnico / Desenvolvedor Backend na Acruxx
    deoliveiralucas.net
    deoliveiralucas.net
    16/03/2019
    16/03/2019

    View Slide

  3. Sobre as dicas
    Sobre as dicas
    16/03/2019
    16/03/2019

    View Slide

  4. 16/03/2019
    16/03/2019
    Cenário
    Cenário

    View Slide

  5. Sistemas
    Sistemas
    16/03/2019
    16/03/2019
    Cenário
    Cenário

    View Slide

  6. Sistemas
    Sistemas
    Longo prazo
    Longo prazo
    16/03/2019
    16/03/2019
    Cenário
    Cenário

    View Slide

  7. Sistemas
    Sistemas
    Longo prazo
    Longo prazo
    Muitas modificações
    Muitas modificações
    16/03/2019
    16/03/2019
    Cenário
    Cenário

    View Slide

  8. Sistemas
    Sistemas
    Longo prazo
    Longo prazo
    Muitas modificações
    Muitas modificações
    Nova solução
    Nova solução
    16/03/2019
    16/03/2019
    Cenário
    Cenário

    View Slide

  9. Sistemas
    Sistemas
    Longo prazo
    Longo prazo
    Muitas modificações
    Muitas modificações
    Nova solução
    Nova solução
    Mais de um dev
    Mais de um dev
    16/03/2019
    16/03/2019
    Cenário
    Cenário

    View Slide

  10. Sistemas
    Sistemas
    Longo prazo
    Longo prazo
    Muitas modificações
    Muitas modificações
    Nova solução
    Nova solução
    Mais de um dev
    Mais de um dev
    16/03/2019
    16/03/2019
    Cenário
    Cenário

    View Slide

  11. Sites
    Sites
    Landing pages
    Landing pages
    Projetos de curto prazo
    Projetos de curto prazo
    16/03/2019
    16/03/2019
    Não se aplica
    Não se aplica

    View Slide

  12. 16/03/2019
    16/03/2019
    Onde estamos?
    Onde estamos?

    View Slide

  13. Ideia
    Ideia
    16/03/2019
    16/03/2019
    Onde estamos?
    Onde estamos?

    View Slide

  14. Ideia
    Ideia
    Descrição macro
    Descrição macro
    16/03/2019
    16/03/2019
    Onde estamos?
    Onde estamos?

    View Slide

  15. Ideia
    Ideia
    Descrição macro
    Descrição macro
    Refinamento
    Refinamento
    16/03/2019
    16/03/2019
    Onde estamos?
    Onde estamos?

    View Slide

  16. Ideia
    Ideia
    Descrição macro
    Descrição macro
    Refinamento
    Refinamento
    Definição dos requisitos
    Definição dos requisitos
    16/03/2019
    16/03/2019
    Onde estamos?
    Onde estamos?

    View Slide

  17. Ideia
    Ideia
    Descrição macro
    Descrição macro
    Refinamento
    Refinamento
    Definição dos requisitos
    Definição dos requisitos
    Desenvolvimento
    Desenvolvimento
    16/03/2019
    16/03/2019
    Onde estamos?
    Onde estamos?

    View Slide

  18. Ideia
    Ideia
    Descrição macro
    Descrição macro
    Refinamento
    Refinamento
    Definição dos requisitos
    Definição dos requisitos
    Desenvolvimento
    Desenvolvimento
    16/03/2019
    16/03/2019
    Onde estamos?
    Onde estamos?

    View Slide

  19. Ideia
    Ideia
    Descrição macro
    Descrição macro
    Refinamento
    Refinamento
    Definição dos requisitos
    Definição dos requisitos
    Desenvolvimento
    Desenvolvimento
    16/03/2019
    16/03/2019
    Onde estamos?
    Onde estamos?

    View Slide

  20. 16/03/2019
    16/03/2019
    E se não tomarmos boas
    E se não tomarmos boas
    decisões no inicio...
    decisões no inicio...

    View Slide

  21. 16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  22. Para membros da equipe
    Para membros da equipe
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  23. Para membros da equipe
    Para membros da equipe
    Parâmetros de configuração
    Parâmetros de configuração
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  24. Para membros da equipe
    Para membros da equipe
    Parâmetros de configuração
    Parâmetros de configuração
    Gerenciamento de dependências
    Gerenciamento de dependências
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  25. Para membros da equipe
    Para membros da equipe
    Parâmetros de configuração
    Parâmetros de configuração
    Gerenciamento de dependências
    Gerenciamento de dependências
    Execução de funcionalidades
    Execução de funcionalidades
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  26. Para membros da equipe
    Para membros da equipe
    Parâmetros de configuração
    Parâmetros de configuração
    Gerenciamento de dependências
    Gerenciamento de dependências
    Execução de funcionalidades
    Execução de funcionalidades
    Utilização de serviços
    Utilização de serviços
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  27. Para membros da equipe
    Para membros da equipe
    Parâmetros de configuração
    Parâmetros de configuração
    Gerenciamento de dependências
    Gerenciamento de dependências
    Execução de funcionalidades
    Execução de funcionalidades
    Utilização de serviços
    Utilização de serviços
    Configuração do projeto
    Configuração do projeto
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  28. Para membros da equipe
    Para membros da equipe
    Parâmetros de configuração
    Parâmetros de configuração
    Gerenciamento de dependências
    Gerenciamento de dependências
    Execução de funcionalidades
    Execução de funcionalidades
    Utilização de serviços
    Utilização de serviços
    Configuração do projeto
    Configuração do projeto
    ...
    ...
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  29. Para novos integrantes
    Para novos integrantes
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  30. Para novos integrantes
    Para novos integrantes
    Tempo de integração
    Tempo de integração
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  31. Para novos integrantes
    Para novos integrantes
    Tempo de integração
    Tempo de integração
    Configuração do ambiente
    Configuração do ambiente
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  32. Para novos integrantes
    Para novos integrantes
    Tempo de integração
    Tempo de integração
    Configuração do ambiente
    Configuração do ambiente
    Conhecer o código-fonte
    Conhecer o código-fonte
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  33. Para novos integrantes
    Para novos integrantes
    Tempo de integração
    Tempo de integração
    Configuração do ambiente
    Configuração do ambiente
    Conhecer o código-fonte
    Conhecer o código-fonte
    Processo de desenvolvimento
    Processo de desenvolvimento
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  34. Para novos integrantes
    Para novos integrantes
    Tempo de integração
    Tempo de integração
    Configuração do ambiente
    Configuração do ambiente
    Conhecer o código-fonte
    Conhecer o código-fonte
    Processo de desenvolvimento
    Processo de desenvolvimento
    Processo de entrega
    Processo de entrega
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  35. Para novos integrantes
    Para novos integrantes
    Tempo de integração
    Tempo de integração
    Configuração do ambiente
    Configuração do ambiente
    Entender o código-fonte
    Entender o código-fonte
    Processo de desenvolvimento
    Processo de desenvolvimento
    Processo de entrega
    Processo de entrega
    ...
    ...
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  36. Para novos integrantes
    Para novos integrantes
    Tempo de integração
    Tempo de integração
    Configuração do ambiente
    Configuração do ambiente
    Conhecer o código-fonte
    Conhecer o código-fonte
    Processo de desenvolvimento
    Processo de desenvolvimento
    Processo de entrega
    Processo de entrega
    ...
    ...
    Problemas dos membros da equipe
    Problemas dos membros da equipe
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  37. Para novos integrantes
    Para novos integrantes
    Tempo de integração
    Tempo de integração
    Configuração do ambiente
    Configuração do ambiente
    Conhecer o
    Conhecer o código-fonte
    código-fonte
    Processo de desenvolvimento
    Processo de desenvolvimento
    Processo de entrega
    Processo de entrega
    ...
    ...
    Problemas dos membros da equipe
    Problemas dos membros da equipe
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  38. Código-fonte
    Código-fonte
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  39. Código-fonte
    Código-fonte
    Adicionar funcionalidades
    Adicionar funcionalidades
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  40. Código-fonte
    Código-fonte
    Adicionar funcionalidades
    Adicionar funcionalidades
    Reutilizar código
    Reutilizar código
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  41. Código-fonte
    Código-fonte
    Adicionar funcionalidades
    Adicionar funcionalidades
    Reutilizar código
    Reutilizar código
    Executar alterações
    Executar alterações
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  42. Código-fonte
    Código-fonte
    Adicionar funcionalidades
    Adicionar funcionalidades
    Reutilizar código
    Reutilizar código
    Executar alterações
    Executar alterações
    Trabalhar em equipe
    Trabalhar em equipe
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  43. Código-fonte
    Código-fonte
    Adicionar funcionalidades
    Adicionar funcionalidades
    Reutilizar código
    Reutilizar código
    Executar alterações
    Executar alterações
    Trabalhar em equipe
    Trabalhar em equipe
    Executar a implantação
    Executar a implantação
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  44. Código-fonte
    Código-fonte
    Adicionar funcionalidades
    Adicionar funcionalidades
    Reutilizar código
    Reutilizar código
    Executar alterações
    Executar alterações
    Trabalhar em equipe
    Trabalhar em equipe
    Executar a implantação
    Executar a implantação
    ...
    ...
    16/03/2019
    16/03/2019
    Problemas
    Problemas

    View Slide

  45. 16/03/2019
    16/03/2019
    Evitando problemas
    Evitando problemas

    View Slide

  46. 16/03/2019
    16/03/2019
    Evitando problemas
    Evitando problemas
    Organização
    Organização
    Documentação
    Documentação
    Automatização de tarefas
    Automatização de tarefas
    Definição de processos
    Definição de processos
    ...
    ...

    View Slide

  47. Defina o repositório e VCS
    Defina o repositório e VCS
    Github
    Github
    Bitbucket
    Bitbucket
    Gitlab
    Gitlab
    ...
    ...
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  48. Consulte a versão atual do PHP
    Consulte a versão atual do PHP
    Funcionalidades atuais
    Funcionalidades atuais
    Revise ferramentas e boas práticas
    Revise ferramentas e boas práticas
    PHP The Right Way
    PHP The Right Way
    PHP.net
    PHP.net
    ...
    ...
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  49. 16/03/2019
    16/03/2019

    View Slide

  50. Defina uma arquitetura
    Defina uma arquitetura
    Entenda bem o problema
    Entenda bem o problema
    Utilize o conhecimento da equipe
    Utilize o conhecimento da equipe
    Busque facilidade de manutenção
    Busque facilidade de manutenção
    ...
    ...
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  51. Defina uma arquitetura
    Defina uma arquitetura
    Entenda bem o problema
    Entenda bem o problema
    Utilize o conhecimento da equipe
    Utilize o conhecimento da equipe
    Busque facilidade de manutenção
    Busque facilidade de manutenção
    ...
    ...
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  52. Defina uma arquitetura
    Defina uma arquitetura
    MVC
    MVC
    Action Domain Responder
    Action Domain Responder
    Clean Architecture
    Clean Architecture
    Hexagonal Architecture
    Hexagonal Architecture
    CQRS
    CQRS
    Event Sourcing
    Event Sourcing
    Microservices
    Microservices
    SOA
    SOA
    ...
    ...
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  53. 16/03/2019
    16/03/2019

    View Slide

  54. Defina uma arquitetura
    Defina uma arquitetura
    Estude a melhor opção
    Estude a melhor opção
    Resolva o problema
    Resolva o problema
    Não crie mais problemas
    Não crie mais problemas
    ...
    ...
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  55. Escolha soluções prontas
    Escolha soluções prontas
    Frameworks
    Frameworks
    Micro-frameworks
    Micro-frameworks
    Componentes
    Componentes
    Foque na solução de negócio
    Foque na solução de negócio
    ...
    ...
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  56. Escolha soluções prontas
    Escolha soluções prontas
    Symfony
    Symfony
    Laravel
    Laravel
    Lumen
    Lumen
    Zend Framework
    Zend Framework
    Zend Expressive
    Zend Expressive
    Slim Framework
    Slim Framework
    ...
    ...
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  57. 16/03/2019
    16/03/2019

    View Slide

  58. Escolha soluções prontas
    Escolha soluções prontas
    Packagist
    Packagist
    Composer
    Composer
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  59. 16/03/2019
    16/03/2019

    View Slide

  60. 16/03/2019
    16/03/2019

    View Slide

  61. Escolha soluções prontas
    Escolha soluções prontas
    Atividade dos mantenedores no projeto
    Atividade dos mantenedores no projeto
    Issues
    Issues abertas e resolvidas
    abertas e resolvidas
    Quantidade de
    Quantidade de stars
    stars
    Documentação fácil de entender e com
    Documentação fácil de entender e com
    exemplos
    exemplos
    ...
    ...
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  62. 16/03/2019
    16/03/2019

    View Slide

  63. Configure os Testes
    Configure os Testes
    PHPUnit
    PHPUnit
    Behat
    Behat
    Codeception
    Codeception
    ...
    ...
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  64. 16/03/2019
    16/03/2019

    View Slide

  65. Adicione ferramentas de QA
    Adicione ferramentas de QA
    PHP Stan
    PHP Stan
    PHP Code Sniffer
    PHP Code Sniffer
    PHP Depend
    PHP Depend
    PHP Mess Detector
    PHP Mess Detector
    PHP Copy Paste Detector
    PHP Copy Paste Detector
    ...
    ...
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  66. 16/03/2019
    16/03/2019

    View Slide

  67. Crie uma funcionalidade de
    Crie uma funcionalidade de
    exemplo
    exemplo
    Entendimento da arquitetura
    Entendimento da arquitetura
    Separação das camadas
    Separação das camadas
    Comunicação entre camadas
    Comunicação entre camadas
    Nomeação de arquivos e
    Nomeação de arquivos e namespaces
    namespaces
    ...
    ...
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  68. Mantenha os ambientes
    Mantenha os ambientes
    semelhantes
    semelhantes
    Docker
    Docker
    Vagrant
    Vagrant
    ...
    ...
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  69. Automatize o processo de
    Automatize o processo de
    implantação
    implantação
    Heroku
    Heroku
    Deployer
    Deployer
    ...
    ...
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  70. Configure uma ferramenta de
    Configure uma ferramenta de
    Integração Contínua
    Integração Contínua
    TravisCI
    TravisCI
    Bitbucket Pipeline
    Bitbucket Pipeline
    Jenkins
    Jenkins
    ...
    ...
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  71. 16/03/2019
    16/03/2019

    View Slide

  72. 16/03/2019
    16/03/2019

    View Slide

  73. Defina o processo de trabalho no
    Defina o processo de trabalho no
    código-fonte
    código-fonte
    Padrão de
    Padrão de commit
    commit
    Nomeação das
    Nomeação das branches
    branches
    Versionamento
    Versionamento
    Documentação das
    Documentação das releases
    releases
    ...
    ...
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  74. 16/03/2019
    16/03/2019

    View Slide

  75. Fonte: https://br.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow

    View Slide

  76. 16/03/2019
    16/03/2019

    View Slide

  77. 16/03/2019
    16/03/2019

    View Slide

  78. Adicione a etapa Code Review
    Adicione a etapa Code Review
    Checklist
    Checklist para alinhar verificações
    para alinhar verificações
    Antes de enviar para o ambiente de teste
    Antes de enviar para o ambiente de teste
    Após a execução da ferramenta CI
    Após a execução da ferramenta CI
    Melhorar a qualidade do software
    Melhorar a qualidade do software
    Compartilhar conhecimento
    Compartilhar conhecimento
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  79. 16/03/2019
    16/03/2019
    Fonte: https://www.evoketechnologies.com/blog/code-review-checklist-perform-effective-code-reviews/

    View Slide

  80. Estude/Revise os 12 fatores
    Estude/Revise os 12 fatores
    The Twelve Factors Apps
    The Twelve Factors Apps
    12factor.net
    12factor.net
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  81. 16/03/2019
    16/03/2019

    View Slide

  82. Adicione tudo no repositório
    Adicione tudo no repositório
    Documentação (Markdown/Wiki)
    Documentação (Markdown/Wiki)
    Scripts de correção/jobs
    Scripts de correção/jobs
    Exemplos de comandos
    Exemplos de comandos
    Links para outras documentações
    Links para outras documentações
    Tudo que for parte da aplicação
    Tudo que for parte da aplicação
    16/03/2019
    16/03/2019
    Dicas
    Dicas

    View Slide

  83. 16/03/2019
    16/03/2019

    View Slide

  84. 16/03/2019
    16/03/2019
    Prepare uma boa base para
    Prepare uma boa base para
    construção do software e evite
    construção do software e evite
    problemas ao decorrer do
    problemas ao decorrer do
    desenvolvimento.
    desenvolvimento.
    Conclusão
    Conclusão

    View Slide

  85. 16/03/2019
    16/03/2019
    Perguntas?
    Perguntas?

    View Slide

  86. 16/03/2019
    16/03/2019
    Obrigado!
    Obrigado!
    deoliveiralucas.net
    deoliveiralucas.net
    phpvale.com.br
    phpvale.com.br

    View Slide