Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Arquitetura Evolutiva - A retomada do ágil 18 anos depois

165 views

Published on

Uma visão prática de como podemos refletir sobre práticas de desenvolvimento de software 18 anos após a publicação do manifesto ágil.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Arquitetura Evolutiva - A retomada do ágil 18 anos depois

  1. 1. Arquitetura Evolutiva André Paulovich
  2. 2. André Paulovich Arquiteto de Sistemas - CI&T MCP | MCTS | MCT | MCAD | MCSD.Net | MVP Asp.Net 2011 à 2014
  3. 3. Desenvolvemos pessoas que inspiram grandes transformações. Ajudando empresas a desbloquearem seu potencial para se tornarem mais digitais, humanizadas e capazes de se adaptar com agilidade para gerar grandes experiências em escala e com velocidade. SOMOS UMA NOVA ESPÉCIE DE empresa.
  4. 4. NASCEMOS NO BRASIL. ALMEJAMOS O mundo. - Global Center em Belo Horizonte: O maior Centro CI&T de Excelência em Tecnologias Digitais do Brasil - Iniciativas inovadoras para as maiores corporações do mundo - Times globais: grandes oportunidades (devfestcarreiras.ciandt.com)
  5. 5. O que é arquitetura de software? “É um conjunto de decisões difíceis de serem mudadas no futuro.” Martin Fowler (tradução livre)
  6. 6. “Um arquiteto permite que decisões importantes sejam adiadas e um bom arquiteto maximiza o número de decisões não tomadas.” Uncle Bob (tradução livre) O que faz um arquiteto de software?
  7. 7. Arquiteto
  8. 8. Apesar de já terem se passado 18 anos do manifesto ágil...
  9. 9. Ainda é muito comum entendermos que as questões arquiteturais de um projeto precisam ser resolvidas antes do início do desenvolvimento. A isso damos o nome bonito de “setup” ou “sprint zero”. Mas no fundo ainda estamos utilizando Waterfall.
  10. 10. Arquiteto deveria ser um “Guia Turístico”
  11. 11. Arquitetura de software num cenário de incertezas...
  12. 12. Incertezas?
  13. 13. “Mudanças são inevitáveis. A evolução, no entanto, é opcional.” Tony Robbins (tradução livre) Mudanças são inevitáveis
  14. 14. “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) O que é arquitetura evolutiva?
  15. 15. Mudanças
  16. 16. Mudanças podem surgir de diferentes necessidades... Técnicas Negócio Linguagens de programação Bibliotecas Ferramentas Sistemas operacionais Padrões e Estilos Modelos comerciais Concorrência Necessidades dos clientes Novas integrações Legislações
  17. 17. Quebre os Silos!
  18. 18. Conway's law! Negócio Design Segurança Engenheiros DBA´s
  19. 19. Pagamento Estoque Venda Entrega Times MULTIdisciplinares! Conway's law!
  20. 20. PERDA Mantém Desenvolve Desenvolve Projeto Produto Desenvolve Desenvolve FIM MVP Release 2... Desenvolve Release 1... DataHierarquia InfalibilidadeLaborar Rede Colaborar Propósito Experimentação
  21. 21. Princípios!
  22. 22. Simplicidade: a arte de maximizar a quantidade de trabalho que não precisou ser feito.
  23. 23. Acidental Essencial A complexidade acidental é aquela que surge durante o processo de desenvolvimento, ou seja, ela é CAUSADA pela abordagem escolhida para resolver o problema. Já a essencial é basicamente a complexidade que nosso “software” se propõe resolver. SIM, infelizmente existem problemas complexos, e é neles que temos que focar. KISS
  24. 24. Dois tipos de complexidade... KISS
  25. 25. Gerir débitos técnicos Design Clean Design Tradicional Desvio... DOR Refatore constantemente
  26. 26. Início de um projeto Tempo Funcionalidades acumuladas Com gestão de débitos Sem gestão de débitos Débitos técnicos cobram juros! Refatore constantemente! Mesma “entrega” Manutenção de um sistema
  27. 27. Reversibilidade
  28. 28. Não tome decisões que você não pode reverter. Evite ser dependente de um framework, biblioteca ou linguagem. A reversibilidade tem um custo! Se o código é impossível de ser revertido, é impossível refatorar. Nem tudo precisa ser reversivel! Reversibilidade
  29. 29. Último momento de responsabilidade
  30. 30. Não é procrastinação Último momento de responsabilidade
  31. 31. Início de um projeto Tempo Entendimento Big Up Front Design! Decisões arquiteturais
  32. 32. Vamos evoluir esse pensamento...
  33. 33. Você pode substituir “big” por “enough”
  34. 34. Início de um projeto Tempo Entendimento Enough Up Front Design! Decisões arquiteturais
  35. 35. Último momento de responsabilidade Agora Depois SE... Então... Deixe para depois SE... Então... Deixe para depois SE... Qual a probabilidade de precisar disso? Alta = Faça já! Baixa = Adie também! Preciso disso agora?
  36. 36. Hey, Batman! Vamos criar um método assíncrono com validação dupla de criptografia nas requisições da API... YAGNI YAGNI (You Aren’t Gonna Need It)
  37. 37. MEDO
  38. 38. 80% RESULTADO 20% ESFORÇO “Boa parte das coisas, que lá no início, eu achava que ia precisar. Depois de algum tempo cheguei a conclusão que não precisava mais…” Paulovich Tente se manter focado no que é importante! Lembre-se de Pareto!
  39. 39. Decisões compartilhadas! Todos se tornam arquitetos! Realize constantemente reuniões para discutir próximos passos “arquiteturais”, garantindo à todos a possibilidade de contribuir… Isso aumenta o “ownership”! Solutions Reviews
  40. 40. Evolução
  41. 41. A arquitetura de um projeto é algo que precisa se desenvolver… não “nasce” pronta… A cada ciclo de entregas, você tem a oportunidade de criar uma nova “geração” da sua arquitetura. Maturidade 1 Maturidade 2 Maturidade 3 Maturidade n
  42. 42. Fachadas APIs Corporativas Microsserviços Nuvem LegadoNovaArquitetura Cliente / Servidor Maturidade Evolução em Gerações
  43. 43. Legado Novo Sistema Fachadas API Estoque API Pagamentos Boletos API Vendas Evolução em Gerações
  44. 44. Você é o resultado de 4 bilhões de anos de evolução bem sucedida. Não subestime o poder da evolução.
  45. 45. https://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf (Artigo - Martin Fowler) https://pt.slideshare.net/thekua/building-evolutionary-architectures (Slides - Patrick Kua) https://www.vectorstock.com/12540550 (Ilustração) https://www.youtube.com/watch?v=DngAZyWMGR0 (Vídeo - Making Architecture Matter - Martin Fowler Keynote) https://www.gislounge.com/defining-waterfall-and-agile-gis-project-management-styles/ (Artigo - Lowell Ballard) https://www.infoq.com/br/news/2016/04/evolutionary-architectures (Artigo - Jan Stenberg) http://equinocios.com/arquitetura/2017/03/03/Introducao-a-arquitetura-evolutiva/ (Artigo - Bruno Mazzo) https://www.youtube.com/watch?v=VEPwR4Hpi7M&t=25s (Vídeo - Evolutionary Architecture - Venkat) https://www.thoughtworks.com/insights/blog/microservices-evolutionary-architecture (Artigo - Neal e Rebecca) http://www.manifestoagil.com.br/principios.html (Paper - Manifesto Ágil) Referências
  46. 46. OBRIGADO

×