Developers

Como criamos uma infraestrutura inquebrável, pronta para ser aplicada sem atrito

Como criamos uma infraestrutura inquebrável, pronta para ser aplicada sem atrito
Share

Cada segundo conta no ecossistema de fintech. Um minuto de inatividade pode significar milhões em transações fracassadas. Na Pomelo, sabemos que a confiabilidade é fundamental: nossa infraestrutura de tecnologia não apenas dá suporte às nossas operações, mas também garante que todos os pagamentos, todas as transações e todas as interações de nossos clientes e seus usuários ocorram sem interrupção.

Além de desenvolver a tecnologia, construímos uma infraestrutura projetada para ser dimensionada, resistir a desafios e cumprir as regulamentações locais em cada país em que operamos. Dessa forma, garantimos a continuidade operacional e uma experiência ininterrupta para o usuário, independentemente da escala do desafio.

Este artigo explora as principais estratégias para alcançar altos padrões de disponibilidade e segurança por meio de uma infraestrutura escalável e resiliente.

Arquitetura escalável e resiliente

Um indicador importante de confiabilidade é o tempo de atividade. Atingir 99,995% de disponibilidade significa que o sistema pode ter no máximo 2,10 minutos de tempo de inatividade por mês (26,05 minutos por ano). Esse padrão só é possível com planejamento, redundância, testes constantes e estratégias avançadas de monitoramento e mitigação em tempo real.

Para garantir essa estabilidade, nossa infraestrutura se baseia em dois princípios fundamentais: escalabilidade e resiliência. Vamos examiná-los em detalhes a seguir.

Escalabilidade: crescimento sem atrito

A escalabilidade permite que um sistema lide com aumentos na demanda sem afetar seu desempenho. Na Pomelo, implementamos:

  • Escalabilidade horizontal: incorporamos mais instâncias de servidor ou nós para distribuir a carga de trabalho de forma eficiente.
  • Escalabilidade vertical: aumentamos os recursos de servidor existentes, como CPU, memória ou armazenamento, quando necessário.
  • Arquiteturas elásticas: usamos infraestrutura de nuvem que ajusta dinamicamente os recursos de acordo com a demanda.

Temos uma arquitetura baseada em microsserviços no Kubernetes, com mecanismos de dimensionamento dinâmico que otimizam o desempenho e garantem a rápida recuperação de falhas.

Inicialmente, usamos o Horizontal Pod Autoscaler (HPA) para gerenciar o dimensionamento horizontal com base em métricas de CPU e memória. No entanto, encontramos limitações quando quisermos definir estratégias de dimensionamento mais personalizadas, como o número de transações ativas ou a latência da solicitação.

Para superar essas restrições, implementamos o KEDA (Kubernetes Event-Driven Autoscaling), que nos permitiu:

  • Dimensionar dinamicamente com base em eventos específicos, como mensagens em fila, métricas personalizadas do Prometheus ou atividade do banco de dados.
  • Otimizar o uso de recursos, ajustando automaticamente o número de pods com base na demanda em tempo real.
  • Reduza o consumo desnecessário de recursos quando o tráfego diminuir, melhorando a eficiência operacional e reduzindo os custos.

Resiliência e recuperação rápida

A resiliência é a capacidade de um sistema de resistir e se recuperar rapidamente de falhas. Para garantir a continuidade operacional, nossa infraestrutura incorpora:

  • Redundância em várias regiões: replicamos dados e serviços em várias zonas de disponibilidade.
  • Balanceamento inteligente de carga: distribuímos o tráfego para evitar a sobrecarga de componentes críticos.
  • Engenharia do caos: simulamos falhas controladas em ambientes de pré-produção para fortalecer nossa arquitetura e antecipar possíveis problemas.
  • Teste de carga: avaliamos o desempenho do sistema sob diferentes níveis de demanda para garantir que ele possa lidar com picos de tráfego sem degradação do serviço.
  • Automação de recuperação (auto-healing): implementamos mecanismos que detectam falhas e restauram os serviços sem intervenção manual.

Usamos o Canary Deployments como uma estratégia de implementação para minimizar o impacto de novas versões na produção. Essa técnica nos permite:

  • Lançar atualizações gradualmente, enviando tráfego apenas para uma porcentagem limitada de usuários antes de uma versão global.
  • Detectar bugs na produção com baixo impacto, permitindo uma rápida reversão se forem identificados bugs críticos.
  • Otimizar a estabilidade dos serviços, garantindo que as novas versões sejam testadas com tráfego real sem comprometer a experiência do usuário.

Para melhorar a resiliência e a segurança de nossos aplicativos, integramos o Istio em nosso cluster Kubernetes. Essa implementação nos permite:

  • Circuit Breaker: definir limites para o número de solicitações com falha antes de cortar o tráfego para um microsserviço problemático, evitando o colapso em cascata.
  • Gerenciamento avançado de tráfego: controle granular sobre como as solicitações são roteadas e tratadas dentro do cluster.
  • Segurança adicional com Authorization policies: implementamos políticas de autorização no Istio que nos permitem definir quais domínios e microsserviços podem ser acessados por cada aplicativo dentro do cluster. Por exemplo, podemos especificar que somente o microsserviço A pode executar uma solicitação GET para o PATH /v1/api/ de outro microsserviço. Isso acrescenta uma camada adicional de segurança sem a necessidade de modificar o código do aplicativo, reduzindo a superfície de ataque e melhorando a governança do tráfego.

Nossa infraestrutura cloud-native de várias regiões opera no modo ativo-ativo, distribuindo o tráfego em duas regiões e três zonas de disponibilidade por região. No caso de uma falha regional, a outra assume a carga sem interrupção, garantindo uma experiência de usuário estável e ininterrupta.

