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

Arquitetura Evolutiva

Arquitetura Evolutiva

Avatar for Diego Borges

Diego Borges

June 21, 2021

Other Decks in Technology

Transcript

  1. SOBRE MIM... Oi, meu nome é Diego. Sou de Minas

    e tenho mais de 8 anos de experiência em desenvolvimento web. Apaixonado pelo estudo de música, design, programação e testes. Atualmente trabalho como Engenheiro de Software e escrevo sobre desenvolvimento e carreira.
  2. “É um conjunto de decisões difíceis de serem mudadas no

    futuro.“ - Martin Fowler (Tradução livre)
  3. “Um arquiteto permite que decisões importantes sejam adiantadas, mas bom

    arquiteto maximiza o número de decisões não tomadas.“ - Uncle Bob (Tradução livre)
  4. ARQUITETURA DE SOFTWARE EM UM CENÁRIO DE INCERTEZAS A mudança

    é inevitável, evolução, entretanto, é opcional. - Tony Robbins (Tradução livre)
  5. Uma arquitetura evolutiva suporta mudanças contínuas e incrementais como um

    primeiro princípio por meio de vários aspectos. - Rebecca Parsons (Tradução livre)
  6. ASPECTOS TÉCNICOS ASPECTOS NEGÓCIO • Linguagens de Programação • Bibliotecas

    • Ferramentas • Padronização • Performance • Modelo comercial • Inovação dos concorrentes • Necessidades dos clientes • Parcerias de negócio • Legislação
  7. Uma arquitetura não deve apenas atender as demandas dos usuários,

    desenvolvedores e proprietários em um determinado momento, mas também corresponder a essas expectativas ao longo do tempo. - Uncle Bob (Arquitetura Limpa)
  8. Se você acha que uma arquitetura boa é cara, experimente

    uma ruim. - Brian Foote e Joseph Yoder (Tradução Livre)
  9. Softwares podem até ser feitos do mesmo material que os

    sonhos (a mente humana), mas funcionam no mundo físico. - Uncle Bob (Arquitetura Limpa)
  10. Complexidade é o que torna o software difícil de ser

    modificado. - Ralph Johnson (Tradução livre)
  11. COMPLEXIDADE ACIDENTAL COMPLEXIDADE ESSENCIAL É aquela que surge durante o

    processo de desenvolvimento e ela é causada pela abordagem escolhida para resolver o problema. É basicamente a complexidade que existe no problema que o nosso software se propõe a resolver.
  12. Criar uma estrutura mais complexa que o necessário, não faz

    de você um bom arquiteto só satisfaz o seu ego. - Diego Borges (vulgo EU)
  13. • Evite decisões que você não pode reverter • Evite

    dependências (bibliotecas, frameworks, serviços, ferramentas ou linguagens) sempre que puder • Se é impossível reverter, é impossível refatorar • Existem algumas poucas coisas que não podem ser reversíveis
  14. O custo é qualquer retrabalho em potencial que tenha que

    ocorrer uma vez que uma decisão tenha sido tomada - Rebecca Parsons (Tradução livre)
  15. Quando decisões importantes são tomadas antes do momento necessário, no

    momento necessário essas decisões serão dificilmente revertidas.
  16. Definidor e executor: Contempla os aspectos práticos que envolvem a

    melhor maneira de se executar diferentes atividades. Garantindo que os processos de teste, CI/CD e definições estratégicas do ponto de vista operacional estejam sendo realizados corretamente (ou seja, do “como fazer”).
  17. Mentor: Compreende os aspectos de formação e direcionamento contínuo das

    pessoas para realização das suas atividades. A preocupação com esta disciplina é tornar todos do seu responsáveis pela arquitetura em alguma proporção. Melhores hoje do que foram ontem. A melhor maneira de alcançar essa evolução é através de code-reviews e desenvolvimento em pares, tornando o tempo de produção também um tempo de formação.
  18. Parceiro do negócio: Trata de questões que envolvem a visão

    macro da situação da arquitetura, podemos dizer que tem a preocupação com o ponto de vista tático (ou seja, do “porquê e o que fazer”). Para isso, precisamos criar uma estrutura de gestão que nos permita compartilhar com os demais membros do time assuntos como riscos e roadmap. Garantindo um melhor entendimento do contexto do projeto para todos.
  19. Todos devem ter abertura para discutir o futuro da arquitetura,

    mas temos o dever de ser guardiões dela.
  20. Construir software é como jogar um jogo multi-player. Embora a

    maioria das pessoas ajam como um jogo de single-player. - Zeno Rocha