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").

Fb65bf29f3a6f048b2efc574249c5cb1?s=128

Lucas Cavalcante

June 09, 2019
Tweet

Transcript

  1. Arquitetura Hexagonal com Symfony

  2. Lucas Cavalcante Software Engineer Professor

  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.
  4. Arquitetura de Software É independente de: • Linguagem • Framework

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

  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)
  7. Uncle Bob

  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.
  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.
  10. Hexagonal Architecture (Alistair Cockburn)

  11. Views Controllers Repositories Web Adapters External World Ports and Entities

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

    Services Interfaces Essential Things
  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.
  14. Entities Services Interfaces Controllers Repositories Web

  15. Views Controllers Repositories Entities Services Interfaces Web

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

  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)
  18. Business Case Descrição: • Criar uma aplicação que permite aos

    usuários da netflix votar nos seus filmes favoritos
  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
  20. None
  21. None
  22. None
  23. None
  24. None
  25. None
  26. None
  27. None
  28. None
  29. None
  30. User Payment Providers Image Processing External Communication

  31. Obrigado! E-mail: lucascavalcante@gmail.com Twitter: @lucascgomes https://joind.in/talk/3a6f3