Executando verificação de segurança...
7

Recursos externos

Como vocês integram recursos de terceiros nos projetos de vocês?

Eu sou aquele tipo de pessoa que sempre prefere o certo do que o duvidoso, não gosto de arriscar muito. Sempre fico com um pé atrás em depender de terceiros pro meu programa funcionar, por mais que as fontes sejam empresas reconhecidas e que eu sei que dificilmente vai dar problema no servidor onde estão os recursos, tipo o fontawesome, bootstrap, etc.

Então sempre que inicío um projeto "sério", que eu vou disponibilizar pra outras pessoas, e que eu preciso de recursos externos, eu tendo a baixar mesmo o que preciso e deixar tudo na minha aplicação, mesmo que ela perca em performance. Eu sinto mais segurança assim.

E vocês? Como fazem na hora de integrar recursos de terceiros?

Carregando publicação patrocinada...
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.

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