Tecnologias/04 - Armazenamento de Objetos/02 - Cloudflare R22 min
Cloudflare R2
Definição
Cloudflare R2 é um serviço de armazenamento de objetos. Ele mantém conteúdos como imagens, documentos, backups e arquivos de dados em buckets. Cada objeto tem uma chave, seu conteúdo e metadados.
Bucket: arquivos-aplicacao
Chave: clientes/42/relatorio.pdf
A chave identifica o objeto dentro do bucket. As barras permitem organizar nomes por prefixo; não representam a mesma hierarquia de diretórios de um sistema de arquivos. O R2 pode fornecer dados para aplicações web e conjuntos de dados para análise. Referência: visão geral do R2.
Como uma aplicação usa
flowchart LR
A[Aplicacao] -->|Grava e le objetos| R[Bucket R2]
A -->|Guarda chave e dono do arquivo| B[Banco de dados]
Em um sistema de relatórios, o PDF pode ficar no R2 e o banco manter a chave, o dono e o estado do relatório. Guardar o arquivo e atualizar o registro são operações distintas. Se uma delas falhar, a aplicação precisa tratar a inconsistência, por exemplo mantendo um estado pendente até confirmar ambas.
Consistência e cache
Operações de leitura após escrita, atualização de metadados, exclusão e listagem têm consistência forte no armazenamento R2. Depois de uma alteração concluída, uma leitura direta deve observar o estado atualizado.
Isso não invalida automaticamente uma cópia já guardada em cache. Um domínio público com cache pode continuar respondendo com conteúdo anterior até expirar ou ser invalidado. Alterações de permissões também têm regras de propagação próprias. Referência: modelo de consistência.
Armazenamento, processamento e entrega
- R2: mantém os objetos.
- Workers: podem executar lógica para receber pedidos e acessar o bucket por um binding.
- Cache/CDN: pode conservar respostas para entrega posterior, conforme a configuração.
- Motor analítico: interpreta arquivos como Parquet e executa consultas.
Um binding conecta o Worker a um recurso R2 disponível no seu ambiente; não torna sozinho esse recurso acessível publicamente. Referência: R2 em Workers.
Aprofundamento aplicado
Estado do objeto e estado do cadastro
Uma tabela pode dizer que o relatório está pronto enquanto o upload falhou; o bucket
pode conter um objeto cujo cadastro nunca confirmou. Modele estados como pendente,
pronto e falhou, com um processo de reconciliação para tentativas interrompidas.
Uma chave imutável por versão evita substituir conteúdo que leitores ainda usam. O banco guarda qual versão é atual; uma rotina posterior pode limpar versões que não precisam mais ser retidas, respeitando links e leitores em andamento.
Diagnosticar conteúdo antigo pelo caminho de leitura
Se a leitura direta do R2 mostra a versão nova e a URL pública mostra a antiga, investigue cache, TTL e invalidação. A consistência do armazenamento não exige que uma resposta já armazenada em CDN seja invalidada automaticamente. Referência: consistência e cache.
Exercício: desenhe upload, atualização do banco e resposta pública; provoque uma falha entre cada etapa. Resultado esperado: cada estado incompleto tem uma forma de detectar e corrigir a divergência, sem expor um arquivo como concluído prematuramente.
Relacionado: 2. Acesso Público, URLs Assinadas e CORS no R2 · 3. API S3, Custos e Limitações do R2 · 1. Amazon S3.
Parte de Cloudflare R2