“a Mudança é a única constante…” – Heráclito (Filósofo)
As ferramentas, bibliotecas e frameworks utilizamos em nossas aplicações web de hoje são drasticamente diferentes das que usamos apenas poucos anos atrás.
em poucos anos a partir de agora, a maioria destas tecnologias terá mudado dramaticamente novamente. No entanto, muitos de nós fazemos disso uma parte central e inextricável de nossos aplicativos.
nós importamos, usamos e herdamos dos framewor-of-the-month como se todos eles fossem estar ao redor e inalterados para sempre. Bem … não são. E isso é um problema.Depois de mais de 20 anos de desenvolvimento, design e arquitetura de aplicações web, aprendi a apreciar duas verdades importantes.:
as dependências externas representam uma grande ameaça para a estabilidade e viabilidade a longo prazo de qualquer aplicação.
é cada vez mais difícil — se não impossível — construir qualquer tipo de aplicativo não-trivial sem alavancar dependências externas.
este artigo trata-se de conciliar estas duas verdades para que os nossos aplicativos tenham a maior chance de sobrevivência a longo prazo.A Toca do coelho é muito profunda.
Se começarmos a pensar em todas as coisas que nossos aplicativos web dependem é fácil de pensar em uma dúzia ou mais antes mesmo de chegar ao código:
> Alimentação
Conectividade
Firewall
DNS
Hardware do Servidor (CPU, Disco, memória Ram, …)
Refrigeração
Plataforma de Virtualização
Contêiner Plataforma
Sistema Operacional
Plataforma de Servidor Web
Servidor de Aplicativo da Plataforma
Navegador
Como desenvolvedores, é bom estar ciente dessas coisas, mas não há, muitas vezes, não há muito que possamos fazer sobre eles. Então, vamos ignorá-los por agora e falar apenas sobre o código.
este é um código escrito e de propriedade de nós ou da nossa organização.
2. Dependências que não controlamos
este é um código escrito por um fornecedor de terceiros ou comunidade de software de código aberto.
3. Dependências uma vez removidas
estas são as dependências de código das quais as dependências de código de terceiros dependem. (Diga isso três vezes rápido!)
vamos falar principalmente sobre dependências que não controlamos.
dependências que controlamos e dependências uma vez removidas ainda podem causar dores de cabeça, mas no caso de dependências que controlamos, devemos ser capazes de intervir diretamente e mitigar quaisquer problemas.
no caso de dependências uma vez removidas, podemos geralmente contar com um terceiro para cuidar dele para nós, uma vez que eles são dependentes destes, também.
Why third-party code dependencies are good
uma grande parte de sua aplicação web existe para resolver problemas comuns: autenticação, autorização, acesso aos dados, Tratamento de erros, navegação, registo, encriptação, visualização de uma lista de itens, validação de entradas do formulário, e assim por diante…
independentemente de qual pilha de tecnologia você usa, há uma boa chance de que soluções comuns para esses problemas existem, e estão disponíveis como bibliotecas que você pode facilmente adquirir e plug-in para a sua base de código. Escrever qualquer uma destas coisas completamente do zero é geralmente uma perda de tempo.
deve concentrar-se num código que resolva um problema pouco comum ou resolva um problema comum de uma forma pouco frequente. É isso que torna a sua aplicação valiosa: o código que implementa as regras de negócio que são únicas apenas para o seu aplicativo — o “molho secreto”.”
Google search and page ranking algorithm, Facebook timeline filtering, Netflix’s “recommended for you” section and data compression algorithms— the code behind all of these features is “secret sauce.”
código de terceiros — na forma de bibliotecas-lhe permite implementar rapidamente essas características mercantilizadas de seu aplicativo, para que você possa ficar focado no seu “molho secreto”.”
Por que o código de terceiros dependências são ruins
dê uma olhada em qualquer não-trivial de web-app construído no último par de anos e você vai ser absolutamente surpresa com a quantidade de código que realmente vem a partir de uma biblioteca de terceiros. E se uma ou mais dessas bibliotecas de terceiros mudarem drasticamente, desaparecerem ou quebrarem?Se for de código aberto, talvez possa consertá-lo você mesmo. Mas até que ponto compreende o código que não possui na biblioteca? Uma grande razão pela qual você usa uma biblioteca em primeiro lugar é para obter os benefícios do código sem ter que se preocupar com todos os detalhes. Mas agora estás preso. Amarraste completamente a tua fortuna a estas dependências que não possuis e que não controlas.