O blog da AWS
Como a Zoop atualizou seu principal banco de dados Amazon RDS MySQL e implementou criptografia em repouso
Por Nicolas Tarzia, Technical Account Manager, Ricardo Marques, Senior Solution Architect, DNB – LATAM e Felipe Barbosa, Tech manager, Zoop
A Zoop é uma fintech para o segmento B2B2C, líder em tecnologia para serviços financeiros que, por meio de sua plataforma facilita a integração do sistema regulatório, financeiro da cadeia de pagamentos e banking, tudo com a marca do parceiro, ou seja, white label.
A Zoop permite que empresas de qualquer segmento passem a operar como uma instituição de pagamento, sem ter que se preocupar com regulamentações ou desenvolvimento de produtos, ainda que o mercado financeiro não seja seu core business. Isso permite que essas empresas criem novas linhas de receitas com baixo investimento, rapidez e risco reduzido.
Desafios
A Zoop vem apresentando um crescimento expressivo nos últimos anos, de 2018 a 2022, a empresa cresceu cerca de 50 vezes em receita bruta e aumentou em mais 535 vezes o total de pagamentos processados. Visto a robustez do negócio e a constante evolução da plataforma, é essencial para a Zoop manter o banco de dados atualizado e em conformidade com os padrões de segurança, sendo assim, trabalhamos em parceria com a AWS com o desafio de migrar o principal banco de dados da empresa.
O time de Data Platform Zoop em conjunto com a equipe AWS composta por Infrastructure Event Management (IEM), o AWS Technical Account Manager (TAM) e o AWS Solutions Architects (SA), identificaram os principais pontos de atenção, possíveis impactos e decidiram a estratégia para a migração. Todos estes pontos são identificados com o objetivo de mitigar os riscos da operação.
Foram identificados os seguintes requisitos técnicos/funcionais:
- Criptografia dos dados em repouso: Para atender aos requisitos de compliance e garantir a segurança dos dados, era necessário implementar a criptografia dos dados em repouso. Isso exigiu a configuração adequada de uma solução de criptografia compatível com o Amazon RDS for MySQL.
- Atualização da versão do MySQL: A migração do MySQL 5.7 para a versão 8.0 trouxe diversas melhorias e recursos avançados, mas também envolveu desafios técnicos. Durante o processo de atualização, era necessário garantir que todos os recursos e funcionalidades utilizados pela aplicação fossem compatíveis com a nova versão e que haveria melhoria de performance.
- Baixíssimo tempo de indisponibilidade: A empresa depende fortemente de sua aplicação e qualquer interrupção prolongada resultaria em perda de receita e insatisfação dos clientes. Portanto, reduzir o tempo de indisponibilidade durante a atualização do banco de dados era um requisito crítico.
Arquitetura
Figura 1 – Ambiente atual
Antes de iniciar a atualização, é importante entender como o ambiente do banco de dados se encontra:
A empresa utiliza o serviço Amazon RDS for MySQL para disponibilizar seu banco de dados, sendo uma instância primária e cinco réplicas abaixo, totalizando mais de 60 TB de armazenamento consumido.
O ambiente foi dimensionado dessa forma para garantir alta disponibilidade e escalabilidade, no entanto, ao planejar a atualização da versão do MySQL, os dados em repouso não estavam criptografados, o que não atendia aos requisitos de compliance e segurança.
Diante das premissas descritas anteriormente, foram adotadas as seguintes soluções para enfrentar os desafios mencionados:
- Criptografia dos dados em repouso: Utilizando recursos nativos do Amazon RDS for MySQL, como o AWS Key Management Service (KMS), foi possível implementar a criptografia dos dados em repouso. Isso garantiu que todas as informações armazenadas no banco de dados estivessem protegidas e em conformidade com os requisitos de compliance e segurança.
- Testes de compatibilidade: Antes de iniciar a migração para o MySQL 8.0, foram realizados testes exaustivos para garantir a compatibilidade da aplicação com a nova versão. Também foi realizada uma análise detalhada dos recursos e funcionalidades utilizados pela aplicação para identificar possíveis problemas durante a atualização. Com base nessa análise, foram feitas as devidas modificações nas aplicações para garantir a compatibilidade das funcionalidades presentes.
- Atualização com replicação: Para reduzir o tempo de indisponibilidade, optou-se por utilizar uma estratégia de atualização com réplicas.
A estratégia consistiu na criação de uma nova réplica abaixo da instância primária já existente e a configuração da replicação dos dados da instância primária para essa nova réplica.
- Criação de réplicas abaixo da nova réplica: Para garantir a equalização e disponibilidade dos dados, foram criadas réplicas adicionais abaixo da nova réplica. Essas réplicas secundárias foram configuradas para receber a replicação dos dados da nova réplica, permitindo a futura distribuição de carga e redundância.
- Monitoramento: Durante todo o processo de atualização, houve o monitoramento constante do desempenho e da integridade dos dados. Isso incluiu a verificação da replicação dos dados, o monitoramento da latência entre as réplicas e a análise de métricas de desempenho para garantir que a aplicação continuasse funcionando corretamente.
- Virada da nova réplica em master: Com todo ambiente equalizado e sincronizado entre eles, foi possível gerenciar uma janela mínima de parada da aplicação para transformar a nova réplica com MySQL 8.0 na instância principal e transferir toda a carga para ela. A manutenção envolveu diversas equipes técnicas da empresa e ocorreu com janela inferior a 1 hora, incluindo todos os testes necessários após a virada do banco de dados.
Figura 2 – Ambiente final
Considerações finais
Atualizar um banco de dados tão crítico para uma empresa como a Zoop foi um desafio complexo, especialmente envolvendo duas ações críticas como criptografia dos dados e atualização da versão major (5.7 -> 8) do banco de dados.
A parceria entre Zoop e AWS foi fundamental para a realização de uma migração critica em apenas uma janela de manutenção, garantindo a continuidade do negocio e a satisfação dos clientes. Com o conhecimento adquirido durante todas as fases deste projeto foi possível replicar este modelo para outros projetos de migrações que aconteceram na Zoop.
Manter um banco de dados atualizado e em conformidade é fundamental para a segurança e o sucesso da companhia, habilitando mais empresas a virarem fintechs
Time Zoop do projeto de migração:
- Marcos Rafael Costa
Data Platform Engineer Specialist
- Arthur Coutinho
Data Platform Engineer Specialist
- Marcelo Pedrosa
Data Platform Engineer Senior
- Fernanda Lins
Data Platform Engineer Senior
- Filipe Pinto
Data Platform Engineer Senior
- Genaro Neto
Data Platform Engineer Specialist
- Marllius Ribeiro
Data Platform Engineer Senior
Sobre os autores
Ricardo Marques é Senior Solutions Architect na AWS, com mais de 15 anos de experiência em desenvolvimento de software, arquiteturas de soluções escaláveis, cloud native e orientação a eventos. Ele trabalha apoiando clientes nativos digitais, ajudando-os em sua jornada para a nuvem. Também é professor em MBA de arquiteturas cloud.
https://www.linkedin.com/in/ricardo-marques-45846425
Nicolas Tarzia é Technical Account Manager na AWS, atuando com a Zoop desde 2022. Com mais de 18 anos de experiencia em desenvolvimento de software, arquitetura de sistemas, e ele trabalha apoiando os clientes Enterprise Support em sua jornada na AWS.
https://www.linkedin.com/in/nicolastarzia/
Felipe Barbosa é Tech Manager na Zoop desde 2020. Com mais de 16 anos de experiencia na área de tecnologia e os últimos anos dedicado a liderança de times de Data, SRE e Cloud.