Executando verificação de segurança...
Em resposta a Recursos externos
2

Rafa, esse é um questionamento muito valioso!

O que eu me pego perguntando é: toda dependência é um pedaço de código, e no momento zero não depende quem escreveu o código, se foi eu ou um outro autor, o que depende é o que vai acontecer dali para frente. Por exemplo: terei tempo e capacidade de continuar avaliando esse pedaço de código por bugs e brechas de segurança? Por compatibilidade com o restante do ecossistema que está ao redor dessa dependência?

Me pergunto isso, porque tudo dentro do seu sistema é código (de forma grosseira) e é "somente" uma questão de quem irá continuar atualizando suas partes.

Então importar o source code, ao invés de declarar como dependência externa, não faz seu sistema mais seguro. Muitas vezes vai deixar mais inseguro ao longo do tempo por não ser fácil de instalar os patches de segurança.

Carregando publicação patrocinada...
3

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.

2

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):

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ços A e B.

Se A tiver uma disponibilidade de 0,8 (80%) e B 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).