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. 🚀

Ofereça seus próprios cartões

Utilize nossa tecnologia moderna para emissão, processamento e gestão de pagamentos com cartões de crédito, débito e pré-pagos.

behind-the-card behind-the-card

Assine e receba nossa newsletter!

Ao se inscrever, você concorda com nossos termos e acordo de Política de Privacidade.

Autor

Comments are closed.