Slide 1

Slide 1 text

Arquitetura Hexagonal com Symfony

Slide 2

Slide 2 text

Lucas Cavalcante Software Engineer Professor

Slide 3

Slide 3 text

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.

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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)

Slide 7

Slide 7 text

Uncle Bob

Slide 8

Slide 8 text

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.

Slide 9

Slide 9 text

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.

Slide 10

Slide 10 text

Hexagonal Architecture (Alistair Cockburn)

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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.

Slide 14

Slide 14 text

Entities Services Interfaces Controllers Repositories Web

Slide 15

Slide 15 text

Views Controllers Repositories Entities Services Interfaces Web

Slide 16

Slide 16 text

Repositories Entities Services Dependency Inversion Principle (DIP) Interfaces

Slide 17

Slide 17 text

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)

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

User Payment Providers Image Processing External Communication

Slide 31

Slide 31 text

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