Estratégia de backup para arquivos enviados por usuários

2

Observação: Fazer o backup dos dados armazenados no Amazon S3 é semelhante mas bastante antigo, e não aborda a prática comum.

Nosso serviço envolve cada usuário fazer o upload de alguns arquivos. Existem centenas de milhares de usuários que continuarão aumentando.

Usamos a AWS para nossa infraestrutura e, atualmente, todos os arquivos são carregados e armazenados diretamente no S3. A pasta de nível superior tem cerca de 75 GB e está crescendo.

Durante muito tempo tivemos um script que faz um backup noturno copiando cada arquivo via API S3 para outra pasta. Nos últimos meses, o custo de armazenamento tornou-se enorme, então mudamos para o backup apenas quinzenalmente.

O motivo para manter backups é que o negócio depende dos dados enviados pelo usuário. Pense no Dropbox, no Flickr ou no Giphy.

Não estamos preocupados com a perda dos dados pelo S3, mas sim com o erro humano , que é mais provável, independentemente de quantas precauções tomarmos. Nesses casos, poderemos restaurar dados em um determinado momento.

No entanto, a estratégia de backup do S3 parece duvidosa, já que os backups não parecem estar acontecendo corretamente. O tamanho dos backups parece ser muito baixo algumas vezes, o que implica que as operações de cópia do S3 não se comportam - mesmo usando o console da Web S3 para copiar e colar uma pasta com um grande número de arquivos não funciona corretamente e trava após concluir parcialmente nos deixa ainda mais desconfiados de grandes operações de cópia no S3.

Estamos cientes do controle de versão do objeto S3, mas não parece ser a solução certa para um backup para mitigar os efeitos de erro humano, como excluir o intervalo.

Que estratégia de backup para arquivos as empresas que dependem dos arquivos enviados por usuários levam?

    
por Aditya 07.01.2018 / 15:31

2 respostas

2

Estratégias típicas incluem:

  1. Ativar o controle de versão do intervalo e
  2. Ativando a exclusão do MFA.

A ativação do controle de versão do intervalo preservará as versões do arquivo no caso de sobrescritos e exclusões. Se isso acontecer, você poderá restaurar uma versão anterior do arquivo.

Ativar a exclusão do MFA exigiria que alguém usasse uma chave MFA toda vez que desejasse excluir arquivos. A exclusão acidental é muito difícil neste caso.

A exclusão de um intervalo não é possível desde que o intervalo contenha dados. Então, para excluir um intervalo, alguém precisaria excluir todos os arquivos primeiro.

Você pode ficar mais strong adicionando uma política de bucket ao seu bucket evitando o comando s3:DeleteObject . Ao fazer isso, excluir objetos é proibido no nível do bucket; ninguém seria capaz de excluir objetos, mesmo que tivessem permissões e um dispositivo MFA.

Mais uma coisa que você pode fazer é duplicar seus arquivos em outro bloco. Usando as regras do ciclo de vida, seus objetos podem ser duplicados em outro bucket em outra região automaticamente, diariamente.

TL, DR, versionamento de buckets e exclusão de MFA geralmente são suficientes para evitar perda acidental de dados. Apenas um usuário mal-intencionado poderia realmente destruir os dados. Mas você também pode proteger seu bucket com uma política de buckets.

    
por 07.01.2018 / 18:51
1

Eu nunca confiaria em todas as informações críticas da minha empresa para um provedor ou local. O S3 mantém arquivos em vários locais com uma região, protegendo contra falhas de hardware apenas.

Eu tenho algumas ideias.

  1. Replicação entre regiões . Verifique se o intervalo na outra região tem o controle de versão ativado e certifique-se de que praticamente ninguém tenha acesso de gravação / exclusão.
  2. S3 sincroniza com um servidor. Esse servidor pode estar em execução em outra nuvem (Azure / Google) e armazená-los no armazenamento de objetos da outra nuvem. Como alternativa, pode ser um servidor no local ou hospedado e esse servidor pode executar backups incrementais.
  3. Use um provedor que irá sincronizar entre nuvens para você. Acredito que o Google tem um serviço que fará isso, o Azure também.
  4. Provavelmente existe uma maneira de fazer backups incrementais, com armazenamento no EBS, no Glacier ou em outro bucket do S3.

Se eu tivesse tempo para pensar mais, provavelmente conseguiria mais opções. Seu RTO e RPO irão realmente direcionar a solução.

    
por 07.01.2018 / 20:24