Pular para o conteúdo

Arquitetura de software · Dados · 6 min de leitura

Armazenamento de objetos: arquivos, imagens e vídeos em escala

Por que fotos e vídeos não vão no banco de dados: buckets, URLs assinadas para upload direto, CDN na frente e classes de armazenamento por custo.

App → API: 1 · pede upload1 · pede uploadApp → Bucket: 2 · envia direto2 · envia diretoAPI → Banco: chave do arquivochave do arquivoCDN → Bucket: origemorigemAppAppAPI — gera URL assinadaAPIgera URL assinadaBanco — metadadosBancometadadosBucket — S3 e compatíveisBucketS3 e compatíveisCDNCDN

Arraste para o lado para ver o diagrama inteiro.

Os bytes nunca passam pela API: ela só autoriza o envio e guarda a chave do objeto no banco.

Objetos, não arquivos

Um armazenamento de objetos guarda blobs identificados por uma chave dentro de um bucket, com metadados. Não há pastas de verdade nem edição parcial: grava-se o objeto inteiro. Em troca, a capacidade é praticamente ilimitada, a durabilidade é altíssima e o custo por GB é baixo.

Padrões essenciais

  • URL assinada: a API gera um link temporário para o cliente enviar ou baixar direto do bucket, sem trafegar os bytes pelos seus servidores.
  • Banco guarda só a referência: chave, tamanho, tipo e dono.
  • CDN na frente para leitura rápida e barata.
  • Processamento assíncrono: um evento de “objeto criado” dispara miniaturas, transcodificação de vídeo e checagem de vírus.
  • Ciclo de vida: mover objetos antigos para classes mais baratas e apagar temporários.

Cuidados

Buckets públicos por engano são uma causa clássica de vazamento: mantenha privado por padrão e libere por URL assinada. Valide tipo e tamanho no envio e use chaves imprevisíveis para conteúdo privado.

Em resumo

Referências

Continue aprendendo

Todos os temas de arquitetura de software →