• stone
  • stone
  • stone
.netcore

Stone

Microserviço para cálculo do Interchange

2019
01 Introdução A Stone é uma empresa brasileira que oferece soluções de pagamentos por máquinas de cartão. A Stone é o que chamamos de adquirente, uma empresa adquirente basicamente faz a ponte entre bandeiras de cartão e os bancos emissores para processar as transações financeiras.
01.1 MDR

Quando realizamos uma compra em um estabelecimento com nosso cartão de crédito ou débito, uma taxa é cobrada pelas adquirentes sobre cada transação, essa taxa é chamada de MDR (Merchant Discount Rate). A adquirente repassa o valor da compra para o lojista, é deduzido o MDR, assim, o lojista recebe o valor líquido da transação.

01.2 INTERCHANGE

Cada bandeira como VISA, Elo, MasterCard, Hipercard, etc., possui regras de repasse diferentes, além de termos diferentes taxas para cada tipo de cartão pessoa física ou jurídica, chamamos isso de taxa de interchange.

01.3 MENSALIDADE

Mensalmente a Stone deve calcular os valores que serão pagos baseado em todas as transações do período e repassar os valores para cada entidade.

  • Difi
  • cul
  • dades
02 Solicitação de Alteração

Para cada solicitação de alteração de regra ou taxa de uma bandeira, a Stone deveria realizar a alteração no sistema para calcular o valor a ser pago.

02.1 Desacoplamento da Engine

A Stone gostaria de desacoplar da engine do serviço do autorizador e que todas as regras dinâmicas, ocorressem de forma rápida e fácil, sem a necessidade de realizar nenhum deploy. Além disso, o serviço deveria passar a rodar em tempo real, sem criar lotes de processamento, para que métricas possam ser obtidas em tempo real.

03

Desafio: criar um micro serviço robusto de cálculo de interchange que fosse capaz de atender todas as transações realizadas pela Stone.

Para isso, ter um Auto-Scaling para aguentar todas essas transações simultaneamentes com uma baixa latência e tempo de resposta constante é fundamental e desafiador.

Em meios a tantas regras de negócio de interchange, não tínhamos a opção de consultar o banco de dados no momento do cálculo dos valores devido ao volume de requisições. Então desenvolvemos uma solução robusta de cache para resolver esse problema.

O desafio de usarmos o cache era de que em qualquer momento de mudança dos valores, as transações que estavam sendo calculadas tinham que ser consideradas com o novo valor, caso contrário a Stone correria o risco de pagar valores errados.

Solução
04 Solução

Criação de micro-serviço

Em primeiro momento entendemos o modelo de microserviços utilizados na Stone, analisamos pontos que poderiam ser melhorados e seguimos com o que estava adequado.
Criamos um microserviço seguindo todas as boas práticas de desenvolvimento, utilizamos serviços de log centralizado, auditoria, cluster de Kubernetes, CI/CD etc., serviços estes que já estavam sendo bem utilizados na Stone.

04.1 Solução

Desenvolvimento de uma suíte de testes

Acreditamos que a principal técnica de desenvolvimento que garante a qualidade do sistema no longo prazo é o desenvolvimento de uma suíte forte de testes automatizados e que essa suíte evolua constantemente com o código. Neste projeto realizamos testes nas três camadas, testes unitários, integração e End to End com um total de mais de 80% de cobertura do projeto.

04.2 Solução

ANÁLISE DE RISCO DE FRAUDE

Antes de colocarmos em produção, realizamos diversos testes de cargas, chegando até 1k requisições por segundo.

Com o microserviço finalizado, colocamo-os em produção em paralelo com o serviço antigo confrontando o cálculo de ambos. Em primeiro momento, comparamos a operação com o serviço antigo, identificamos o correto e regras de negócio eram validadas.

04.3 Solução

Tecnologias Utilizadas

- .Net Core
- Memory Cache
- PostgreSQL
- Redis
- Azure Devops

  • Resul
  • tado
05 Sucesso

Colocamos a primeira bandeira em produção e o cliente ficou muito satisfeito com o resultado. Fomos assertivos nos “centavos”. Após a validação da primeira bandeira, colocamos outras bandeiras no ar e já estamos indo para a terceira.

Tags Experiência do usuário Interface do Usuário Stone APP