sexta-feira, 8 de março de 2019

Fábrica de salsichas



#engenhariaDeSoftware #infraestrutura #TI
Vivemos uma explosão tecnológica atualmente. É um mar de acrônimos, siglas e nomes exóticos, formando um turbilhão imenso, o qual, se não tomarmos cuidado, acabará nos engolindo.

Para fugir deste turbilhão, é preciso pensar nas necessidades do seu cliente. O que é essencial para ele? Como podemos entregar um MVP? Qual é o seu orçamento? Quanto ele realmente espera gastar com o Projeto? Qual é o seu ciclo de produção e de manutenção?






Não transforme seu projeto em um monstro, pois a vítima pode ser você!

Este assunto surgiu porque respondi a uma pergunta, feita por um seguidor, que tem uma empresa de consultoria e estava planejando um novo software para seu cliente, uma empresa de médio porte.

Entre outras preocupações válidas, o meu seguidor queria utilizar A Entrega contínua do Gitlab, com Ansible, gerando imagens Docker para deploy no Kubernetes, mas estava querendo saber como poderia integrar o OpenShift, da RedHat, nessa solução.

Me veio à cabeça esta imagem:

E eu perguntei a ele qual era o escopo do Projeto. Seria entregar um novo software, ou implantar uma nova infraestrutura de TI. Sim, porque era isso que ele parecia estar fazendo.

"... mas eu quero usar Arquitetura de Microsserviços imutáveis..."


Ok, mea culpa! Tenho falado TANTO sobre isso, que posso estar levando as pessoas a um caminho ruim. Deixem-me clarear este aspecto. 
Arquitetura de microsserviços é muito "legal" mesmo, e agrega valor a uma empresa sim. Porém, há uma troca (um "tradeoff") embutido: Trocamos complexidade de desenvolvimento por complexidade de infraestrutura, e isto tem um custo!

É muito bacana construir um "pipeline" de Entrega contínua, que automaticamente faz deploy das novas versões em containers imutáveis separados! Muito legal mesmo, e ficaria ótimo no seu trabalho de graduação ou pós-graduação. Mas... seria assim tããão "legal" para o Cliente?

Todas estas novas tecnologias e padrões representam um crescimento na complexidade e nos custos de infraestrutura de TI, e estes custos crescem anualmente, como mostra esta pesquisa do Gartner:


Do jeito que me foi apresentada, esta solução implica imediatamente em uma reformulação total da infraestrutura de TI do Cliente, que, como me foi relatado, é uma empresa de médio porte, com um pequeno departamento de TI e poucos funcionários dedicados a isto.

"Entregai o software funcionando, que o resto virá depois, jovem Padawan!"


Na verdade, dá para você utilizar a arquitetura que quiser (monolítica, cliente/servidor ou microsserviços) sem complicar as coisas. Uma vez que o software esteja funcionando, você pode propor otimizações.

Você pensa que a Netflix já começou com essa infraestrutura monstruosa e sensacional que ela possui? Claro que não!

É claro que algumas coisas ajudam bastante, como desenvolver utilizando imagens de máquinas virtuais, pois facilitam a padronização e o deploy do novo software, mas daí a criar uma "fábrica de salsichas" (enfie um burro de um lado, que saem salsichas do outro...) é uma história completamente diferente.

Moral da história 


Fiz uns cálculos rápidos e concluí que aproximadamente 50% dos entregáveis do novo projeto estariam relacionados à infraestrutura necessária para sustentar o software, sendo os outros 50% dedicados a ele. É razoável pensar que esta divisão reflete no prazo e no preço final também.

O Cliente está gastando metade do orçamento em coisas que essencialmente desnecessárias! Sim, é claro que elas agregam valor, mas será que o Cliente quer e pode arcar com este "valor"?




Cleuton Sampaio, M.Sc.

Nenhum comentário:

Postar um comentário