Como tiramos a fraude da cabana

Meu nome é Nikita, sou desenvolvedor de back-end da equipe antifraude do Citimobil. Hoje vou compartilhar com vocês uma história sobre como transferimos nosso serviço de um monólito para um serviço separado, como chegamos a essa decisão e quais problemas encontramos.


Para começar, vou falar um pouco sobre nosso serviço.


Antifraud 101


Nosso antifraude é um conjunto de regras para identificar pedidos contendo sinais de fraude, padrões de fraude.


Exemplo de condução de fraude

, , , - . , n . , , , .


. - , .


, , .


:


  1. / - (, ).
  2. 1..n .
  3. : , .

web- — «». web- .


: , , , . .



- .


PHP . , . , .


«» , : , , .


. , , , JOIN- , .


, . « » ( ).


:


  • , . .
  • , .

. Golang, .


.


:


(, , ). , . .


, .


: 6 , 25 .


:


OLTP- , OLAP- . , «».


:


  1. SQL ( ) , ClickHouse’ .
  2. Elastic’.

Elastic. , « » , . , JOIN’ Elastic’.


Elastic , . Elastic . 2xx. (, ), allow_partial_search_results.



, , , , MySQL. RabbitMQ, .


RabbitMQ, , . .


, MySQL, , Elastic, . lock Redise, , , . .



REST API.


.



:


  1. Elastic , , refresh , . , ?
  2. MySQL ?

.

RabbitMQ ( ), — (retry).


producer, consumer’. dead-letter: TTL , .


, , , retry-, . , .


.

— refresh . Elasticsearch , .


: , . , , . , , .


, , ? , - , . , retry-?


TTL retry- Elastic, .


dead-letter .



: . 100% . testify, mock’ . , .



, . -, .


, , , NDA. .


, , , .

Source: https://habr.com/ru/post/undefined/


All Articles