sábado, 11 de janeiro de 2014

AWS - Reduzindo custos aumentando performance com S3


   Avançamos um pouco mais no uso das soluções disponíveis pela Amazon. Já tínhamos experiência no uso de AutoScaling, IOPS, entre outros, mas o alvo desta vez foi quebrar paradigmas, então o que melhor do que evoluir na performance reduzindo custos! Parece impossível, mas não é com o S3 + Glacier.

   Trabalhando com volumes EBS conseguimos reduzir custos anteriormente e aumentar performance ao modificar o nível de RAID de 10 para 0 aumentando os IOPS dos discos, mas isso é assunto para um post posterior.

   Na busca por uma melhoria continua, onde priorizamos alta disponibilidade e confiabilidade, backup é um assunto sério. Porem o custo é um fator relevante ao priorizarmos alta disponibilidade e o dimensionamento é vital para uma política efetiva.

   Para tal, avaliando as soluções disponíveis de armazenamento da AWS(Amazon Web Services), realizamos a seguinte análise de custo:

S3 - $0.095 por GB
EBS standard - $0.10 por GB

   Ok, até ai, não temos grande vantagem, mas no S3 existe uma opção de 'lifecycle' dos arquivos/diretórios onde você pode enviá-los após um tempo para o Glacier, o qual é um serviço também de armazenamento, porém assíncrono e de baixo custo($0.010 por GB).

   Agora vamos calcular a vantagem, considerando o preço do dólar comercial a R$2.35, quando utilizamos 1TB de armazenamento durante um ano:

EBS: $0.10 * 1024 = $102.40 * 12 = $1228.80 * 2.35 = R$2.887,68
S3: $0.095 * 1024 = $97,28 * 12 = $1167.36 * 2.35 = R$2.743,30
Glacier: $0.010 * 1024 = $10,24 * 12 = $122,88 *2.35 = R$288,77

   Em resumo, mesmo utilizando o S3 é vantajoso, Glacier mais ainda. É recomendado o uso do S3 para dados estáticos ou até mesmo armazenamento de rotina de backups por necessidade de APIs para comunicar com os buckets. Idem para o Glacier com a seguinte consideração, dados no Glacier não serão disponibilizados em tempo real, pode haver um “delay”, resumindo seu uso se aplica apenas a backups.

   Exemplificando, podemos ter a seguinte política de backup:

   Após 45 dias os dados enviados ao S3 serão movidos para o Glacier e após 90 dias são excluídos sem necessidade de interação, isto graças a configuração de 'lifecycle' utilizada no bucket, ou em um determinado diretório do bucket, pois em um bucket podemos aplicar políticas de distintas de 'lifecycle'.

   Mas onde ganho performance no uso do S3? Ganha-se performance ao reduzir o custo com o S3+Glacier e utilizá-los onde realmente vale a pena.

   Dimensionamento de recurso é tudo.

   Mais informações em: http://aws.amazon.com/pt/s3/

   Agradecimento ao meu colega Guilherme Elias(https://twitter.com/guilhermelias) que me ajudou muito no post e também na implementação da solução.