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

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.

Elton Minetto

October 31, 2020
Tweet

More Decks by Elton Minetto

Other Decks in Programming

Transcript

  1. ARQUITETURA DE
    SOFTWARE E A CLEAN
    ARCHITECTURE

    View Slide

  2. Elton Minetto
    ๏ Escrevo códigos, sou professor, palestrante, e
    escritor
    ๏ Escrevo no https://eltonminetto.dev e no
    twitter
    ๏ Sou tech manager na Trybe

    View Slide

  3. Arquitetura
    de software

    View Slide

  4. View Slide

  5. !
    Uma biblioteca!

    View Slide

  6. View Slide

  7. !
    uma aplicação Rails?

    View Slide

  8. View Slide

  9. !
    uma aplicação Laravel?

    View Slide

  10. View Slide

  11. !
    uma aplicação Django?

    View Slide

  12. O que sua arquitetura
    "grita"?

    View Slide

  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?

    View Slide

  14. View Slide

  15. !
    O sistema de uma biblioteca!

    View Slide

  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.

    View Slide

  17. Arquiteturas de software deveriam falar sobre o
    sistema, não sobre os frameworks usados.

    View Slide

  18. Arquiteturas de software são estruturas que
    suportam os "use cases" do projeto.

    View Slide

  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.

    View Slide

  20. View Slide

  21. Clean
    Architecture

    View Slide

  22. ๏ The Clean Architecture
    ๏ Arquitetura Limpa: o Guia do Artesão Para
    Estrutura e Design de Software

    View Slide

  23. Premissas
    ๏ Independente de frameworks
    ๏ Testável
    ๏ Independente de UI
    ๏ Independente de Database
    ๏ Independente qualquer agente externo

    View Slide

  24. Divide nosso código em
    4 camadas

    View Slide

  25. View Slide

  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.

    View Slide

  27. Use Cases
    O software nesta camada contém regras de
    negócios especí

    cas do aplicativo. Ele encapsula e
    implementa todos os casos de uso do sistema

    View Slide

  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

    View Slide

  29. Framework & Driver
    Frameworks e ferramentas como bancos de dados,
    frameworks web, etc. Esta camada é para onde
    vão todos os detalhes.

    View Slide

  30. View Slide

  31. View Slide

  32. Clean architecture em
    Go

    View Slide

  33. Camada
    Entity

    View Slide

  34. View Slide

  35. Neste pacote temos a definição das entidades, das
    regras de negócio relacionada a elas e seus testes
    unitários

    View Slide

  36. Camada
    UseCase

    View Slide

  37. View Slide

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

    View Slide

  39. Camada
    Framework &
    Driver

    View Slide

  40. View Slide

  41. Camada
    Interface
    Adapters

    View Slide

  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.

    View Slide

  43. View Slide

  44. View Slide

  45. Exemplo completo

    View Slide

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

    View Slide

  47. Referências

    View Slide

  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

    View Slide

  49. Perguntas
    https://eltonminetto.dev
    https://twitter.com/eminetto
    [email protected]

    View Slide