Amazon Aurora: O que é, como funciona e como começar

Usando o Amazon Aurora por um tempo agora em várias empresas, vi em primeira mão como ela se destaca como um mecanismo de banco de dados relacional totalmente gerenciado, oferecendo alto desempenho, escalabilidade e confiabilidade.

Como uma solução nativa de nuvem que suporta MySQL e PostgreSQL, Aurora é uma excelente escolha para empresas que requerem alta disponibilidade e dimensionamento automático. Como a AWS gerencia backups, failover e replicação automaticamente, usar o Aurora permite aumentar a eficiência do banco de dados enquanto reduz os custos de manutenção.

Neste tutorial, vou orientá-lo na configuração de uma instância do Aurora, gerenciando-a eficientemente, otimizando o desempenho e garantindo segurança e economia de custos.

O que é o AWS Aurora?

O Amazon Aurora é um banco de dados relacional baseado em nuvem que supera o MySQL e o PostgreSQL tradicionais ao escalar dinamicamente os recursos de armazenamento e computação. 

De acordo com a AWS, o Aurora pode oferecer até cinco vezes o throughput do MySQL padrão e três vezes o desempenho do PostgreSQL padrão – devido à sua arquitetura distribuída e altamente disponível.

O Aurora é construído com recursos como backups automatizados, réplicas de leitura para escalabilidade horizontal e mecanismos de failover que garantem um tempo de inatividade mínimo. 

A camada de armazenamento do Aurora é projetada para ser tolerante a falhas e auto-recuperável. 

Além disso, os dados são automaticamente replicados em várias Zonas de Disponibilidade (AZs) para garantir durabilidade.

A imagem abaixo fornece uma visão geral da arquitetura e principais características do Amazon Aurora.

A relação entre o volume do cluster, instância de banco de dados escritor e instâncias de banco de dados leitor em um cluster Aurora. Fonte: Documentação da AWS

O mecanismo de banco de dados monitora continuamente as consultas e otimiza os planos de execução, resultando em melhorias significativas de eficiência.

Um dos principais benefícios do Aurora é sua compatibilidade com os bancos de dados existentes do MySQL e PostgreSQL, o que torna fácil para as empresas migrarem sem precisar modificar extensivamente suas aplicações.

A estrutura de custos do Aurora também é atrativa. Ele cobra com base no uso real dos recursos de computação e armazenamento. Esse modelo de custos elimina a necessidade de superdimensionar a infraestrutura, o que por sua vez economiza dinheiro.

> Se você tem interesse em entender melhor as opções de armazenamento da AWS, confira este Tutorial de Armazenamento da AWS.

Configurando o AWS Aurora

Configurar o AWS Aurora envolve a criação de um cluster de banco de dados, a configuração das configurações de segurança e garantir o acesso adequado à rede. Vamos fazer isso nesta seção!

> Se você é novo na AWS, considere revisar tópicos fundamentais com o curso de Introdução à AWS antes de mergulhar no Aurora.

Criando um cluster de banco de dados Aurora

A configuração de um cluster de banco de dados Aurora requer algumas etapas-chave, incluindo a seleção do mecanismo de banco de dados apropriado, a configuração das configurações de segurança e a definição das especificações da instância.

  • Para começar, faça login no Console de Gerenciamento da AWS e acesse o painel do RDS (Serviço de Banco de Dados Relacional).
    • Você pode fazer isso pesquisando por “Aurora” no painel de busca do Console de Gerenciamento da AWS – conforme mostrado na imagem abaixo.

  • Uma vez lá, clique em “Criar Banco de Dados” – conforme mostrado na imagem abaixo.

  • Em seguida, você terá a opção de escolher “Amazon Aurora” como motor do banco de dados.
    • Lembre-se de que a Aurora suporta tanto MySQL quanto PostgreSQL, então é importante selecionar a versão que melhor atenda aos requisitos de sua aplicação.

