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

Laravel para Aplicações de Grande Porte

Laravel para Aplicações de Grande Porte

Vinicius Reis

October 08, 2016
Tweet

More Decks by Vinicius Reis

Other Decks in Programming

Transcript

  1. Laravel
    para Aplicações de Grande Porte

    View Slide

  2. Quem Somos
    Vinicius Reis | @vinicius73
    Engenheiro de Aplicações @ Decision6
    CODECASTER @codecasts
    Diego Hernandes | @hernandev
    CTO @ Kino
    CODECASTER @ codecasts

    View Slide

  3. Mas, o que é Grande Porte
    ?

    View Slide

  4. Mas, o que é Grande Porte?
    - Aplicações de complexidade média a moderada.
    - Aplicações com muitas funcionalidades.
    - Aplicações com muitas regras de negócio.
    - Aplicações com lógica de domínio complexas.
    - Aplicações que pretendem evoluir
    - Aplicações de ‘longo prazo’

    View Slide

  5. Perdendo o Controle!

    View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. Micro-services

    View Slide

  10. monolítico
    micro-services

    View Slide

  11. Módulos
    ● O que é um módulo?
    ● Como organizar?
    ● Como distribuir?

    View Slide

  12. Módulos
    Módulo é uma palavra genérica de mais, varia
    muito com seu contexto e modo como é aplicado.

    View Slide

  13. Módulos
    Os namespaces do PHP + Composer deixam sua
    aplicação naturalmente modular.

    View Slide

  14. Módulos
    Tudo depende da estratégia de modularização.
    Tem que se não considerar a comunicação e
    dependências entre os “módulos” isso pode
    comprometer o uso e distribuição dos módulos.

    View Slide

  15. Módulos, problemas com responsabilidades...
    A página inicial do módulo de FÓRUM
    deve carregar uma lista dos últimos
    posts da aplicação (do módulo BLOG).
    BLOG e FÓRUM são módulos
    separados, mas agora eles precisam se
    comunicar.
    Como fica o reúso deles?
    Além disso, ambos precisam do módulo
    de USUÁRIOS....

    View Slide

  16. DDD

    View Slide

  17. View Slide

  18. Domain Driven Development
    (ou algo inspirado...)

    View Slide

  19. Pensando em Domínios
    - Usuários
    - Grupos
    - Permissões
    - Fórum
    - Perguntas
    - Respostas
    - Blog
    - Categorias
    - Tags
    - Comentários
    Um domínio é o “assunto/contexto” de
    um determinado negócio

    View Slide

  20. E onde eu enfio o resto da
    aplicação?...
    Como Views, Lógica de pagamentos,
    entre outros?

    View Slide

  21. SUPORTE
    FRAMEWORK
    APLICAÇÕES
    (UNIDADES)
    DOMÍNIOS

    View Slide

  22. Aplicações (Unidades)
    - A principal responsabilidade das Unidades
    é a comunicação entre usuários (que
    também podem ser outras aplicações) e
    as outras camadas.
    - A camada de aplicação não tem intenção
    de ser portável para outras plataformas e
    tecnologias, visto que uma vez
    centralizadas as regras no domínio, a
    camada de aplicações passa a ser fina.
    Camada de I/O do Software
    Comumente é a camada HTTP, mas
    também pode ser uma camada
    acessível via terminal.
    Pode ser considerada uma camada
    “burra”, não possui regras de negócio.

    View Slide

  23. Camada de Suporte
    Exemplos:
    - View Presenters
    - Base de repositórios e models
    - Camada de Pagamentos
    - Sistema de Notificações
    - Qualquer coisa que possa ser
    transformada em um pacote de uso
    genérico.
    Pacotes ‘in-house’.
    Classes que não se encaixam na
    camada de domínio, existem para
    centralizar esse tipo de rotina.
    Podem ser facilmente distribuídos
    como pacotes composer.

    View Slide

  24. Dependência entre Camadas
    Support
    Domain
    Units
    Support não deve depender do domínio ou das Unidades
    Domínio pode depender de Suporte, mas não das
    unidades
    Unidades podem depender de ambos
    suporte e Domínio

    View Slide

  25. Por onde começar?
    $ composer create codecasts/laravel meu-projeto

    View Slide

  26. Show me the code!
    https://github.com/codecasts/codecasts

    View Slide

  27. Perguntas

    View Slide