Uma das principais soluções da Neurotech, o Riskpack, trata-se de uma plataforma de software, a qual utiliza inteligência artificial para realizar processos de scoring e avaliação de riscos de crédito financeiro. A solução possuía a maior parte da sua camada de persistência de dados com a tecnologia RDS MySQL. Entretanto, por se tratar de um ambiente multi-tenant, com bases de dados de múltiplos que chegavam a um total que superavam 8 TB de dados, pouco a pouco a camada de dados foi se tornando um gargalo de escalabilidade, resiliência e, principalmente, suporte para o contexto multi cliente com o qual a empresa lidava.
Neste sentido, a proposta foi realizar a migração completa de toda a estrutura de dados para o Aurora MySQL, contemplando requisitos de alta disponibilidade, escalabilidade e resiliência.
Descrição do Caso
Este estudo de caso inclui os detalhes relacionados ao projeto de implementação do Amazon Aurora MySQL:
Descrição geral da solução:
O objetivo do presente projeto, foi implementar a camada de banco de dados para a plataforma de scoring e avaliação de riscos da Neurotech. Visando garantir escalabilidade, resiliência e segurança, buscou-se estabelecer um ambiente multi tenant, onde cada shopping cliente possuísse sua estrutura de dados. O projeto contemplou as seguintes etapas:
ESTRUTURA DE ARMAZENAMENTO
-
Definição de nova arquitetura de armazenamento de objetos BLOB, considerando infraestrutura temporária durante a migração (DMS e uma API de armazenamento mista, a qual lidasse temporariamente tanto com a estrutura legada de armazenamento de objetos baseados em BLOB no RDS, como também o S3 para armazenamento dos novos objetos, considerando a arquitetura final;
-
Definição da arquitetura de software para implementação de um sistema migrador dos dados BLOB que estavam no RDS para movê-los para o S3;
MIGRAÇÃO DE TECNOLOGIA DE SGBD
-
Configuração das tarefas de migração de homologação do RDS MySQL para o Aurora MySQL com o Database Migration Services (DMS);
-
Validação das tarefas de migração, com implementação de scripts para ajustes de réplica de dados;
-
Configuração do Aurora MySQL de homologação para receber os dados originados do RDS MySQL;
-
Configuração do Aurora MySQL de produção para receber os dados originados do RDS MySQL;
OPERAÇÃO DE MIGRAÇÃO
-
Realizar dump completo dos dados para entrada em produção;
-
Ativação das tarefas de replicação do Database Migration Services (DMS) para replicação dos dados diferenciais.
Produtos usados nesta solução:
-
Aurora MySQL: Toda a camada de banco de dados do cliente foi migrada para o Aurora MySQL, seguindo as práticas do Well-Architected Framework, alta disponibilidade, segurança e escalabilidade;
-
Database Migration Services (DMS): Todos os dados anteriormente armazenados no RDS MySQL foram migrados para o Aurora MySQL, utilizando o DMS como ferramenta, o que possibitou downtime mínimo na migração;
-
S3: Storage de objetos utilizado para armazenamento dos dados BLOB, anteriormente armazenados no SGBD;
-
AWS Secrets Manager: Administração de chaves e segredos.
Como outros serviços AWS foram integrados nesta solução:
-
VPC: No que tange a conectividade, foi provisionada uma VPC com 4 (quatro) subnets privadas para dispersão das instâncias no Multi-AZ;
-
CloudWatch: O serviço CloudWatch permite fornecer infraestrutura e monitoramento de serviços por meio de painéis e também, alertas de eventos;
-
GuardDuty: O serviço GuardDuty é capaz de apoiar o processo de monitoramento, ajudando a fornecer insights ao nosso NOC (Centro de Operações de Rede) sobre como gerenciar ameaças e problemas de segurança;
-
Database Migration Services (DMS): Todos os dados anteriormente armazenados no RDS MySQL foram migrados para o Aurora MySQL, utilizando o DMS como ferramenta, o que possibitou downtime mínimo na migração;
-
Cloudfront: Rede distribuída de conteúdo para caching e servir objetos estáticos;
-
S3: Storage de objetos utilizado para armazenamento dos dados BLOB, anteriormente armazenados no SGBD.
Problemas e preocupações do cliente que foram superadas:
Inicialmente, existiam três principais preocupações do cliente com a migração: 1) qualquer movimentação ou migração, deveria prever o downtime mínimo para os clientes finais, dado que esses são, majoritariamente, empresas de grande porte do setor Financeiro, Varejo, Seguradoras, entre outros; 2) havia um grande volume de dados do tipo BLOB no banco de dados anterior, o que gerou grande preocupação em como esses dados seriam movidos para o novo repositório – buckets S3. Neste caso, foi projetado e implementado um migrador, o qual varria toda a base de dados legada e copiava os dados BLOB para os buckets S3, possibilitando que a nova base nascesse sem estes; 3) como trata-se de um banco de dados multi-tenant e extremamente crítico, haviam muitos problemas de performance, escalabilidade e alta disponibilidade. Com o Aurora MySQL, foi possível abordar e resolver cada um destes pontos.
1. Excelência operacional
1.1. Implementação de monitoramento contínuo com CloudWatch;
1.2. Conectividade integrada com alta disponibilizada multi zona (Multi-AZ);
2. Segurança
2.1. Implementação do GuardDuty para monitoramento inteligente de perímetro de infraestruutra;
2.2. Restrição de acesso externo ao ambiente, com segregação entre subnets privadas e públicas para back e front end, respectivamente;
2.3. Acesso ao ambiente da AWS para administração apenas por VPN;
2.4. Encriptação de dados em repouso e em trânsito.
3. Confiabilidade
3.1. Múltiplos nós de instância, possibilitando o balanceamento de operações de leitura e escrita;
3.2. Failover mínimo entre nós;
3.3. Usando o LifeCycle Manager para implementar backups em nível de snapshots.
3.4. Backups automáticos da camada de banco de dados;
4. Excelência em desempenho
4.1. Cálculo da demanda esperada do ambiente para o rightsizing.
5. Otimização de custos
5.1. O ambiente monitorado, com fluxo contínuo de acompanhamento para rightsizing.
Soluções de terceiros utilizadas:
-
-
Nazar Database Performance: Usado para entrega de administração de performance.
-
Secrets Manager: Usado para prover controle e segurança de chaves.
-
Resultados alcançados:
-
-
Armazenamento: Oportunidade de redução de custos com armazenamento de banco de dados;
-
Performance do SGBD: Com a implementação do Amazon Aurora, pode-se alcançar até 5x mais performance do que o RDS;
-
Performance da Aplicação: Dado que os objetos binários passaram a ser armazenados fora do SGBD, há o natural aumento de performance da aplicação nas operações de I/O;
-
Oportunidade de Autoscaling de BD: Dado os recursos de replicação e failover mínimo do Aurora, foi possível implementar o processo de autoscaling de banco de dados, provisionando mais ou menos recursos na camada de banco de dados, sem gerar indisponibilidade aos usuários;
-
Lições aprendidas:
-
-
A implementação de serviços AWS, nos permitiu focar mais nos aspectos de negócios do projeto;
-
Embora o planejamento de projetos como esse seja importante, a necessidade de experimentação por parte do cliente mostrou-se fundamental. Neste sentido, o uso da AWS habilita uma rápida prototipação de arquiteturas;
-
Usar a estrutura AWS Well Architected como uma referência nos ajuda a deixar claro para o cliente o valor de um bom parceiro de serviço.
-
Sobre a Neurotech
A Neurotech é uma empresa 100% brasileira, pioneira na criação de soluções avançadas de Inteligência Artificial, Machine Learning e Big Data. Sua missão é transformar um mundo de informações confiáveis e relevantes para que nossos clientes obtenham resultados incrementais expressivos, prevendo novas oportunidades de negócios.