$30 off During Our Annual Pro Sale. View Details »

Arquitetura Hexagonal com Symfony

Arquitetura Hexagonal com Symfony

Uma palestra que visa mesclar teoria e código, exemplificando a aplicação na prática.

Começa abordando temas mais básicos como arquitetura de software, e com leves pinceladas em DDD (Domain Driven Design) e SOLID (apenas a letra D do "Princípio de Inversão de Dependência").

Lucas Cavalcante

June 09, 2019
Tweet

More Decks by Lucas Cavalcante

Other Decks in Programming

Transcript

  1. Arquitetura Hexagonal
    com Symfony

    View Slide

  2. Lucas
    Cavalcante
    Software Engineer
    Professor

    View Slide

  3. Conceito de
    Arquitetura de
    Software
    A arquitetura de software
    representa a estrutura do sistema,
    que consiste nos componentes de
    software, nas propriedades
    externamente visíveis desses
    componentes e nos
    relacionamentos entre eles.

    View Slide

  4. Arquitetura de
    Software
    É independente de:
    ● Linguagem
    ● Framework
    ● Biblioteca
    ● etc

    View Slide

  5. Requisitos
    Symfony
    Doctrine
    Front-end
    Memcached
    RabbitMQ
    Web
    DB
    AMQP
    CLI

    View Slide

  6. Domínio
    É a forma para se referir a toda
    lógica do negócio, sejam regras,
    processos ou propriedades.
    Em outras palavras, o que o sistema
    é, o que o sistema faz.
    (DDD - Domain Driven Design)

    View Slide

  7. Uncle Bob

    View Slide

  8. Clean Architecture
    Clean architecture é uma filosofia de
    design de software que separa os
    elementos do design em vários níveis.
    A principal regra deste padrão é que a
    dependência de código só poderá
    existir entre os níveis.

    View Slide

  9. Onion Architecture (Jeffrey Palermo)
    Onion Architecture foi criada por Jeffrey
    Palermo para prover uma melhor maneira de
    construir aplicações com melhores
    perspectivas de testes, manutenção e
    dependências.

    View Slide

  10. Hexagonal Architecture (Alistair Cockburn)

    View Slide

  11. Views
    Controllers
    Repositories
    Web
    Adapters
    External
    World
    Ports
    and
    Entities
    Services
    Interfaces
    Essential Things

    View Slide

  12. Views
    Controllers
    Repositories
    Web
    Adapters
    External
    World
    Ports
    and
    Entities
    Services
    Interfaces
    Essential Things

    View Slide

  13. Definição de
    Arquitetura
    Hexagonal
    Código em camadas com
    responsabilidades distintas,
    isolando* a lógica da aplicação do
    mundo externo. O meio usado para
    a lógica se comunicar com o mundo
    externo são portas e adaptadores.
    Portas são interfaces que as
    camadas de baixo nível expõe, e
    adaptadores são implementações
    para as interfaces em si.
    * O isolamento vale para entrada e saída de dados.

    View Slide

  14. Entities
    Services
    Interfaces
    Controllers
    Repositories
    Web

    View Slide

  15. Views
    Controllers
    Repositories
    Entities
    Services
    Interfaces
    Web

    View Slide

  16. Repositories
    Entities
    Services
    Dependency Inversion
    Principle (DIP)
    Interfaces

    View Slide

  17. Princípio da
    Inversão de
    Dependência
    DIP diz que devemos depender de
    abstrações, não implementações.
    Na prática, isso significa que, no
    contexto de orientação a objetos,
    devemos fazer com que nossa
    classe utilize interfaces para receber
    suas dependências, e não classes
    concretas.
    (SOLID Principles)

    View Slide

  18. Business
    Case Descrição:
    ● Criar uma aplicação que permite aos
    usuários da netflix votar nos seus filmes
    favoritos

    View Slide

  19. Business
    Case
    Requisitos:
    ● Os filmes estão em um banco de dados
    ● O filme pode receber nota de 1 a 10
    ● A média da nota do filme é a média de
    todos os votos
    ● Os votos serão salvos no banco de
    dados

    View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. View Slide

  28. View Slide

  29. View Slide

  30. User
    Payment
    Providers
    Image
    Processing
    External
    Communication

    View Slide

  31. Obrigado!
    E-mail: [email protected]
    Twitter: @lucascgomes
    https://joind.in/talk/3a6f3

    View Slide