A imagem abaixo mostra as opções de motor que estão atualmente disponíveis. Estas podem mudar no futuro, mas as duas primeiras opções—Aurora (compatível com MySQL) e Aurora (compatível com PostgreSQL)—são os motores Aurora.

  • Após selecionar o motor, você deve especificar o tipo de instância e as configurações de armazenamento.
    • A Aurora oferece a flexibilidade de escalar automaticamente o armazenamento até 128TB, garantindo que cargas de trabalho crescentes sejam tratadas de forma eficiente sem necessidade de intervenção manual.
  • O próximo passo é definir as configurações de replicação. Você pode optar por uma implantação de instância única ou habilitar réplicas de leitura para distribuir o tráfego do banco de dados de forma mais eficaz.
    • O uso de réplicas de leitura também melhora a disponibilidade e a tolerância a falhas, garantindo maior durabilidade em caso de falhas.

A imagem abaixo destaca a seção “Disponibilidade & durabilidade”, onde você pode configurar essas definições.

  • A etapa de configuração de rede é crucial, pois envolve a configuração da Virtual Private Cloud (VPC), seleção de um grupo de segurança e definição de controles de acesso.
    • Um grupo de segurança atua como um firewall que regula o tráfego de banco de dados de entrada e saída. Para aumentar a segurança, é recomendável permitir o acesso apenas de endereços IP e aplicativos confiáveis.

A imagem abaixo destaca a seção “Conectividade”, onde você pode configurar e personalizar essas configurações.

  • As credenciais do banco de dados também devem ser configuradas durante a instalação – onde você atribui um nome de usuário e senha mestre que serão usados para autenticar conexões.
  • O Aurora permite que backups automatizados e opções de recuperação ponto-a-ponto sejam ativados. Isso garante que snapshots do banco de dados sejam criados consistentemente para evitar perda de dados.

Após revisar todas as configurações, você pode prosseguir com a criação do cluster do Aurora. A imagem abaixo mostra o botão “Criar Banco de Dados” que você pode clicar para iniciar o processo de criação.

O processo de provisionamento pode levar vários minutos, dependendo do tamanho da instância selecionada e das configurações de rede.

> Se você é novo nos serviços da AWS, revisar oo curso de Tecnologia e Serviços da AWS pode ajudar você a entender os principais conceitos da AWS relevantes para a configuração do Aurora.

Configurando rede e segurança

A segurança é crítica para gerenciar um banco de dados Aurora, e a AWS fornece várias ferramentas para impor controles de acesso rigorosos.

  • O primeiro passo para proteger uma instância Aurora é configurar grupos de segurança VPC. Esses grupos de segurança determinam quais endereços IP e serviços podem interagir com o banco de dados.
    • Você deve limitar o acesso a servidores de aplicativos específicos e administradores para evitar conexões não autorizadas.
  • O AWS Identity and Access Management (IAM) também pode ser usado para definir permissões detalhadas para operações de banco de dados.
    • A integração de funções do IAM permite personalizar o acesso ao banco de dados de acordo com os papéis e responsabilidades específicos do usuário.
    • Por exemplo, os desenvolvedores de aplicativos podem ter apenas acesso de leitura, enquanto os administradores terão controle total sobre as modificações no banco de dados.
  • A criptografia também deve ser ativada para proteger dados sensíveis. O AWS Aurora suporta criptografia em repouso e em trânsito usando o AWS Key Management Service (KMS).
    • A criptografia de dados em repouso garante que, mesmo que o meio de armazenamento seja comprometido, os dados permaneçam inacessíveis sem a chave de descriptografia adequada.
    • Da mesma forma, habilitar a criptografia Secure Sockets Layer (SSL) para dados em trânsito impede a interceptação não autorizada das comunicações do banco de dados.

> Para uma análise mais aprofundada sobre a segurança de ambientes AWS, dê uma olhada no curso de Segurança e Gerenciamento de Custos da AWS. Se você deseja aprender mais sobre como o IAM funciona e como implementá-lo de forma eficaz, dê uma olhada neste guia sobre o Gerenciamento de Identidade e Acesso da AWS (IAM).

