Melhor resposta
Eu sugeriria duas alternativas de código aberto para S3, mas antes de ir, lembre-se de que S3 é muito avançado e todas as outras alternativas estão tentando alcançar o S3 com APIs compatíveis e o que não, quando se trata de vencer o S3, ninguém está nem perto.
- Openstack Swift: Swift é um armazenamento de objeto / blob altamente disponível, distribuído e eventualmente consistente. As organizações podem usar o Swift para armazenar muitos dados de maneira eficiente, segura e econômica. Objetos e arquivos são gravados em várias unidades de disco espalhadas por servidores no datacenter, com o software OpenStack responsável por garantir a replicação e integridade dos dados em todo o cluster. Os clusters de armazenamento são dimensionados horizontalmente simplesmente adicionando novos servidores. Se um servidor ou disco rígido falhar, o OpenStack replica seu conteúdo de outros nós ativos para novos locais no cluster. Como o OpenStack usa lógica de software para garantir a replicação e distribuição de dados em diferentes dispositivos, discos rígidos e servidores de baixo custo podem ser usados
- Ceph : It é uma plataforma de armazenamento de código aberto baseada em armazenamento de objetos que armazena dados em um único cluster de computador distribuído e fornece interfaces para armazenamento em nível de objeto, bloco e arquivo. e disponível gratuitamente
Como ambos são de código aberto, você pode implantá-lo internamente, sem se preocupar com o roubo de dados da Amazon (que nunca acontece).
Contras:
É um saco configurar o Swift e o Ceph, e você precisa de engenheiros dedicados para fazer isso . Mantê-los também é uma grande confusão e, a longo prazo, a menos que obtenha uma boa experiência, você se verá lutando. Não é aconselhável usar nenhum dos dois, a menos que você tenha muitos servidores redundantes ou esteja configurando um grande armazenamento interno que pode chegar a 50-500 petabytes.
PS: Eu sou o Openstack desenvolvedor, trabalhei extensivamente em Swift e Ceph, e meu trabalho diário envolve corrigir bugs e manter o cluster Openstack e Ceph.
Resposta
Eu diria que não há ” best “alternativas ao S3.
Se tudo que você precisa é armazenamento de objetos, então com certeza, existem muitas alternativas. Mas o S3 oferece funcionalidade (como notificações e a capacidade de executar funções Lambda em put / get / overwrite e outros eventos) que, neste ponto, não são comuns com nenhuma das alternativas.
Por exemplo, em um projeto recente, implementamos um mecanismo que, ao receber um arquivo armazenado no S3, dispararia uma função Lambda que extrairia os metadados do arquivo e os armazenaria no DynamoDB. Enquanto isso, um stream do DynamoDB acionaria outra função Lambda. Esta última função leria os metadados do DynamoDB e executaria diferentes tarefas, dependendo do tipo de arquivo do arquivo original no S3. Por exemplo, se o arquivo de origem fosse um arquivo de vídeo, Elastic Transcoder seria chamado para transcodificar o arquivo; se o arquivo de origem fosse uma imagem, um script gm (GraphicsMagick for Node.js) seria chamado para extrair os dados EXIF, criar miniaturas e atualizar os metadados do DynamoDB. Isso permitiu uma infraestrutura sem servidor para gerenciamento de conteúdo simples.