Hmm, interessante esse ponto de vista mano. O que eu quis dizer sobre isso foi mais a questão da disponibilidade dos recursos. Tipo, eu opto por linkar um recurso externo ao meu projeto, sendo assim meu projeto fica dependente de estar tudo ok com o servidor desse terceiro, ou seja, se por algum motivo o servidor deles cair, meu projeto fica com um buraco, podendo arruinar tudo. Por isso baixar o recurso (se possível), e integrar direto nos arquivos da aplicação, me parece mais seguro, em relação à dependência.
Ah perfeito! Bom, nesse caso continua sendo um tradeoff e é só tomar cuidado com a Síndrome do Não Inventado Aqui (Not Invented Here):
- https://en.wikipedia.org/wiki/Not_invented_here
- https://pt.wikipedia.org/wiki/N%C3%A3o_inventado_aqui
Em paralelo, quando você comentou sobre a indisponibilidade, me lembrou um post num blog escrito por Guillermo Rauch onde um dos tópicos se chama "Os microsserviços aumentam a complexidade e reduzem a disponibilidade" (Microservices increase complexity and reduce availability):
Lá ele coloca uma fórmula matemática muito interessante criada por Kevin Mahoney que ilustra o problema de disponibilidade entre serviços intra-conectados:
Vamos pegar o exemplo em que o serviço
C
depende dos serviçosA
eB
.Se
A
tiver uma disponibilidade de 0,8 (80%) eB
0,95 (95%),C
nas melhores hipóteses terá 0,8 (80% de disponibilidade), na média de 0,8 × 0,95 = 0,76 (76% de disponibilidade) e no pior caso 1 - ((1 - 0,8) + (1 - 0,95)) = 0,75 (75% de disponibilidade).