Comment nous avons éliminé la fraude de la hutte

Je m'appelle Nikita, je suis développeur backend de l'équipe antifraud de Citimobil. Aujourd'hui, je vais partager avec vous une histoire sur la façon dont nous avons déplacé notre service d'un monolithe vers un service distinct, comment nous sommes arrivés à cette décision et quels problèmes nous avons rencontrés.


Pour commencer, je vais parler un peu de notre service.


Antifraud 101


Notre anti-fraude est un ensemble de règles permettant d'identifier les commandes contenant des signes de fraude, des schémas de fraude.


Exemple de fraude à la conduite

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