Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[WDS2k20] Arquitetura de Software

[WDS2k20] Arquitetura de Software

Sempre rola uma frustração geral quando demoramos muito mais do que deveríamos para entregar uma feature que era pra ser simples. É aí que a arquitetura de software entra em ação! Com o objetivo de minimizar o trabalho de criar ou fazer modificações em um software, padrões arquiteturais dão um norte do que fazer ou não quando estamos criando ou modificando nossos projetos. Essa palestra irá apresentar o que é a Arquitetura de Software, porque ela existe, porque ela é importante e como ela funciona.

Camila Campos

March 21, 2020
Tweet

More Decks by Camila Campos

Other Decks in Programming

Transcript

  1. @camposmilaa Arquitetura de Software @camposmilaa #WDS2k20

  2. @camposmilaa CAMILA Faço uns códigos na Creditas Organizo o Rails

    Girls São Paulo Organizo o Women Dev Summit Tô no twitter como @camposmilaa Campos
  3. @camposmilaa Plataforma online Empréstimo com garantia Juros baixos pra você

    <3 creditas.com.br vagas.creditas.com.br @CreditasBR
  4. @camposmilaa Incluir mulheres em TI Workshop de Rails Inspiração railsgirls.com.br

    fb.com/railsgirls.sp @RailsGirlsSP
  5. @camposmilaa Junção de comunidades Incentivar mulheres em tech Palestras &

    Oficinas & Painéis womendevsummit.com fb.com/womendevsummit @WomenDevSummit
  6. @camposmilaa Arquitetura de Software @camposmilaa #WDS2k20

  7. @camposmilaa

  8. @camposmilaa

  9. @camposmilaa

  10. @camposmilaa

  11. @camposmilaa

  12. @camposmilaa

  13. @camposmilaa

  14. @camposmilaa

  15. @camposmilaa por quê?

  16. @camposmilaa por quê?

  17. @camposmilaa precisamos entregar logo. vamo assim mesmo! depois a gente

    volta e arruma .
  18. @camposmilaa big ball of mud

  19. @camposmilaa

  20. @camposmilaa

  21. @camposmilaa the fact is that making messes is always slower

    than staying clean. Uncle Bob
  22. @camposmilaa arquitetura

  23. @camposmilaa

  24. @camposmilaa

  25. @camposmilaa a good architecture screams intention

  26. @camposmilaa

  27. @camposmilaa

  28. @camposmilaa domain driven design (DDD)

  29. @camposmilaa

  30. @camposmilaa linguagem ubíqua

  31. @camposmilaa linguagem ubíqua cliente

  32. @camposmilaa linguagem ubíqua usuário cliente

  33. @camposmilaa linguagem ubíqua cif cliente

  34. @camposmilaa linguagem ubíqua cliente

  35. @camposmilaa linguagem ubíqua cliente cliente

  36. @camposmilaa arquitetura em camadas

  37. @camposmilaa presentation domain application rules infrastructure

  38. @camposmilaa presentation domain application rules infrastructure

  39. @camposmilaa presentation domain application rules infrastructure

  40. @camposmilaa domain application presentation infra

  41. @camposmilaa arquitetura clean

  42. @camposmilaa arquitetura onion

  43. @camposmilaa arquitetura hexagonal

  44. @camposmilaa domain application presentation infra

  45. @camposmilaa

  46. @camposmilaa

  47. @camposmilaa

  48. @camposmilaa é tudo “igual”!

  49. @camposmilaa qual a ideia?

  50. @camposmilaa independente de frameworks

  51. @camposmilaa independente de frameworks independente de ui

  52. @camposmilaa independente de frameworks independente de ui independente de banco

    de dados
  53. @camposmilaa independente de frameworks independente de ui independente de banco

    de dados independente de agentes externos
  54. @camposmilaa independente de frameworks independente de ui independente de banco

    de dados independente de agentes externos facilmente testável
  55. @camposmilaa regras do jogo

  56. @camposmilaa 1. respeita as camadas

  57. @camposmilaa

  58. @camposmilaa o que o sistema é o que o sistema

    faz
  59. @camposmilaa coisas que meu sistema “não liga”

  60. @camposmilaa comunicação do mundo externo com o core

  61. @camposmilaa 2. dependências só de fora pra dentro

  62. @camposmilaa

  63. @camposmilaa

  64. @camposmilaa

  65. @camposmilaa

  66. @camposmilaa mundo externo

  67. @camposmilaa mundo externo banco de dados

  68. @camposmilaa mundo externo web

  69. @camposmilaa mundo externo frameworks

  70. @camposmilaa mundo externo jobs agendados

  71. @camposmilaa mundo externo terminal

  72. @camposmilaa core application

  73. @camposmilaa

  74. @camposmilaa core application

  75. @camposmilaa o que faz o que é

  76. @camposmilaa

  77. @camposmilaa o que o sistema é (entidades) CLIENTE - cpf

    - nome - data de nascimento
  78. @camposmilaa o que o sistema é (entidades) IMÓVEL - rua

    - número - bairro
  79. @camposmilaa o que o sistema é (entidades) AUTOMÓVEL - placa

    - modelo - marca
  80. @camposmilaa o que o sistema é (entidades) GARANTIA - valor

    - dívidas
  81. @camposmilaa o que o sistema é (entidades) ANÁLISE DE RISCO

    - data - resultado
  82. @camposmilaa o que o sistema é (entidades)

  83. @camposmilaa o que o sistema faz (use cases) criar

  84. @camposmilaa o que o sistema faz (use cases) criar analisar

    risco
  85. @camposmilaa o que o sistema faz (use cases) criar descartar

    analisar risco
  86. @camposmilaa o que o sistema faz (use cases) criar conceder

    crédito descartar analisar risco
  87. @camposmilaa criar solicitação DADOS DE ENTRADA - dados do cliente

    - dados da garantia (casa ou carro) - dados da solicitação (valores) FLUXO 1. cliente pede um empréstimo com os dados acima 2. sistema valida os dados 3. sistema cria uma solicitação 4. sistema envia um email ao cliente com dados da solicitação
  88. @camposmilaa adapters

  89. @camposmilaa adapters presenter controller use case interactor fluxo de controle

    mundo externo
  90. @camposmilaa adapters presenter controller use case interactor fluxo de controle

    mundo externo
  91. @camposmilaa e a regra da ordem das dependências?

  92. @camposmilaa princípio da inversão de dependência presenter controller use case

    interactor fluxo de controle use case output port use case input port I I
  93. @camposmilaa princípio da inversão de dependência

  94. @camposmilaa por que isso é importante?

  95. @camposmilaa http://bit.ly/importancia-clean-arq

  96. @camposmilaa @cynthiazanoni

  97. @camposmilaa @juuh42dias

  98. @camposmilaa @juuh42dias

  99. @camposmilaa

  100. @camposmilaa foco em entregar a coisa certa

  101. @camposmilaa foco em entregar a coisa certa devs entendendo o

    business
  102. @camposmilaa foco em entregar a coisa certa devs entendendo o

    business manutenabilidade
  103. @camposmilaa foco em entregar a coisa certa devs entendendo o

    business manutenabilidade felicidade das devs
  104. @camposmilaa

  105. @camposmilaa frases impactantes para finalizar com chave de ouro

  106. @camposmilaa arquitetura [hexagonal/clean/etc] não é bala de prata

  107. @camposmilaa the only way to go fast, is to go

    well. Uncle Bob
  108. @camposmilaa any fool can write code that a computer can

    understand. good programmers write code that humans can understand. Martin Fowler
  109. @camposmilaa Agradecida! bit.ly/wds2k20-camila camposmilaa

  110. @camposmilaa Links legais (além dos livros citados) Clean Architecture -

    Uncle Bob https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html Screaming Architecture - Uncle Bob https://8thlight.com/blog/uncle-bob/2011/09/30/Screaming-Architecture.html Hexagonal Architecture - Alistair Cockburn http://alistair.cockburn.us/Hexagonal+architecture Hexagonal Rails - Matt Wynne http://blog.mattwynne.net/2012/05/31/hexagonal-rails-objects-values-and-hexagons/ Domain Driven Rails - Yan Pritzker https://vimeo.com/106759024 Clean Architecture - Uncle Bob https://www.youtube.com/watch?v=Nltqi7ODZTM Clean Architecture and Design - Uncle Bob https://www.youtube.com/watch?v=Nsjsiz2A9mg Hexagonal Rails - Matt Wynne https://www.youtube.com/watch?v=CGN4RFkhH2M
  111. @camposmilaa BONUS! . juntando tudo

  112. @camposmilaa user requests resource

  113. @camposmilaa user requests resource controller json

  114. @camposmilaa user requests resource request model controller tradução

  115. @camposmilaa user requests resource request model controller use case request

    model
  116. @camposmilaa user requests resource request model controller interação use case

    entity entity aggregate entity entity domain service
  117. @camposmilaa user requests resource request model controller repository database persistência

    use case entity entity aggregate entity entity domain service
  118. @camposmilaa user requests resource request model controller use case repository

    database persistência dip entity entity aggregate entity entity domain service
  119. @camposmilaa user requests resource request model controller result model repository

    database tradução use case entity entity aggregate entity entity domain service
  120. @camposmilaa user requests resource request model controller result model presenter

    repository database result model use case entity entity aggregate entity entity domain service
  121. @camposmilaa user requests resource request model controller result model presenter

    repository database result model dip use case entity entity aggregate entity entity domain service
  122. @camposmilaa user requests resource user gets resource back request model

    controller entity entity aggregate entity entity result model domain service presenter repository database json use case