Arquitetura de software e a Clean Architecture

Arquitetura de software e a Clean Architecture

A importância da arquitetura de software e sobre a Clean Architecture, definida pelo autor Robert “Uncle Bob” Martin. Uma arquitetura simples, com foco em alguns pontos como testabilidade e independência de frameworks, bancos de dados e interfaces. Ira mostrar exemplos de como aplicar estes conceitos em projetos escritos em Golang, que podem ser aplicados em qualquer linguagem de programação.

0227f6274b8a6cce078d7f8a91460c41?s=128

Elton Minetto

October 31, 2020
Tweet

Transcript

  1. ARQUITETURA DE SOFTWARE E A CLEAN ARCHITECTURE

  2. Elton Minetto ๏ Escrevo códigos, sou professor, palestrante, e escritor

    ๏ Escrevo no https://eltonminetto.dev e no twitter ๏ Sou tech manager na Trybe
  3. Arquitetura de software

  4. None
  5. ! Uma biblioteca!

  6. None
  7. ! uma aplicação Rails?

  8. None
  9. ! uma aplicação Laravel?

  10. None
  11. ! uma aplicação Django?

  12. O que sua arquitetura "grita"?

  13. Olhando para a estrutura de diretórios do seu projeto, ele

    fala sou um sistema de contabilidade? ou sou um projeto Rails/Laravel/Django?
  14. None
  15. ! O sistema de uma biblioteca!

  16. Arquiteturas de software não são (ou não deveriam ser) sobre

    frameworks. Arquiteturas não deveriam ser fornecidas por frameworks. Frameworks são ferramentas para serem usadas.
  17. Arquiteturas de software deveriam falar sobre o sistema, não sobre

    os frameworks usados.
  18. Arquiteturas de software são estruturas que suportam os "use cases"

    do projeto.
  19. Uma boa arquitetura de software permite decisões como frameworks, bancos

    de dados, servidores, serem adiadas. Uma boa arquitetura de software permite que mudanças nestas decisões sejam fáceis de serem tomadas.
  20. None
  21. Clean Architecture

  22. ๏ The Clean Architecture ๏ Arquitetura Limpa: o Guia do

    Artesão Para Estrutura e Design de Software
  23. Premissas ๏ Independente de frameworks ๏ Testável ๏ Independente de

    UI ๏ Independente de Database ๏ Independente qualquer agente externo
  24. Divide nosso código em 4 camadas

  25. None
  26. Entities Encapsulam as regras de negócios de toda a empresa.

    Uma entidade pode ser um objeto com métodos ou um conjunto de estruturas de dados e funções. Não importa, desde que as entidades possam ser usadas por muitos aplicativos diferentes na empresa.
  27. Use Cases O software nesta camada contém regras de negócios

    especí fi cas do aplicativo. Ele encapsula e implementa todos os casos de uso do sistema
  28. Interface Adapters Adaptam e convertem os dados do formato usado

    pelas entidades e use cases para agentes externos como bancos de dados , web, etc
  29. Framework & Driver Frameworks e ferramentas como bancos de dados,

    frameworks web, etc. Esta camada é para onde vão todos os detalhes.
  30. None
  31. None
  32. Clean architecture em Go

  33. Camada Entity

  34. None
  35. Neste pacote temos a definição das entidades, das regras de

    negócio relacionada a elas e seus testes unitários
  36. Camada UseCase

  37. None
  38. Aqui implementamos as regras de negócio do nosso produto.

  39. Camada Framework & Driver

  40. None
  41. Camada Interface Adapters

  42. ๏ Numa aplicação podem existir diferentes formas de acesso aos

    UseCases. ๏ Um exemplo seria através de um aplicativo de linha de comando e a outro é usando uma API.
  43. None
  44. None
  45. Exemplo completo

  46. https://github.com/eminetto/clean-architecture- go-v2

  47. Referências

  48. ๏ Screaming Architecture ๏ The Clean Architecture ๏ Arquitetura Limpa:

    o Guia do Artesão Para Estrutura e Design de Software ๏ Clean Architecture, 2 anos depois ๏ Links sobre arquitetura de software
  49. Perguntas https://eltonminetto.dev https://twitter.com/eminetto elton.minetto@betrybe.com