Comando de armazenamento de objetos S3 Armazenamento em nuvem Mail.ru traduzi um artigo sobre quais critérios são importantes na escolha de um armazenamento de objetos. A seguir está o texto na perspectiva do autor.
Quando se trata de armazenamento de objetos, as pessoas normalmente pensam apenas em uma coisa: preço por TB/GB. É claro que essa métrica é importante, mas torna a abordagem unilateral e equipara o armazenamento de objetos a uma ferramenta de armazenamento de arquivos. Além disso, essa abordagem reduz a importância do armazenamento de objetos para a pilha de tecnologia empresarial.
Ao escolher o armazenamento de objetos, você deve prestar atenção a cinco características:
desempenho;
escalabilidade;
Compatível com S3;
resposta a falhas;
integridade.
Essas cinco características são novas métricas para armazenamento de objetos, juntamente com o custo. Vamos dar uma olhada em todos eles.
Desempenho
Os armazenamentos de objetos tradicionais carecem de desempenho. Os prestadores de serviços sacrificavam-no constantemente em busca de preços baixos. No entanto, com o armazenamento de objetos moderno as coisas são diferentes.
Vários sistemas de armazenamento se aproximam ou até excedem a velocidade do Hadoop. Requisitos modernos para velocidades de leitura e gravação: de 10 GB/s para discos rígidos a 35 GB/s para NVMe.
Essa taxa de transferência é suficiente para Spark, Presto, Tensorflow, Teradata, Vertica, Splunk e outras estruturas de computação modernas na pilha analítica. O fato de os bancos de dados MPP estarem sendo configurados para armazenamento de objetos sugere que eles estão sendo cada vez mais usados como armazenamento primário.
Se o seu sistema de armazenamento não fornecer a velocidade necessária, você não poderá usar os dados e extrair valor deles. Mesmo se você recuperar dados do armazenamento de objetos para uma estrutura de processamento na memória, ainda precisará de largura de banda para transferir os dados de e para a memória. Os armazenamentos de objetos legados não têm o suficiente.
Este é o ponto principal: a nova métrica de desempenho é a taxa de transferência, não a latência. É necessário para dados em escala e é a norma na infraestrutura de dados moderna.
Embora os benchmarks sejam uma boa maneira de determinar o desempenho, eles não podem ser medidos com precisão antes de executar o aplicativo no ambiente. Somente depois disso você poderá dizer onde exatamente está o gargalo: no software, nos discos, na rede ou no nível da computação.
Escalabilidade
Escalabilidade refere-se ao número de petabytes que cabem em um namespace. O que os fornecedores afirmam é escalabilidade fácil, o que eles não dizem é que, à medida que aumentam, os sistemas monolíticos massivos tornam-se frágeis, complexos, instáveis e caros.
A nova métrica de escalabilidade é o número de namespaces ou clientes que você pode atender. A métrica é obtida diretamente de hiperescaladores, onde os blocos de construção de armazenamento são pequenos, mas escalam para bilhões de unidades. Em geral, esta é uma métrica de nuvem.
Quando os blocos de construção são pequenos, é mais fácil otimizá-los para segurança, controle de acesso, gerenciamento de políticas, gerenciamento do ciclo de vida e atualizações sem interrupções. E, em última análise, garantir a produtividade. O tamanho do bloco de construção é uma função da controlabilidade da região de falha, que é a forma como os sistemas altamente resilientes são construídos.
A multilocação tem muitas características. Embora a dimensão fale sobre como as organizações fornecem acesso a dados e aplicações, também se refere às próprias aplicações e à lógica por trás de isolá-las umas das outras.
Características de uma abordagem moderna para multiclientes:
Em pouco tempo, o número de clientes pode crescer de várias centenas para vários milhões.
Os clientes estão completamente isolados uns dos outros. Isso permite que eles executem diferentes versões do mesmo software e armazenem objetos com diferentes configurações, permissões, recursos, níveis de segurança e manutenção. Isso é necessário ao dimensionar para novos servidores, atualizações e regiões geográficas.
O armazenamento é elasticamente escalável e os recursos são fornecidos sob demanda.
Cada operação é controlada por uma API e automatizada sem intervenção humana.
O software pode ser hospedado em contêineres e usar sistemas de orquestração padrão, como Kubernetes.
Compatível com S3
A API do Amazon S3 é o padrão de fato para armazenamento de objetos. Todo fornecedor de software de armazenamento de objetos afirma compatibilidade com ele. A compatibilidade com S3 é binária: ou está totalmente implementada ou não.
Na prática, existem centenas ou milhares de cenários extremos em que algo dá errado ao usar o armazenamento de objetos. Especialmente de fornecedores de software e serviços proprietários. Seus principais casos de uso são arquivamento direto ou backup, portanto há poucos motivos para chamar a API, os casos de uso são homogêneos.
O software de código aberto tem vantagens significativas. Abrange a maioria dos cenários de edge, dado o tamanho e a variedade de aplicativos, sistemas operacionais e arquiteturas de hardware.
Tudo isso é importante para desenvolvedores de aplicativos, por isso vale a pena testar o aplicativo com provedores de armazenamento. O código aberto facilita o processo – é mais fácil entender qual plataforma é a certa para sua aplicação. O provedor pode ser usado como ponto único de entrada no armazenamento, o que significa que atenderá às suas necessidades.
Código aberto significa: os aplicativos não estão vinculados a um fornecedor e são mais transparentes. Isso garante um longo ciclo de vida do aplicativo.
E mais algumas notas sobre código aberto e S3.
Se você estiver executando um aplicativo de big data, o S3 SELECT melhora o desempenho e a eficiência em uma ordem de magnitude. Isso é feito usando SQL para recuperar apenas os objetos necessários do armazenamento.
O ponto principal é o suporte para notificações de bucket. As notificações de bucket facilitam a computação sem servidor, um componente importante de qualquer arquitetura de microsserviço entregue como um serviço. Dado que o armazenamento de objetos é efetivamente armazenamento em nuvem, esse recurso se torna crítico quando o armazenamento de objetos é usado por aplicativos baseados em nuvem.
Por fim, a implementação do S3 deve oferecer suporte às APIs de criptografia do lado do servidor do Amazon S3: SSE-C, SSE-S3, SSE-KMS. Melhor ainda, o S3 suporta proteção contra adulteração que é verdadeiramente segura.
Resposta às falhas
Uma métrica que provavelmente é frequentemente esquecida é como o sistema lida com falhas. As falhas acontecem por vários motivos e o armazenamento de objetos deve lidar com todos eles.
Por exemplo, existe um único ponto de falha, a métrica disso é zero.
Infelizmente, muitos sistemas de armazenamento de objetos usam nós especiais que devem ser habilitados para que o cluster funcione corretamente. Isso inclui nós de nomes ou servidores de metadados - isso cria um ponto único de falha.
Mesmo onde existem vários pontos de falha, a capacidade de resistir a falhas catastróficas é fundamental. Os discos falham, os servidores falham. A chave é criar software projetado para lidar com falhas como uma condição normal. Se um disco ou nó falhar, esse software continuará funcionando sem alterações.
A proteção integrada contra eliminação e degradação de dados garante que você possa perder tantos discos ou nós quantos blocos de paridade tiver – geralmente metade dos discos. Só então o software não conseguirá retornar dados.
A falha raramente é testada sob carga, mas tais testes são necessários. A simulação de uma falha de carga mostrará os custos totais incorridos após a falha.
Consistência
Uma pontuação de consistência de 100% também é chamada de consistência estrita. A consistência é um componente chave de qualquer sistema de armazenamento, mas uma consistência forte é rara. Por exemplo, ListObject do Amazon S3 não é estritamente consistente, é consistente apenas no final.
O que significa consistência estrita? Para todas as operações após uma operação PUT confirmada, deve ocorrer o seguinte:
O valor atualizado fica visível durante a leitura de qualquer nó.
A atualização está protegida contra redundância de falha de nó.
Isso significa que se você desligar o plugue no meio de uma gravação, nada será perdido. O sistema nunca retorna dados corrompidos ou desatualizados. Este é um padrão elevado que é importante em muitos cenários, desde aplicativos transacionais até backup e recuperação.
Conclusão
Estas são novas métricas de armazenamento de objetos que refletem os padrões de uso nas organizações atuais, onde desempenho, consistência, escalabilidade, domínios de falha e compatibilidade S3 são os blocos de construção para aplicativos em nuvem e análise de big data. Recomendo usar esta lista além do preço ao construir pilhas de dados modernas.