Descrição do problema: classes de armazenamento no Amazon S3
Amazon S3 (Simple Storage Service) oferece uma solução conveniente e acessível oportunidade para armazenar seus dados como objetos de forma global, escalável, performática e altamente disponível (até 11 noves de durabilidade). Hoje em dia, quase todas as empresas de P&D usam armazenamento de objetos para diferentes propósitos – desde armazenar pequenos artefatos, como pacotes de software e documentos, até as Golden Images multi-GB geradas por execuções de CI/CD ou os milhões de objetos de dados em datalakes multi-PB para os treinamentos de ML/IA.
O Amazon S3 é um armazenamento comum conveniente para diferentes serviços em sua infraestrutura, portanto, suas possibilidades de economia de custos são muito valiosas para todas as organizações.
O S3 como um armazenamento de objetos é muito mais acessível do que os volumes EBS do EC2 (armazenamento em bloco). Se olharmos e compararmos as classes de armazenamento básico mais comumente usadas no S3 e no EBS, descobriremos que o S3 é mais de 3x mais econômico do que o EBS – por exemplo, $0,023 por GB-mês no S3 Standard vs $0,08 por GB-mês no armazenamento SSD de uso geral do EBS. No entanto, diferentemente do armazenamento EBS, onde você reserva explicitamente a quantidade de dados que irá armazenar criando um volume EBS de algum tamanho, o S3 não limita a quantidade de dados que você pode colocar no armazenamento. De acordo com as estatísticas, mesmo pequenas organizações geralmente atingem mais de 50 TB em armazenamento de objetos após 2 a 3 anos de desenvolvimento, portanto, a questão da economia de custos no armazenamento de objetos se torna cada vez mais significativa para todos.
O Amazon S3 fornece diferentes classes de armazenamento para diferentes padrões de uso. A maioria das opções de salvamento são baseadas em configurações explícitas de classe de armazenamento para seu padrão de acesso GET. Portanto, se seus dados são endereçados com frequência, você prefere escolher a classe de armazenamento Standard (ela é aplicada por padrão, então provavelmente você a usa), enquanto você pode salvar se identificar claramente que não precisa que alguns objetos sejam acessados com frequência ou mesmo estiver pronto para esperar algum tempo (até 12 horas) para recuperar seus dados do armazenamento frio. Você pode ver Preços do Amazon S3 página para ver todas as opções disponíveis.
Embora você tenha a possibilidade de especificar a classe de armazenamento de acordo com seu padrão de uso, isso requer uma ação explícita de sua parte e também algum planejamento e pesquisa robustos antes de implementar isso, especialmente se você quiser otimizar a economia dos dados existentes.
É por isso que recomendo que você comece com a classe de armazenamento Intelligent-Tiering para seu armazenamento S3 existente e depois prossiga com as técnicas avançadas para os novos casos de uso.
O Intelligent-Tiering permite que o S3 detecte os objetos que não são acessados com frequência e altere a classe de armazenamento para eles, colocando-os no Infrequent Access Tier (cerca de 50% mais barato) ou mesmo nos Archive ou Deep Archive Access Tiers (cerca de 80% e 95% de economia, respectivamente). No entanto, como os Archive e Deep Archive Access Tiers não fornecem tempo de acesso em milissegundos, direcionar o Intelligent-Tiering para o Infrequent Access Tier é a maneira mais fácil e segura de economizar no armazenamento de objetos.
Quando devo usar o Intelligent-Tiering
Geralmente, recomendo definir o Intelligent-Tiering como uma configuração padrão para todos os dados que você coloca no armazenamento de objetos, exceto os dados para os quais você identificou claramente padrões de uso e tem serviços externos que usam os dados projetados para esse padrão de uso específico.
Os casos mais comuns quando os objetos não são acessados com frequência:
- artefatos de software de trabalhos de CI/CD
- histórico de logs
- backups de longo prazo da sua infraestrutura (aqueles que ainda precisam de RTO imediato)
- dados brutos para seus serviços de ML/IA, que já foram processados para eles (por exemplo, via Amazon Glue).
Como configurar o Intelligent-Tiering da maneira mais eficiente
Você pode definir a classe de armazenamento Intelligent-Tiering para os objetos enquanto estiver executando COLOCAR/PUBLICAR operações ou iniciação Upload multiparte. No entanto, isso obviamente não se aplica aos dados existentes.
A maneira mais óbvia de aplicar o Intelligent-Tiering aos dados existentes é alterar sua classe de armazenamento por meio do console S3: selecionando os objetos e navegando para Actions->Edit storage class. No entanto, você precisa executá-lo manualmente ou usar um PUT-Copiar Objeto Chamada de API. Há também um efeito colateral dessa maneira de alterar a classe de armazenamento – os objetos serão copiados, portanto, serão novos objetos, com a nova data da última modificação e metadados atualizados; você também precisará limpar cópias antigas de objetos por si mesmo se usar chamadas de API.
A maneira mais eficaz de aplicar o Intelligent-Tiering para objetos existentes e novos é definir uma regra de configuração do ciclo de vida do S3.
Para fazer isso, navegue até o console do S3 e selecione o bucket no qual você deseja configurá-lo.
Então:
- Navegue até a aba Gerenciamento
- Clique no botão “Criar regra de ciclo de vida” na seção Regras de ciclo de vida
- Dê um nome à sua regra, por exemplo, “Transição para camadas inteligentes”
- Você pode limitar o escopo desta regra pelo prefixo do objeto (parte do caminho para os objetos de destino dentro do bucket) ou tags de objeto, ou definir todos os objetos no bucket como um destino
- Marque “Transição de versões atuais de objetos entre classes de armazenamento” e “Transição de versões anteriores de objetos entre classes de armazenamento” na seção Ações de regras de ciclo de vida
- Defina a classe de armazenamento de destino “Intelligent tiering” e o limite de tempo (por exemplo, 30 dias) para ambas as transições
- Clique em “Criar regra”
A regra é criada e será aplicada diariamente ao escopo especificado.
Parabéns, você acabou de melhorar o uso do S3 e começou a economizar no armazenamento de objetos!
Max Bozhenko, Entusiasta e praticante de FinOps, CTO na Hystax