Quando utilizar Aurora?

SoftwareOne blog editorial team
Equipe de Redação
quando-utilizar-aurora-shutterstock-2482298189-blog-hero

Desde o início dos tempos, a humanidade busca maneiras para se reinventar, e aqui em nosso mundo de TI não poderia ser diferente, nos reinventamos todos os dias para buscar eficiência operacional, confiabilidade, durabilidade, segurança, agilidade, alta disponibilidade e, como acontece em todas as áreas, satisfação de nossos clientes. A AWS sempre busca uma maneira de se reinventar baseado nas necessidades de seus clientes, um bom exemplo disso é o Amazon Aurora que consegue responder a necessidade de um banco de dados relacional de alta performance.

Para quem não está familiarizado com o Amazon Aurora, este é um banco de dados relacional compatível com MySQL e PostgreSQL criado para nuvem que combina a performance e a disponibilidade de banco de dados empresariais como Oracle, SQL Server, e o benefício da simplicidade e economia de banco de dados de código aberto.

Segundo a própria AWS, o Amazon Aurora é até 5x mais rápido que banco de dados MySQL padrão e 3x mais rápido que bancos de dados PostgreSQL. O serviço oferece segurança, alta disponibilidade, confiabilidade de banco de dados comerciais por 1 décimo do custo. No formato PaaS e serverless, esta ferramenta é realmente fácil de gerenciar uma vez que é gerenciada pelo Amazon Relational Database Service (RDS) que automatiza tarefas administrativas e de infraestrutura como provisionamento de hardware, configuração de banco de dados, aplicação de patches e backups, permitindo que um cluster possa ser instalado em poucas horas seguindo as melhores práticas de TI e segurança. Com benefícios adicionais que somente são possíveis em nuvem, esta ferramenta oferece um sistema de armazenamento distribuído, tolerante a falha e com recuperação automática, escalabilidade que pode escalar automaticamente para até 128 TB por instância de banco de dados assim como altos níveis de performance e disponibilidade com até 15 réplicas de leitura de baixa latência, recuperação, backup contínuo para o Amazon S3 e replicação multi-az.

A diagram of the azure s3 data center.

Você deve estar se perguntando:  Tudo isso é excelente, mas onde e quando utilizar este produto?

Podemos trazer vários casos de uso quando utilizar este produto, como:

- aplicativos empresariais que exigem um banco de dados relacional de alta performance;

- aplicativos de software como serviço (SaaS) que exigem grande flexibilidade e escalabilidade de instâncias de armazenamento, alta performance e confiabilidade;

- Jogos web e aplicativos móveis criados para operar em grande escala que precisam de um banco de dados com alto throughput, escalabilidade de armazenamento massivo e alta disponibilidade. (para armazenamento sim, realtime a AWS tem o DynamoDB)

É em provável que o seu negócio já precisou ou utiliza soluções que exigem um motor de bando de dados de alta performance e baixo custo.

Benefício comprovado na prática:

Recentemente trabalhamos em um caso de uma aplicação JAVA ao qual responde alguns milhares de requisições por dia. Esta aplicação  executa em AWS Elastic Beanstalk com regras de auto-scaling configuradas e banco de dados RDS MySql. Esta aplicação possui uma inteligência para efetuar buscas por alguns sites pré-programados de forma totalmente automatizada, o que  gera uma grande quantidade de informações de alto volume , já que a mesma coleta captura de telas das respectivas consultas e acaba por armazenar em banco MySQL em formato de imagem. Avaliando a situação do servidor de banco, constatamos um tamanho de 2.7 TB e um espaço alocado de 5 TB, e a configuração de up-scaling de 10%, isto é, toda vez que o banco de dados chega perto do tamanho alocado, automaticamente o RDS MySQL aloca mais 10% de espaço.

Quando utilizar Aurora?

Neste cenário o desafio foi trazer uma solução de arquitetura com foco em performance, durabilidade,  escalabilidade. Você deve estar se perguntando:

  • Porque tanto espaço alocado assim já que o banco de dados só ocupa 2.7 TB dos 5TB alocados?
  • Como o Amazon Aurora, que é um produto para competir com grandes players do mercado, pode ser mais econômico que o RDS MySql?

