Este projeto foi arquitetado, executado e orquestrado pela by Seven | IT business and consulting
A eKyte é uma plataforma de gestão de marketing digital para alta performance que possibilita que as equipes planejem, produzam, otimizem e aprendam com as suas campanhas nas redes.
O DESAFIO
O time da eKyte tinha como necessidade uma migração da sua aplicação hospedada na Amazon Web Services (AWS) para a Microsoft Azure. Além das motivações financeiras, o seu intuito era também dispor de uma capacidade maior para o seu workload habitual e mesmo futuro. Com esse objetivo, o time da by Seven foi incumbido tanto de realizar o processo de migração, como também de arquitetar o ambiente no novo provedor de computação em nuvem.
GESTÃO DO PROJETO
Gerenciar uma equipe multidisciplinar foi um grande desafio, principalmente devido à diversidade de tecnologias envolvidas no projeto. Tivemos que alinhar diferentes expertises, desde Banco de Dados, AWS, Azure até Kubernetes e infraestrutura, o que exigiu uma coordenação constante. A comunicação entre os membros da equipe foi fundamental, mas o maior desafio foi garantir que todos os stakeholders, especialmente o cliente, estivessem sempre alinhados com as decisões tomadas. Realizamos várias iterações para ajustar o escopo e as expectativas, o que demandou flexibilidade e ajustes frequentes no planejamento. No final, conseguimos entregar o projeto dentro dos parâmetros esperados, mas foi um processo dinâmico e intenso.
SOLUÇÃO
Levando em consideração a necessidade de um ambiente mais performático, uma simples conversão entre tecnologias equiparáveis não proporcionaria o resultado desejado. Precisávamos ir além.
Database
A eKyte utilizava como solução para banco de dados o RDS (Relational Database Service) SQL Server da AWS, onde ele hospedava um banco de dados de aproximadamente 1TB. O desafio foi identificar junto a eKyte a melhor solução dentro da Azure para migração do banco de dados, sendo opções o Azure SQL Database, Azure Managed Instance e o SQL Server on VM Azure.
Durante o período de POC com o cliente, validamos que o melhor cenário seria utilizar o Azure SQL Database, visando um custo reduzido, performance, gerenciamento simplificado, elasticidade e escalabilidade e uma integração perfeita com todo o ecossistema Azure.
A migração necessitava de um planejamento cuidadoso e a execução precisava de uma avaliação minuciosa dos recursos utilizados pelo cliente para termos compatibilidade total.
Buscando a melhor solução para realizar a migração, utilizamos o DMA (Data Migration Assistant), onde conseguimos migrar o banco de dados com segurança, ter a garantia da integridade dos dados e em tempo hábil, visando a menor janela de manutenção possível.
Compute
O core do workload do sistema da eKyte utilizava containers Docker em instâncias EC2 (máquinas virtuais) na AWS. Em uma troca de ideias e experiências junto ao time da eKyte, foi externalizado o que eles estavam experenciando através de uma POC (Proof of Concept) e cogitado comportar a sua aplicação em um ambiente com Kubernetes. E se nós aproveitássemos o momento da mudança de provedor para também realizar essa evolução? E esse foi o desafio que aceitamos em conjunto com o time de desenvolvimento da eKyte: mudar a aplicação para um cluster Kubernetes gerenciado no AKS!
Na AWS, as instâncias com containers Docker eram organizadas em Auto Scaling Groups (ASG), para proporcionar a escalabilidade horizontal em alguns componentes da aplicação. No entanto, alguns destes componentes estavam dispostos em ASGs com apenas uma instância de capacidade. A forma como o ambiente estava organizado adicionava uma camada de complexidade no gerenciamento da infraestrutura e dificultava a adaptação da aplicação em relação a mudanças pontuais no workload. Com a utilização de um cluster Kubernetes, o gerenciamento e a escalabilidade se tornam tarefas pragmáticas. Dessa forma, os ambientes fragmentados em múltiplos ASGs foram organizados em dois clusters no AKS (Azure Kubernetes Service).
Com base na POC feita pelo time da eKyte no Kubernetes, foi realizada primeiramente a criação de um cluster de homologação que se aproximasse ao máximo possível do futuro cluster de produção visando testar a capacidade do ambiente para suportar diferentes workloads. Com a performance testada e comprovada foi possível delimitar os recursos necessários para os nodes do cluster produtivo, como também a escalabilidade horizontal desejada para os diferentes cenários de workload. O cluster possui dois node pools:
system (com nodes menores e um grupo de escalabilidade mais enxuto) para os componentes do próprio Kubernetes;
e o user (com nodes maiores e um grupo de escalabilidade mais generoso) para os componentes da aplicação.
Tendo em vista as boas práticas de segurança da informação para o acesso HTTPS na aplicação hospedada no cluster Kubernetes foi utilizado um Application Gateway Ingress Controller (AGIC), que se trata de um load balancer que opera na camada de aplicação (OSI camada 7). O mesmo, fornece um grau superior de proteção ao não expor a aplicação publicamente. Para a utilização do protocolo HTTPS, o AGIC consulta os certificados SSL/TLS provisionados no Key Vault da Azure. Visando atender alguns clientes que poderiam sofrer com latência em decorrência de geolocalização, também foi utilizado o Front Door para o armazenamento de cache em pontos de presença regionais.
RESULTADO
Database
Como resultado, o cliente agora tem uma solução de banco de dados mais simplificada, performática e com custo reduzido, sendo as principais melhorias:
Gerenciamento Simplificado: O Azure SQL Database é um serviço gerenciado, o que significa que a Microsoft cuida de tarefas como backups, patches e monitoramento. Isso libera a equipe de operações para se concentrar em outras atividades.
Elasticidade e Escalabilidade: Permite dimensionar verticalmente (aumentar ou diminuir recursos de computação) e horizontalmente (adicionar réplicas de leitura) conforme necessário. Isso facilita a adaptação às flutuações de carga.
Performance e Custos: Tivemos uma melhoria considerável na performance, e ainda com o custo reduzido, utilizando o modelo de DTU do Azure SQL Database.
EQUIPE BY SEVEN
A seguir, apresentamos os principais envolvidos no desenvolvimento, execução e redação deste artigo:
Robson Lima Lourenco
Gerente de Projetos
Jean Sczepanski Peres
Arquiteto de Proteção de Dados
Michelle Motta
Analista de Infraestrutura- Cloud, MS
Ruan Lucas Petschow da Silva
Analista de Infraestrutura- Cloud, UNIX/Linux
Ygor Cargnin
Líder Técnico de Banco de Dados
Obrigado pela leitura! Aproveite para ler os demais artigos!
Este caso de sucesso foi escrito pela equipe mencionada acima e revisado por Daniel Sangalli e Jean Peres
Comments