A implementação de uma arquitetura ativo-ativo em várias regiões é uma meta ambiciosa, mas traz desafios técnicos significativos. A coordenação da replicação de dados em várias regiões requer estratégias avançadas para garantir a consistência e a baixa latência. Alguns dos principais desafios incluem:

  • Consistência de dados: garantir que todas as regiões tenham informações atualizadas sem afetar o desempenho.
  • Orquestração de tráfego: definir regras inteligentes de balanceamento de carga para distribuir a carga sem gerar sobrecargas desnecessárias.
  • Gerenciamento de latência: minimizar o impacto na experiência do usuário final ao rotear o tráfego entre as regiões.
  • Failover eficiente: Garanta que, no caso de uma falha em uma região, a outra possa assumir a carga sem degradação do serviço.

Estamos ansiosos para implementar um novo serviço de banco de dados relacional projetado especificamente para arquiteturas de várias regiões. A AWS anunciou o Aurora DSQL no AWS re:Invent 2024. Esse serviço permite a replicação eficiente de dados entre regiões, com consistência transacional e tolerância aprimorada a falhas. Esse avanço representa uma grande oportunidade para otimizar as infraestruturas ativas.

Segurança da infraestrutura: uma abordagem proativa

A segurança é um pilar fundamental de nossa infraestrutura. Para proteger nossos sistemas, implementamos

  • mTLS (Mutual TLS): autenticação mútua entre serviços para garantir a integridade e a confidencialidade do tráfego.
  • Limitação de taxa de IP e Whitelisting: controle de acesso e limitação de solicitações por origem para mitigar abusos e ataques de força bruta.
  • Proteção avançada contra DDoS: prevenção e atenuação de ataques de negação de serviço por meio de filtragem de tráfego malicioso e dimensionamento dinâmico de recursos.

Implementamos o mTLS (Mutual TLS) no Istio, além de alguns dos recursos discutidos acima, para garantir a comunicação segura entre os microsserviços no Kubernetes:

  • Todo o tráfego entre os microsserviços é criptografado, evitando ataques de interceptação (MITM - Man In The Middle).
  • Somente serviços autenticados podem se comunicar entre si, impedindo o acesso não autorizado.
  • As políticas de autorização serão aplicadas com segurança no nível da rede, protegendo os pontos de extremidade confidenciais.

Em nossa implementação, o Istio emite certificados de segurança automaticamente e os gerencia por meio de seu plano de controle, facilitando a rotação e a renovação sem impacto nos serviços. Isso nos permite estabelecer uma malha de serviço segura e confiável, sem exigir alterações no código de nossos aplicativos.

Por outro lado, integramos a varredura de segurança contínua com as ferramentas SAST (Static Application Security Testing) e DAST (Dynamic Application Security Testing) em nosso pipeline de CI/CD. Isso nos permite

  • detectar vulnerabilidades no código-fonte antes que ele chegue à produção;
  • identificar possíveis falhas de segurança em tempo de execução;
  • automatizar a correção de descobertas críticas sem afetar a velocidade da implementação.

Estratégia de 99,995% de tempo de atividade

Para garantir a disponibilidade máxima e buscar os cinco noves (99,999%), aplicamos uma estratégia abrangente baseada em:

  • Infraestrutura em várias regiões: evitamos dependências em um único provedor de nuvem ou data center.
  • Arquitetura flexível: usamos recursos cloud-native com recursos de dimensionamento automático.
  • Monitoramento avançado e observabilidade: implementamos métricas em tempo real para detectar anomalias e evitar falhas.
  • CI/CD robusto: executamos implementações contínuas com testes automatizados de carga, caos e segurança para evitar regressões na produção.
  • Segurança: protegemos contra ataques DDoS, criptografam os dados e atenuamos vulnerabilidades em tempo real.

Conclusão

No ecossistema de fintech, onde o pico de demanda pode se multiplicar durante eventos como a Black Friday ou pagamentos em massa de salários, uma infraestrutura escalável e resiliente não é opcional: ela é a base da confiança do usuário.

Na Pomelo, não apenas projetamos tecnologia; construímos uma infraestrutura pronta para os desafios mais exigentes. Nossa arquitetura multirregional, estratégias de segurança proativas e recursos de resposta a incidentes nos estabeleceram como um parceiro tecnológico confiável no setor financeiro.

Esse nível de resiliência, elasticidade, escalabilidade e segurança, apoiado por processos automatizados, nos diferencia no setor. Ele nos permite operar em um ambiente altamente regulamentado com equipes pequenas e autônomas, acelerando lançamentos, minimizando o risco humano e otimizando o uso de recursos. Com essa arquitetura, não apenas garantimos a continuidade operacional, mas também operamos uma infraestrutura de classe mundial de forma ágil, segura e eficiente, o que nos permite escalar com menos riscos e maior velocidade.

Continuamos a desafiar nossos próprios limites na busca dos cinco noves, impulsionando a inovação e a confiabilidade em cada camada de nossa infraestrutura. 🚀

SOBRE O AUTOR

Federico Don

Infrastructure Manager na Pomelo

Ver mais artigos deste autor
Hablemos

Construa o produto
que o seu negócio
precisa.

Agende uma reunião com o nosso time.

Cecilia BrittoHead of Business
Alfonso TorreguitarHead of Global Solutions
Santiago WitisCountry Manager Cono Sur Latam
Jacob LevinCountry Manager México
Rafael GoulartCountry Manager Brasil
Paula BarnesHead of Risk
Entre em contacto