Versione PDF di: De Monólito a Microsserviços: Guia de Migração no Crédito

Questa è una versione PDF del contenuto. Per la versione completa e aggiornata, visita:

https://blog.tuttosemplice.com/pt/de-monolito-a-microsservicos-guia-de-migracao-no-credito/

Verrai reindirizzato automaticamente...

De Monólito a Microsserviços: Guia de Migração no Crédito

Autore: Francesco Zinghinì | Data: 26 Gennaio 2026

A passagem de monólito a microsserviços representa hoje o desafio arquitetural mais crítico para as empresas do setor fintech e da intermediação de crédito. Em 2026, a modernização das plataformas legacy já não é apenas uma questão de eficiência técnica, mas um imperativo de sobrevivência para competir num mercado dominado pelo Open Finance e por normativas em rápida evolução. Este guia estratégico e técnico explora como decompor uma aplicação monolítica gerindo a complexidade dos dados transacionais, a resiliência das integrações bancárias e a automação infraestrutural.

1. O Contexto: Porque o Setor do Crédito deve Evoluir

As plataformas de gestão de crédito nascem frequentemente como arquiteturas monolíticas: um único bloco de código onde a interface de utilizador, a lógica de negócio (scoring, instrução, concessão) e o acesso aos dados estão estritamente acoplados. Embora esta abordagem garanta inicialmente simplicidade de desenvolvimento e transações ACID (Atomicity, Consistency, Isolation, Durability) nativas graças a uma única base de dados relacional, a longo prazo torna-se um gargalo.

Os principais problemas que enfrentamos no crédito são:

  • Escalabilidade limitada: Impossível escalar apenas o módulo de “Cálculo da Prestação” sem replicar toda a aplicação.
  • Ciclos de lançamento lentos: Uma alteração normativa no cálculo da TAEG requer o redeploy de todo o sistema, aumentando o risco de regressões.
  • Ponto Único de Falha (Single Point of Failure): Um erro no módulo de geração de PDF pode bloquear todo o portal de pedido de empréstimos.

2. Estratégia de Decomposição: Domain-Driven Design (DDD)

A migração de monólito a microsserviços nunca deve ser um “Big Bang” (reescrita total simultânea), mas um processo iterativo baseado no padrão Strangler Fig (Figueira Estranguladora), como teorizado por Martin Fowler. O primeiro passo não é escrever código, mas definir as fronteiras.

Identificar os Bounded Contexts

Utilizando os princípios do Domain-Driven Design (DDD), devemos mapear os subdomínios funcionais. No crédito, as fronteiras naturais (Bounded Contexts) poderiam ser:

  • Onboarding & KYC: Gestão de registos e prevenção de branqueamento de capitais.
  • Credit Scoring: Motor de decisão e consulta à Central de Responsabilidades/Crif/Experian.
  • Loan Origination System (LOS): Workflow do processo.
  • Ledger & Accounting: Gestão dos movimentos contabilísticos.

Cada microsserviço deve possuir a sua própria base de dados (padrão Database-per-Service) para garantir o desacoplamento. Isto introduz o maior desafio técnico: a consistência dos dados.

3. O Desafio dos Dados: ACID vs BASE em Ambiente Distribuído

Num monólito bancário, transferir fundos e atualizar o estado do processo ocorre numa única transação de base de dados. Numa arquitetura de microsserviços, estas operações ocorrem em serviços diferentes. Não podemos usar transações distribuídas clássicas (Two-Phase Commit) devido à latência e ao bloqueio de recursos.

Implementar o Saga Pattern

Para manter a consistência, adotamos o Saga Pattern. Uma Saga é uma sequência de transações locais. Se uma transação falhar, a Saga executa uma série de transações de compensação para anular as alterações anteriores.

Existem duas abordagens principais:

  1. Coreografia: Os serviços trocam eventos entre si (ex. via Kafka ou RabbitMQ). O serviço Scoring emite o evento ScoringCompleted, que é escutado pelo serviço Origination.
  2. Orquestração: Um serviço central (Orchestrator) comanda aos outros o que fazer. No contexto creditício, onde os workflows são complexos e regulamentados, a orquestração é frequentemente preferível para ter visibilidade sobre o estado do processo.

4. Contentorização e Orquestração: Docker e Kubernetes

Uma vez definidos os serviços, a tecnologia facilitadora é a contentorização. O Docker permite empacotar cada microsserviço com as suas dependências (bibliotecas, runtime), garantindo que o ambiente de desenvolvimento seja idêntico ao de produção.

Para gerir dezenas ou centenas de contentores, o Kubernetes (K8s) é o standard de facto. O K8s oferece:

  • Self-healing: Reinicia automaticamente os contentores que falham (ex. um serviço de orçamentação que crasha por memória insuficiente).
  • Autoscaling: Aumenta as réplicas dos pods durante os picos de pedidos (ex. campanhas de marketing Black Friday).
  • Service Discovery: Gere o encaminhamento do tráfego interno entre os microsserviços sem hard-coding dos IPs.

5. Resiliência e Integração com APIs Bancárias Externas