Conectando-se ao AWS Aurora

Conectar-se ao AWS Aurora é essencial para interagir com o banco de dados. Você pode fazer isso através de ferramentas ou aplicativos de cliente. Vamos ver como nesta seção!

Conectando-se ao Aurora MySQL

Assim que o banco de dados Aurora estiver em funcionamento, você precisa estabelecer uma conexão para começar a interagir com o banco de dados.

Para o Aurora MySQL, clientes de banco de dados comuns como MySQL Workbench e HeidiSQL podem ser usados para se conectar. Alternativamente, você pode usar interfaces de linha de comando.

A conexão requer especificar o endpoint do banco de dados, que pode ser encontrado no Console de Gerenciamento da AWS.

Usando o CLI do MySQL, a conexão pode ser estabelecida com o seguinte comando:

mysql -h your-cluster-endpoint -u admin -p

Após inserir a senha principal, você deve ser capaz de executar consultas SQL, criar tabelas e gerenciar dados.

Conectando-se ao Aurora PostgreSQL

Para o Aurora PostgreSQL, você pode se conectar usando ferramentas como pgAdmin ou a interface de linha de comando do PostgreSQL (psql).

O comando de conexão no psql segue este formato:

psql -h your-cluster-endpoint -U admin -d yourdatabasename

Assim como com o MySQL, as credenciais corretas devem ser inseridas para acessar o banco de dados.

Depois de obter acesso, você deve ser capaz de executar consultas SQL, criar tabelas e gerenciar dados.

Configurando a conectividade do aplicativo

Aplicações que precisam interagir com o Aurora devem ser configuradas com strings de conexão de banco de dados apropriadas. Geralmente, essas strings de conexão consistem no nome de usuário, senha, número da porta e endpoint. 

É recomendável que você utilize o pool de conexões para otimizar o desempenho e reduzir o custo de estabelecer novas conexões para cada solicitação. 

Bibliotecas populares como SQLAlchemy para Python ou JDBC para Java fornecem maneiras eficientes de gerenciar conexões em um ambiente de aplicativo.

Gerenciando o AWS Aurora

Gerenciar o AWS Aurora de forma eficaz envolve garantir a proteção de dados, monitorar o desempenho e dimensionar recursos conforme necessário. Nesta seção, revisaremos essas práticas.

Backups e snapshots

O AWS Aurora oferece backups automatizados que capturam e armazenam continuamente as alterações no banco de dados no Amazon S3. Esses backups são retidos com base em configurações definidas pelo usuário, permitindo a restauração para qualquer ponto dentro do período de retenção. 

Além dos backups automatizados, você também pode criar snapshots manuais que persistem além da janela de retenção. Snapshots manuais são particularmente úteis para arquivamento a longo prazo ou antes de realizar grandes atualizações no banco de dados. 

Quando trabalhei em um projeto com uma aplicação crítica, programávamos backups automatizados a cada duas horas.  No entanto, antes de fazer qualquer alteração ou atualização na aplicação, criaríamos manualmente um backup para garantir que pudéssemos reverter, se necessário. Isso demonstra como backups automáticos e manuais podem ser usados efetivamente juntos.

A imagem abaixo mostra como o AWS Backup pode ser usado para recuperação de desastres com o Amazon Aurora.

Opções de backup e recuperação para o Amazon Aurora. Fonte: Blogs da AWS

Monitorando o Aurora com o CloudWatch

O monitoramento de desempenho é essencial para manter um banco de dados saudável.

O AWS CloudWatch fornece métricas em tempo real que rastreiam a utilização da CPU, uso de memória, E/S de disco e tráfego de rede.

A configuração de alarmes do CloudWatch pode ajudar os administradores a serem notificados quando os limites de desempenho são excedidos, permitindo uma gestão proativa do banco de dados.

Além disso, o AWS Performance Insights oferece análise detalhada de consultas para identificar e otimizar consultas lentas.

