DVC 13 - Arquitetura de Software com Rodrigo Branas e Elton Minetto

https://www.youtube.com/watch?v=t4o1tOV3q78

Notas Link to heading

  • Livro Building Evolutionary Architectures - Neil Ford - Lean Startup aplicado a arquitetura
  • (12:08) o objetivo da arquitetura de software é minimizar a quantidade de recursos que você precisa construir e manter required systems - Uncle Bob
  • (16:05) as decisões de arquitetura (por exemplo, a linguagem escolhida) restringem o design que você pode aplicar no código
  • (17:23) “na maior parte das empresas não faria diferença usar a linguagem A, B ou C”
  • (17:38) é importante mapear as decisões caras de mudar (por exemplo, OO ou funcional)
  • (19:20) tomada de decisão: gastar tempo em experimentação (PoC, método cientifico) para as decisões caras;
  • documentar: porque foi feito; o que foi testado; o caminho até a decisão, não somente a decisão final; contexto do momento da decisão (como no ADR)
  • (24:40) automatizar tudo o que puder dos “checks” das decisões. por exemplo, automatizar o check de determinado padrão do nome das PKs nos bancos; automatizar load tests
  • a decisão tem que vir do time porque é quem tem o contexto
  • Cuidado com o Career Driven Development - o que é bom para carreira nem sempre é bom para o produto/empresa. O foco tem que ser resolver o problema e não usar tech pra colocar no curriculo.
  • (28:28) Nunca resolver ou fazer o primeiro draft para o time. Sempre deixar a ideia partir do time e a judar a polir por meio de perguntas.
  • (30:20) Exemplo de baby steps: não precisa resolver tudo de uma vez. Por ser incremental. Exemplo: começar usando SQS que já estava disponível na stack ao invés de adicionar um Kafka.
  • Livro Enterprise Integration Patterns
  • Bounded Contexts?
  • Buy vs Build
  • (48:40) Transaction Script?
  • (51:35) Frameworks tem seu próprio design.
  • (53:25) Melhor um framework de comunidade do que interno - possibilidade de trazer pessoas que já conhecem.
  • (55:00) Balanço entre comportamento (negócio) e estrutura (tech/sustenta o comportamento).
    • Focar só no comportantamento tende a perder produtividade com o tempo, dificultar escala, contratação, retenção.
    • Focar só estrutura não entrega o negócio que sustenta a empresa.
  • Outside testing (comunidade Rails)?
  • (56:45) Testabilidade: olhar para hexagonal. A borda é expor para diferentes drivers (fila, HTTP, CLI, etc.).
  • (59:33) CRUD: esqueça o banco ao modelar API REST.