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

Boa Andre, excelente post!

Pra exemplificar, na última API que construi em Node, deixei as imagens na pasta /public e no app.js onde estavam as rotas, coloquei um endpoint da seguinte forma:

app.use('/images', express.static('public'));

No banco, havia um campo imageUrl que tinha uma string tipo essa: "/images/heineken_600ml.jpg"

Dessa forma, no front, ficou bem performático e meu banco no back bem enxuto. Mas essa solução só me veio depois de tentar guardar os arquivos dentro da chave 😂

Carregando publicação patrocinada...
1
1

Vou ser bem sincero contigo Andre, não cheguei a escalar uma aplicação ainda pra mais de um servidor. Vou te dever essa resposta por ora! Mas, estou sempre disposto a aprender novas soluções! Se tiver um bizu, estou anotando!

2

Serviços para armazenamento de arquivos estáticos pode ser uma boa solução. Fica a dica de alguns que já usei:

  • Google Cloud Storage;
  • AWS S3;
  • Azure blob;
1

Nesse caso que você citou Otto, é necessário salientar que, o uso de um docker, ou outra solução do mesmo tipo fica debilitada, uma vez que, a cada nova execução, um novo container é criado(e caso sejam múltiplos contêineres balanceados entre si, cada um possui sua própria pasta public, com arquivos diferentes, ao mesmo tempo, o que não seria legal), e assim seriam perdidas todas as imagens, além disso, tem que pensar bem na hora de disponibilizar determinados conteúdos na pasta public, uma vez que, sem a devida autenticação podem ocorrer os casos em que usuários mal intencionados vasculham essas rotas buscando imagens de outros usuários, nesse caso, penso que uma segunda autenticação, ou verificação de propriedade de um usuário sobre um determinado conteúdo antes de ser disponibilizado seria uma boa. Vale a pena testar isso depois, vou ver se faço e publico o resultado por aqui!

1

Bem pensado Tulio. Eu não cheguei a pensar nisso pois subi o back num container do docker e como o uso era local, não me preocupei com esse detalhe. Mas muito bem colocado, acredito que uma autenticação através de um middleware caia muito bem nesse caso.