A imagem abaixo demonstra como o AWS Performance Insights fornece insights sobre o desempenho do banco de dados.

Painel do AWS Performance Insights exibindo métricas de desempenho do banco de dados. Fonte: Documentação da AWS

Dimensionando o Aurora

O Aurora é projetado para dimensionar automaticamente ajustando a capacidade de armazenamento conforme necessário. No entanto, recursos de computação como CPUs e memória podem precisar ser ajustados manualmente, dependendo da carga de trabalho.

Aurora oferece opções para escalar a capacidade de leitura adicionando réplicas de leitura, que distribuem o tráfego de leitura e melhoram o desempenho.

Quando alta disponibilidade é crítica, um cluster Aurora pode ser configurado com várias réplicas em diferentes Zonas de Disponibilidade para garantir redundância em caso de falha.

Otimização de Desempenho no AWS Aurora

A otimização de desempenho no Amazon Aurora garante a execução eficiente de consultas e escalabilidade. Vamos revisar algumas melhores práticas nesta seção.

Indexação e otimização de consultas

Otimizar o desempenho das consultas no Amazon Aurora é crucial para manter um banco de dados de alto desempenho.

  • A indexação é uma das maneiras mais eficazes de reduzir o tempo de execução das consultas e aumentar a eficiência do banco de dados.
    • Criar índices em colunas frequentemente consultadas pode ajudar a localizar dados rapidamente, minimizando a necessidade de varreduras completas de tabelas.
    • Você deve usar estrategicamente índices primários e secundários para alinhar-se com os padrões de consulta e as demandas de carga de trabalho.
    • Além do acima, você pode empregar índices compostos para consultas que envolvem várias colunas para melhorar ainda mais os tempos de busca.
  • A otimização de consultas também desempenha um papel significativo no desempenho do banco de dados. Escrever consultas SQL eficientes garante que o Aurora processe solicitações mais rapidamente, com consumo mínimo de recursos.
    • Usar EXPLAIN ou EXPLAIN ANALYZE em consultas SQL ajuda a identificar gargalos e fornece insights sobre planos de execução. 
    • Técnicas como evitar SELECT * (que recupera dados desnecessários), normalizar o esquema do banco de dados para reduzir redundância e aproveitar estratégias de particionamento podem levar a ganhos de desempenho.
    • O otimizador de plano de consulta do Aurora refina continuamente os planos de execução, fazendo ajustes com base nos padrões de carga de trabalho do banco de dados, melhorando assim a eficiência geral.

Usando réplicas de leitura do Aurora

Para lidar com cargas de tráfego alto, o Amazon Aurora suporta réplicas de leitura que ajudam a distribuir consultas intensivas de leitura entre várias instâncias. 

As réplicas de leitura reduzem a carga na instância do banco de dados primário processando solicitações de leitura separadamente, o que melhora a responsividade e reduz a latência.

Para configurar uma réplica de leitura no Aurora, você precisará selecionar um cluster existente do Aurora e habilitar a replicação com uma configuração mínima. O Aurora sincroniza automaticamente os dados entre a instância primária e suas réplicas, garantindo consistência dos dados sem intervenção manual.

O mecanismo de replicação do Aurora é altamente eficiente, permitindo a sincronização de dados quase em tempo real com um atraso de replicação de menos de um segundo.

Aplicações que realizam operações de leitura frequentes, como painéis de relatórios ou serviços de análise, podem se beneficiar significativamente das réplicas de leitura direcionando consultas intensivas em leitura para essas instâncias.

No caso de uma falha na instância primária, uma réplica de leitura pode ser promovida para se tornar a nova instância primária com tempo de inatividade mínimo, garantindo alta disponibilidade e continuidade dos negócios.

A imagem abaixo mostra como réplicas do Aurora em regiões diferentes podem ajudar na recuperação de desastres e alta disponibilidade.

