Wie wir Betrug aus der Hütte genommen haben

Mein Name ist Nikita, ich bin ein Backend-Entwickler des Betrugsbekämpfungsteams in Citimobil. Heute werde ich Ihnen eine Geschichte darüber erzählen, wie wir unseren Dienst von einem Monolithen auf einen separaten Dienst verlagert haben, wie wir zu dieser Entscheidung gekommen sind und auf welche Probleme wir gestoßen sind.


Zunächst werde ich ein wenig über unseren Service sprechen.


Betrugsbekämpfung 101


Unser Betrugsbekämpfungsverfahren besteht aus einer Reihe von Regeln zur Identifizierung von Bestellungen, die Anzeichen von Betrug und Betrugsmustern enthalten.


Beispiel für Fahrbetrug

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