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.

[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura Evolutiva

185 views

Published on

Vamos discutir como trabalhar para garantir que o desenvolvimento de uma aplicação suporte as diferentes mudanças que são inevitáveis... sejam elas de negócio ou técnicas.

Published in: Software
  • Be the first to comment

[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura Evolutiva

  1. 1. André Paulovich Arquiteto de Sistemas - CI&T MCP | MCTS | MCT | MCAD | MCSD.NET MVP ASP.NET 2012, 2013 e 2014 andrepg@ciandt.com | @andrepaulovich
  2. 2. Onde?
  3. 3. Somos globais, presentes no Brasil, EUA, Europa, Japão e China. Excelência reconhecida pelo mercado com diversos prêmios e certificados desde a nossa fundação em 1995. Somos multiculturais, com uma legião de mais de 2000 talentos e suas incríveis histórias
  4. 4. Forte presença em regiões estratégicas Estados Unidos • Atlanta • Filadélfia • São Francisco • Somerset NJ • Nova Iorque Brasil • Campinas (sede) • Belo Horizonte • Rio de Janeiro • São Paulo UK • Londres China • Ningbo • Shangai Japão • Tokyo 3
  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. O que faz um arquiteto de software? “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)
  7. 7. Arquiteto Engenheiro...
  8. 8. Não muito tempo atrás...
  9. 9. Tudo anda dentro do prazo! INCLUSIVE a fase de DESIGN. Até o “fatídico dia” em que os desenvolvedores compilam o projeto pela primeira vez…
  10. 10. Nova “moda”...
  11. 11. Daí “aprendemos” que podemos trabalhar em ciclos curtos. Entrevistamos usuários, detalhamos funcionalidades e entregamos de maneira contínua “pedacinhos” de um sistema maior…
  12. 12. Arquiteto como “guia turístico” Jardineiro… Guia turistico...
  13. 13. Arquitetura de software num cenário de incertezas...
  14. 14. Incertezas?
  15. 15. Mudanças são inevitáveis...
  16. 16. O que é arquitetura evolutiva? “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)
  17. 17. Mudanças
  18. 18. 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
  19. 19. Quebre os Silos!
  20. 20. Conway's law! Negócio Design Segurança Engenheiros DBA´s
  21. 21. Na contramão da lei de Conway! Pagamento Estoque Venda Entrega Times MULTIdisciplinares!
  22. 22. PERDA Mantém Desenvolve Desenvolve Projetos vs Produtos Projeto Produto Desenvolve Desenvolve FIM MVP Release 2... Desenvolve Release 1...
  23. 23. Princípios!
  24. 24. KISS 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.
  25. 25. KISS Dois tipos de complexidade...
  26. 26. Refatore constantemente! Design Clean Design Tradicional Desvio... DOR Gerir débitos técnicos...
  27. 27. Início de um projeto Tempo Funcionalidades acumuladas Com gestão de débitos Sem gestão de débitos Manutenção de um sistema Débitos técnicos cobram juros! Refatore constantemente! Mesma “entrega”
  28. 28. Reversibilidade
  29. 29. Reversibilidade 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!
  30. 30. Último momento de responsabilidade
  31. 31. Não é procrastinação Último momento de responsabilidade
  32. 32. Início de um projeto Tempo Entendimento Big Up Front Design! Decisões arquiteturais
  33. 33. Vamos evoluir esse pensamento...
  34. 34. Você pode substituir “Big” por “Enough”
  35. 35. Início de um projeto Tempo Entendimento Enough Up Front Design! Decisões arquiteturais
  36. 36. Último momento de responsabilidade Preciso fazer agora? Qual o custo de adiar? 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!
  37. 37. YAGNI (You Aren’t Gonna Need It) Hey, Batman! Vamos criar um método assíncrono com validação dupla de criptografia nas requisições da API... YAGNI
  38. 38. MEDO
  39. 39. 80% RESULTADO 20% ESFORÇO Tente se manter focado no que é importante! Lembre-se de Pareto! “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
  40. 40. Solutions Reviews 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”!
  41. 41. Evolução
  42. 42. 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
  43. 43. Fachadas APIs Corporativas Microsserviços Nuvem LegadoNovaArquitetura Cliente / Servidor Maturidade Evolução em “gerações”
  44. 44. Legado Novo Sistema Fachadas API Estoque API Pagamentos Boletos Evolução em “gerações” API Vendas
  45. 45. Você é o resultado de 4 bilhões de anos de evolução bem sucedida. Não subestime o poder da evolução.
  46. 46. Obrigado! André Paulovich Arquiteto de Sistemas andrepg@ciandt.com | @andrepaulovich
  47. 47. 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) Referências

×