Um intermediário de crédito deve dialogar com múltiplas APIs externas (Bancos, Gateways PSD2, Centrais de Responsabilidades). Estas APIs estão sujeitas a latência, timeouts ou indisponibilidade temporária. Uma arquitetura de microsserviços deve ser projetada para a falha.

Circuit Breaker Pattern

É essencial implementar o padrão Circuit Breaker (utilizando bibliotecas como Resilience4j ou as funcionalidades de Service Mesh como Istio). Funciona como um disjuntor elétrico:

  • Closed: O tráfego flui normalmente.
  • Open: Se o número de erros exceder um limite (ex. 5 timeouts consecutivos para a API do Banco X), o circuito abre-se e as chamadas falham imediatamente sem aguardar o timeout, preservando os recursos do sistema.
  • Half-Open: Após um período de tempo, o sistema deixa passar alguns pedidos de teste para verificar se o serviço externo voltou a estar online.

Retry com Exponential Backoff

Para erros transitórios, implementamos políticas de Retry inteligentes. Não tentar novamente de imediato, mas aguardar tempos crescentes (ex. 1s, 2s, 4s) para não sobrecarregar um sistema já em dificuldade (Exponential Backoff).

6. DevOps e Infrastructure as Code (IaC)

A complexidade operacional dos microsserviços requer uma abordagem DevOps madura. Não é pensável gerir manualmente a infraestrutura.

Terraform e GitOps

Utilizamos Terraform para definir a infraestrutura como código (IaC). Isto permite versionar a arquitetura cloud (AWS/Azure/GCP) no Git, garantindo auditabilidade e reprodutibilidade, requisitos fundamentais para as inspeções do Banco de Portugal, Banco de Itália ou BCE.

Pipelines CI/CD

As pipelines de Continuous Integration e Continuous Deployment devem incluir:

  • Testes Automatizados: Unit tests, Integration tests e Contract tests (para verificar se as APIs não quebraram a compatibilidade).
  • Security Scanning: Análise estática do código (SAST) e verificação das imagens Docker para vulnerabilidades conhecidas (CVE).
  • Canary Deployment: Lançar a nova versão do microsserviço apenas para uma pequena percentagem de utilizadores para verificar a estabilidade antes do rollout completo.

Conclusões

Migrar de monólito a microsserviços no setor do crédito não é uma simples atualização tecnológica, mas uma reestruturação profunda dos processos operacionais. Requer uma gestão rigorosa da consistência dos dados através de padrões como Saga, uma resiliência proativa através de Circuit Breaker e uma automação total via DevOps. Só assim a inovação tecnológica se pode traduzir em velocidade de negócio, permitindo lançar novos produtos financeiros em dias em vez de meses, mantendo ao mesmo tempo a robustez e a segurança exigidas pelo regulador.

Perguntas frequentes

Porquê migrar de monólito para microsserviços no setor do crédito?

A migração para microsserviços é necessária para superar os limites de escalabilidade e a lentidão dos lançamentos típicos das arquiteturas monolíticas. Na fintech, esta passagem é crucial para se adaptar rapidamente às normativas, como as alterações no cálculo da TAEG, e para competir no mercado Open Finance, permitindo atualizar módulos individuais sem arriscar bloquear toda a plataforma.

Como se gere a consistência dos dados numa arquitetura distribuída?

Num ambiente de microsserviços, onde não é possível utilizar as transações ACID clássicas numa única base de dados, adota-se o Saga Pattern. Este método gere a consistência através de uma sequência de transações locais coordenadas via orquestração ou coreografia. Se um passo falhar, o sistema executa automaticamente transações de compensação para anular as alterações anteriores e manter a integridade dos dados financeiros.

Qual é a melhor estratégia para decompor uma aplicação legacy?

A abordagem mais eficaz evita a reescrita total simultânea, conhecida como «Big Bang», favorecendo em vez disso um processo iterativo baseado no padrão Strangler Fig. Utilizando o Domain-Driven Design, identificam-se as fronteiras funcionais ou Bounded Contexts, como o Credit Scoring ou o Onboarding, para extrair e modernizar progressivamente partes individuais do sistema, reduzindo os riscos operacionais.

O que são os padrões Circuit Breaker e Retry nas integrações bancárias?

São mecanismos fundamentais para garantir a resiliência quando se comunica com APIs externas instáveis. O Circuit Breaker interrompe as chamadas para um serviço que devolve erros repetidos, prevenindo o bloqueio dos recursos internos. As políticas de Retry com Exponential Backoff, por outro lado, gerem as novas tentativas de conexão aguardando intervalos de tempo crescentes, evitando sobrecarregar os sistemas externos já em dificuldade.

Que vantagens oferece o Kubernetes para as plataformas fintech?

O Kubernetes é essencial para gerir a complexidade dos contentores em produção, oferecendo funcionalidades críticas como o self-healing, que reinicia automaticamente os serviços em crash, e o autoscaling. Este último permite que a infraestrutura se adapte dinamicamente aos picos de carga, garantindo continuidade operacional durante momentos críticos como campanhas de marketing ou prazos fiscais.