Com esses principais questionamentos em mente, consideramos os seguintes pontos:

  • Custo efetivo de armazenamento, vimos que o RDS MySql tem um up-scaling de armazenamento automático, porém não tem o down-scaling de armazenamento automático, isto é, mesmo você executando seus processo de limpeza e liberando espaço, ele não reduz automaticamente o espaço alocado, fazendo assim só o up-scaling de armazenamento, pois em verdade o RDS MySql não permite efetuar esta redução, se você precisar efetuar este tipo de redução, você tem que criar uma nova instancia e mover sua instancia para esta nova área dimensionada de acordo com suas necessidades. Então neste ponto o Amazon Aurora tem como vantagem de conseguir fazer o redimensionamento de acordo com sua necessidade tanto aumentando o espaço alocado como reduzindo isto, tudo automaticamente, assim pagamos somente pelo espaço realmente necessário para execução saudável do banco de dados.
  • Considerando os custos operacionais, o Amazon Aurora conta com mais tarefas automatizadas comparadas ao RDS MySql, reduzindo os custos operacionais deste aplicativo. Isto é, nosso cliente também terá redução de esforço por parte de seu time operacional, viabilizando o direcionamento deste para inovação, novas funcionalidades, ou seja, para atividades que agregam mais valor ao negócio.
  • Facilidade para efetuar a migração do RDS MySQL, já que o Amazon Aurora é compatível com o MySql, não é necessário alterar nenhum comando ou drive da aplicação, visto que o Amazon Aurora utiliza o mesmo drive.
  • Performance até 5x mais rápido em comparação com RDS MySql, recuperação em caso de falha muito mais rápido, já que o Amazon Aurora mantém automaticamente seis cópias dos dados em três zonas de disponibilidade e tentará recuperar automaticamente o banco de dados em uma zona de disponibilidade íntegra. Isto nos permite ter um recurso computacional mais enxuto do que o utilizado pelo RDS MySql atualmente. Se você está OnPremises, como você faria para ter replicação em três zonas em regiões diferentes?
  • A tendência de um crescimento orgânico da aplicação, isto é, caso exista muitas instâncias o RDS Aurora faz o gerenciamento automático, e mesmo se acontecer falhas de respostas, podemos simplesmente adicionar réplicas o qual aumentará sua capacidade de resposta a requisições.
Quando utilizar Aurora?

Como fizemos

Baseado neste cenário, seguimos com migração do RDS MySQL para o Amazon Aurora utilizando a ferramenta AWS DMS (detalharemos em um próximo artigo), de uma forma totalmente automatizada, que garante integridade dos dados e downtime mínimo.

Quando utilizar Aurora?

E o custo, como ficou?

Para chegarmos na sugestão de migração para o Aurora, não olhamos somente a questão de performance, mas também fizemos o estudo de custos para que se prove a viabilidade técnica e financeira da solução proposta

Assim nosso estudo de custo se concluiu:

Quando utilizar Aurora?

Veja que provisionamos 2 instancias com 3TB, isto é, 1 instancias principal com tamanho de 3TB e 1 instancia de réplica com tamanho de 3TB.

Quando utilizar Aurora?

Para o RDS Aurora colocamos 2 Nós, um que consiste na instância principal e outro uma instância de réplica, com um armazenamento total de 6 TB, isto é, 3TB para cada instâncias.

Com esta infraestrutura conseguimos uma redução mensal de 51,86% utilizando a solução do Aurora, que ainda traz todos os benefícios técnicos que já falamos.

Assim como a AWS, para trazer o máximo de economia e performance que nosso cliente necessita, não nos contentamos em apenas movimentar o RDS MySQL para o Amazon Aurora, pois buscamos uma solução ainda mais eficiente utilizando um bucket S3 para armazenas os campos blobs (as imagens), uma vez que, o volume de campos blob chegava a praticamente 50% do tamanho total. Assim sugerimos a seguinte arquitetura:

  • Sacar os campos blobs para um bucket S3, já que estes campos ocupam um tamanho considerável de armazenamento. Neste caso fizemos esta transformação usando o AWS Glue, que falaremos em um próximo artigo.
  • Ajustar o código fonte da aplicação para passar a buscar e armazenar estes campos blobs diretamente do bucket S3.
  • Migração para Amazon Aurora utilizando o AWS DMS, técnica a qual detalharemos em um próximo artigo.
Quando utilizar Aurora?

Assim nosso estudo de custo se concluiu assim:

Quando utilizar Aurora?
Quando utilizar Aurora?

De fato, à primeira vista um banco de dados de código aberto como o RDS MySQL aberto em cloud parece ser sempre mais econômico do que utilizar um banco relacional proprietário, que neste caso é o Amazon Aurora e definitivamente existe uma série de outros fatores para se optar pelo Amazon Aurora.

Porém em nosso caso de uso, vimos que uma arquitetura computacional mais robusta, ao qual o Amazon Aurora foi desenvolvido, nos proporcionou utilizar um recurso computacional um pouco menor do que o utilizado atualmente pelo RDS MySQL com nível de performance ainda superior, com um custo de armazenamento inferior ao RDS MySQL e com o volume de armazenamento em questão, além de demostrar toda a facilidade de migração utilizando as próprias ferramentas AWS que neste caso foi o AWS DMS.

Além de todos os benefícios técnicos, com o trabalho de análise que foi realizado, alterando a forma de uso do banco de dados somado ao armazenamento mais barato do S3 foi possível uma redução ainda maior. Uma dica importante é buscar os produtos que podem atender seu cliente de acordo com a necessidade de cada um e simular a utilização nesta arquitetura proposta utilizando a própria calculadora da AWS, ir além e fazer uma análise mais profunda da aplicação, e assim ter todos os insumos para se tomar uma decisão.

Este artigo foi escrito por Diogo Jussani e Raphael Parra.

A pink, blue, and purple abstract background.

Comente esse artigo

Deixe seu comentário para sabermos o que você achou desse assunto.

Comente esse artigo

Deixe seu comentário para sabermos o que você achou desse assunto.

Author

SoftwareOne blog editorial team

Equipe de Redação

We analyse the latest IT trends and industry-relevant innovations to keep you up-to-date with the latest technology.