Réplicas de leitura do Aurora entre regiões para recuperação de desastres e alta disponibilidade. Fonte: Documentação da AWS

Estratégias de cache para o Aurora

O cache é uma técnica poderosa para melhorar o desempenho do banco de dados, reduzindo as cargas de consulta direta no Aurora. Uma camada de cache pode acelerar significativamente a recuperação de dados para consultas frequentemente acessadas.

O Amazon ElastiCache, que suporta Redis e Memcached, é comumente usado junto com o Aurora para armazenar resultados de consultas e evitar consultas redundantes ao banco de dados.

A integração de cache em uma arquitetura de aplicativo pode ajudar a melhorar os tempos de resposta, preservando os recursos de computação do banco de dados.

Estratégias de cache como write-through caching (onde os dados são gravados tanto no cache quanto no Aurora simultaneamente) e lazy loading (onde os dados são armazenados em cache apenas quando solicitados) ajudam a otimizar o desempenho com base nos padrões de uso.

Configurar um tempo de vida (TTL) apropriado para os dados em cache garante que o cache permaneça atualizado e evita a recuperação de dados obsoletos.

Segurança e conformidade no AWS Aurora

Assegurar a segurança do seu banco de dados Aurora é crucial para proteger dados sensíveis e garantir conformidade. Vamos revisar as melhores práticas nesta seção.

A criptografia de dados é fundamental para a gestão de banco de dados, e o AWS Aurora oferece mecanismos de criptografia robustos para proteger dados sensíveis.

  • O Aurora criptografa dados em repouso usando o AWS Key Management Service (KMS), o que garante que as informações armazenadas permaneçam seguras mesmo se o armazenamento subjacente for comprometido.
    • A habilitação da criptografia durante a criação do banco de dados garante que todos os backups automatizados, snapshots e réplicas herdem as mesmas configurações de criptografia.
  • Para dados em trânsito, o Aurora suporta criptografia SSL/TLS, que protege as conexões do banco de dados e impede o acesso não autorizado ou a interceptação das transmissões de dados.
    • Aplicações conectadas ao Aurora devem ser configuradas para usar certificados SSL a fim de manter a comunicação segura.

Essas medidas de criptografia podem ajudar você a cumprir as melhores práticas de segurança e requisitos regulatórios.

A imagem abaixo demonstra como o AWS KMS se integra ao Amazon Aurora para criptografar seu banco de dados.

O AWS Key Management Service (KMS) criptografa dados no Amazon Aurora para conformidade de segurança. Fonte: AWS Blogs

Integração IAM para controle de acesso

O controle de acesso no Aurora é gerenciado através do AWS IAM, que permite que administradores definam permissões granulares com base nos papéis dos usuários.

  • Políticas IAM podem ser usadas para restringir o acesso às instâncias do banco de dados, impedindo que usuários não autorizados realizem operações críticas, como modificações de dados ou tarefas administrativas.
  • A autenticação IAM fornece uma alternativa mais segura à autenticação baseada em senha tradicional. Permite que aplicações se conectem usando credenciais de segurança temporárias. Isso elimina a necessidade de armazenar e gerenciar senhas de banco de dados, reduzindo o risco de exposição de credenciais.

Você deve aplicar os princípios de acesso com privilégios mínimos, que minimizam os riscos de segurança e mantêm um controle rígido sobre o acesso ao banco de dados.

A imagem abaixo mostra como a autenticação IAM pode ser configurada para garantir o acesso seguro ao banco de dados Amazon Aurora PostgreSQL.

A autenticação IAM integra-se com o Amazon Aurora PostgreSQL. Fonte: Blogs da AWS

Auditoria com logs do Aurora

Monitorar e auditar a atividade do banco de dados é essencial para conformidade de segurança e resolução de problemas.

