Matheus Krisciumas
Todo o trabalho

Keiken · Tempo integral · fev 2023 — jan 2024

Movimentação de dinheiro assíncrona num marketplace de benefícios

Responsabilidade de backend nos fluxos entre parceiros, clientes e empresas associadas.

JavaSpring BootEventos assíncronosQueryDSL
Marketplace da Keiken listando uma psicóloga com preço, filtros e calendário de agendamento.
Superfície do marketplace: especialistas, filtros e agendamento.
Diagrama de pagamentos dos usuários, pelo app e pela empresa, até o payout dos parceiros.
Como o dinheiro se move entre usuários, empresa e parceiros.

A ideia

A liquidação não cabe num request. O dinheiro entre parceiros, clientes e empresas associadas tem que se mover num caminho assíncrono que ainda fecha o mês.

A situação

A Keiken é um marketplace de benefícios. O backend já existia. Aprendi Java e Spring Boot no trabalho para estender a API sem quebrar a liquidação entre as partes.

Como funciona

O evento do parceiro entra, um worker liquida o lote, e o livro é lido com filtros que doeriam como SQL ad hoc. O mês gira cerca de R$ 120 mil. Se esse caminho é síncrono, um parceiro lento segura todo mundo.

A ideia era tratar a movimentação como mensagem mais um fechamento agendado, e colocar JUnit no caminho para uma mudança no QueryDSL não pular uma parte em silêncio.

O que saiu

Fluxos assíncronos com Spring Messaging, cron jobs para o lote, QueryDSL para as leituras complexas e testes de regressão no caminho da liquidação.

  1. 01Evento do parceiro ingeridoSpring Messaging
  2. 02Cron liquida o loteagendado
  3. 03QueryDSL lê o livrofiltros complexos
  4. 04JUnit protege o caminhorede de regressão
Mensal
R$ 120 mil
Estilo
Assíncrono
Testes
JUnit

O problema

O dinheiro precisava se mover com confiabilidade entre as partes. Aprendi Java e Spring Boot no trabalho para estender uma API existente sem quebrar a liquidação.

O que saiu

Construí fluxos assíncronos com Spring Messaging e cron jobs processando cerca de R$ 120 mil por mês, além de cobertura com JUnit e consultas em QueryDSL.