O Aurora fornece vários mecanismos de registro, incluindo logs de erros, logs de consultas lentas e logs gerais, que ajudam os administradores a rastrear a atividade do banco de dados e identificar problemas potenciais. Esses logs podem ser ativados através do AWS Management Console e armazenados no Amazon CloudWatch para análise centralizada.

  • Logs de erro capturam erros e avisos do mecanismo do banco de dados.
  • Logs de consultas lentas ajudam a identificar consultas ineficientes que podem impactar o desempenho.

Analisar esses logs pode ajudar os administradores a otimizar a execução de consultas, detectar tentativas de acesso não autorizadas e garantir a estabilidade do banco de dados.

Gerenciamento de Custos e Otimização no AWS Aurora

Para gerenciar e otimizar custos de forma eficaz no Amazon Aurora, é necessário entender sua estrutura de preços. Vamos revisar!

Compreensão da precificação do Aurora

O modelo de precificação do Amazon Aurora é baseado em diversos fatores, incluindo horas de instância, consumo de armazenamento, solicitações de E/S e transferência de dados.

Ao contrário de bancos de dados tradicionais que exigem provisionamento de infraestrutura antecipado, o modelo de pagamento conforme o uso do Aurora permite às empresas pagar apenas pelos recursos que consomem.

As instâncias de computação são faturadas com base na classe da instância e no tempo de atividade, enquanto o armazenamento é dimensionado dinamicamente, eliminando a necessidade de ajustes manuais.

A imagem abaixo fornece uma divisão dos diferentes componentes de preços para o Amazon Aurora. No entanto, lembre-se de que os preços podem mudar, então é sempre melhor consultar a página de preços do Aurora para obter as informações mais atualizadas.

Os custos adicionais incluem armazenamento de backup além da camada gratuita alocada, solicitações de leitura e gravação de E/S, e taxas de transferência de dados para replicação entre regiões.

Compreender esses componentes de preços pode ajudá-lo a prever despesas e tomar decisões informadas sobre o uso do banco de dados.

Otimizando custos com Aurora

Para gerenciar custos de forma eficaz, as organizações podem implementar várias estratégias de otimização.

Selecionar o tamanho da instância apropriado garantirá que os recursos do banco de dados estejam alinhados com as demandas de carga de trabalho sem superprovisionamento.

  • Se você tem uma carga de trabalho previsível, utilize Instâncias Reservadas pois elas proporcionam economia significativa em comparação com a precificação sob Demanda.
  • Técnicas de otimização de armazenamento, como monitoramento de recursos não utilizados ou subutilizados, ajudam a reduzir custos. 
  • O recurso de dimensionamento automático do Aurora ajusta o armazenamento dinamicamente, evitando despesas desnecessárias com armazenamento. 
  • Além disso, implementar réplicas de leitura pode descarregar consultas da instância principal, reduzindo potencialmente a necessidade de instâncias de nível superior.
  • Aproveite Aurora Serverless, pois é outra opção econômica para aplicações com cargas de trabalho variáveis. O Aurora Serverless dimensiona automaticamente os recursos de computação com base na demanda, garantindo que as empresas paguem apenas pelo uso real, em vez de manter uma instância em execução contínua.

> Se você deseja obter mais insights sobre gerenciamento de custos, consulte o curso AWS Security and Cost Management.

Conclusão

Depois de trabalhar com o Amazon Aurora em várias empresas por um bom tempo, posso dizer com confiança que é uma solução de banco de dados poderosa e escalável que torna o gerenciamento mais fácil sem comprometer o desempenho—você provavelmente concordará após passar por este tutorial.

O Aurora vale a pena considerar se você está procurando um banco de dados relacional nativo da nuvem que suporta MySQL e PostgreSQL, ao mesmo tempo que reduz a sobrecarga operacional. Ele foi revolucionário em alguns dos meus projetos e recomendo fortemente explorar suas capacidades se estiver trabalhando com bancos de dados da AWS.

Se você é novo em bancos de dados da AWS, aprender conceitos fundamentais através de cursos como AWS Cloud Practitioner (CLF-C02) pode ser benéfico!

Source:
https://www.datacamp.com/tutorial/amazon-aurora