카드를 사용하여 마트에서 결제한다고 가정해 보겠습니다. 이제 당신은 집에 있고 한동안 외출하지 않았으며 은행으로부터 $20000를 인출했다는 메시지를 받았습니다. 어떻게? 구입한 비용은 단돈 $120입니다! 이를 위해서는 은행과의 긴 확인 절차가 수반되며 은행에서 사기 거래를 추적하고 해결하는 데 몇 달이 걸릴 수 있습니다.
시스템에 사기 탐지 메커니즘을 통합하여 유효하지 않은 거래를 실시간으로 감지하고 거부할 수 있다면 훨씬 편리할 것입니다. 전 세계 결제 사기 손실액이 연간 40억 달러를 넘어설 것으로 예상되는 상황에서 지연으로 인한 비용 증가는 더 이상 용납할 수 없습니다. 하지만 이러한 결정은 즉각적으로 이루어져야 하며, 시스템은 사용자의 과거 행동을 기반으로 지속적으로 학습해야 합니다. 따라서 사기 탐지 시스템이 이상 징후를 감지하는 동안 고객이 카운터에서 기다리도록 할 수는 없습니다. 효율적이고 빠른 시스템이 필요합니다. 이를 위해서는 캐시와 같은 메모리 기술을 사용하여 데이터를 저장하는 것이 효과적입니다. NCache 밀리초 이내에 처리합니다.
주요 집 약 :
1밀리초 미만의 처리 속도: NCache 데이터를 메모리에 저장하여 데이터베이스 병목 현상을 제거하고, 실시간 거래 중 수 밀리초 내에 사기 탐지가 가능하도록 합니다.
분리된 아키텍처: 사용 NCache Pub/Sub 메시징 버스는 거래 관리와 사기 방지 로직을 분리하여 높은 처리량과 시스템 확장성을 보장합니다.
3단계 논리: 이 시스템은 즉각적인 감지(NRT 시스템)와 장기적인 정확도 사이의 균형을 유지하기 위해 오프라인 처리에 데이터를 입력하여 지속적인 머신러닝 모델 학습을 수행합니다.
상태 추적: 분산 데이터 구조 (목록과 같은) 기능을 통해 고객 행동 기록을 실시간으로 유지하여 즉각적인 패턴 인식 및 이상 징후 감지가 가능합니다.
비차단형 지속성: 쓰기 지연 캐싱은 데이터베이스가 비동기적으로 업데이트되도록 보장하여 디스크 I/O로 인해 실시간 사용자 경험이 저하되는 것을 방지합니다.

그림 1: 고성능 이벤트 기반 사기 탐지 아키텍처 (제공: ) NCache
일반적으로 사기 탐지 시스템에는 그림 1과 같이 세 가지 하위 시스템이 포함됩니다.
- 근실시간(NRT) 시스템: 이 시스템은 실제 계산을 수행하는 대신 미리 정의된 패턴과 규칙을 사용하여 입력을 처리하고 결과를 생성합니다. 또한 결과는 사용자에게 직접 응답하므로 밀리초 단위여야 합니다. 이 시스템의 주요 목적은 대기 시간이 짧은 높은 처리량입니다. 즉, 이 시스템은 이상적으로는 더 높은 성능을 달성하기 위해 로컬 메모리에 있어야 합니다.
- 입력 처리 시스템: 이 시스템은 입력을 처리하고 NRT 시스템의 매개변수를 조정하는 데 몇 분에서 몇 시간이 걸릴 수 있습니다. 이 업데이트된 정보는 기계 학습 알고리즘을 추가로 처리하는 오프라인 처리 시스템에 제공됩니다.
- 오프라인 처리 시스템 이 시스템은 응답하는 데 몇 시간에서 몇 달이 걸릴 수 있습니다. 이 시스템은 모델을 개선하고 데이터를 훈련하며 이 업그레이드된 데이터를 NRT 시스템에 다시 공급하여 더 나은 결과를 얻습니다.
NCache 메모리 내 캐시 및 Pub/Sub 메시징 버스로
NCache 강력한 Pub/Sub 메시징 및 분산 데이터 구조와 같은 기타 기능을 제공하는 메모리 내 분산 캐시입니다. 사기 탐지 시스템과 관련된 시스템을 살펴보고, NCache 매우 빠른 결과가 필요하므로 거의 실시간 시스템에 완벽하게 맞습니다. 이것은 다음과 같이 가능합니다. NCache 여러 요소 간의 통신에 사용할 수 있을 뿐만 아니라 애플리케이션에 가장 가까운 데이터를 저장하여 데이터를 가져오기 위한 네트워크 호출을 더욱 줄일 수 있습니다.
다음을 포함하는 .NET에서 샘플 사기 탐지 시스템을 만들었습니다. NCache 성능과 처리량을 개선합니다. 작업 샘플을 찾을 수 있습니다. 여기 GitHub에서.
상위 수준에서 애플리케이션은 다음과 같이 작동합니다.
- 클라이언트 애플리케이션은 해당 고객의 트랜잭션을 관리하는 트랜잭션 요청 관리자와 통신합니다.
- 트랜잭션 정보는 메시지로 게시됩니다. 게시/구독 주제.
- 사기 탐지 관리자는 이 항목을 구독하고 트랜잭션 메시지를 받습니다.
- 사기 탐지 논리는 항목에 대해 수행되며 결과는 클라이언트 애플리케이션으로 다시 전송되는 트랜잭션 관리자에게 전송됩니다.
- 그런 다음 고객 정보는 다음을 사용하여 캐시에 저장됩니다. 분산 데이터 구조 목록과 같은. 이것은 향후 거래에 대한 결정을 훨씬 쉽게 내리는 데 도움이 될 것입니다.
- 데이터는 다음을 사용하여 데이터베이스에 유지됩니다. 후기 쓰기.
Pub/Sub로 트랜잭션 관리
트랜잭션 요청 관리자는 캐시로 초기화됩니다. 트랜잭션 요청 관리자는 트랜잭션을 메시지로 생성하고 해당 주제에 게시합니다.
|
1 2 3 4 5 |
public void CreateRelevantSubscription() { MessageReceivedCallback transactionmessageReceivedCallback = new TransactionCompletedMessage(this).MessageReceivedCallback; transactionSubscription = base.CreateRelevantSubscriptions(Topics.REPLIESTOPICS, transactionmessageReceivedCallback); } |
Transaction Request Manager를 통해 트랜잭션이 발생할 때마다 먼저 고객 정보에서 메시지를 생성한 다음 이를 트랜잭션 주제에 메시지로 게시합니다. 이 항목은 메시지를 수신하고 들어오는 메시지에 대해 사기 탐지 논리를 수행하고 트랜잭션 요청 관리자에게 결과를 다시 보내는 사기 탐지 관리자가 구독합니다.
|
1 2 3 4 5 |
// Sending messages on the respective topic if (customer != null) { ncache.PublishMessageOnTopic(Topics.TRANSACTIONTOPICS, CreateTransactionFromCustomer(customer), null); } |
실시간 사기 탐지
사기 탐지기는 이벤트 기반 핸들러 역할을 하며, 들어오는 거래 패턴을 메모리에 저장된 과거 벤치마크와 비교하여 실시간 이상 탐지를 수행합니다. 모든 검증 로직을 관리하고, 시스템과 지속적이고 지연 시간이 짧은 연결을 유지합니다. NCache 클러스터. 사기 탐지 관리자는 토픽을 생성하여 초기화됩니다. NCache 이 주제를 구독합니다. 사기 탐지 관리자 주제에 대한 콜백은 사기 탐지 논리의 결과를 거래 요청 관리자에게 다시 보낼 때 거래 요청 관리자 논리에 존재합니다.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public void InitiliazeFraudManager() { base.CreateRelaventTopics(Topics.REPLIESTOPICS); base.CreateRelaventTopics(Topics.TRANSACTIONTOPICS); CreateRelevantSubscription(); } public void CreateRelevantSubscription() { // Initializes the relevant subscribers with their callbacks MessageReceivedCallback transacionManagermessageReceivedCallback = new StartTransactionMessage(this).MessageReceivedCallback; transactionSubscription = base.CreateRelevantSubscriptions(Topics.TRANSACTIONTOPICS, transacionManagermessageReceivedCallback); } |
사기 탐지 로직 실행 중 시스템은 고밀도 검증 시퀀스를 따릅니다.
- 주정부 확인: 고객 데이터는 메모리 캐시에서 불러옵니다.
- 역사적 검증: 시스템은 마지막으로 캐시된 거래가 사기로 표시되었는지 확인합니다. 만약 그렇다면, 현재 거래는 즉시 실패 처리됩니다.
- 패턴 분석: 즉각적인 위험 신호가 없는 경우, 시스템은 학습된 논리를 현재 데이터에 적용합니다.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
if (customerInfo != null) { if (learntLogic.FraudFoundInLastTransactions(transactionMessage, customerInfo)) { result = Result.Faliure; } } if (result != Result.Faliure) { bool isValid = learntLogic.IsTransactionValid(transactionMessage); if (!isValid) result = Result.Suspicious; } |
이 학습된 논리에서는 트랜잭션의 유효성을 결정하기 위해 여러 요소를 사용합니다. 거래가 유효한 IPAddress와 적절한 도메인에 있는 유효한 이메일 주소에서 시작되었는지 확인합니다. 또한 해당 이메일은 의심스러운 이메일 범위에 포함되어서는 안 됩니다. 거래가 의심스러운 위치에서 시작되었는지도 확인합니다. 위의 기준 중 하나라도 실패하면 실패 가중치가 증가합니다. 실패 가중치가 결정 가중치보다 크면 트랜잭션이 유효하지 않습니다. 이에 대한 코드를 찾을 수 있습니다. GitHub의 논리.
결과 캐싱 및 데이터베이스에 유지
결과가 선언되면 캐시에 결과가 추가/업데이트됩니다.
|
1 2 |
FraudRequest fraudRequest = CreateFraudRequest(transactionMessage, result); ncache.UpdateCustomerInfoInCache(customerkey, fraudRequest); |
캐시는 데이터 원본에 대해 구성됩니다. 인메모리 클러스터에 고객 정보를 저장하기 위해 우리는 NCache의 분산 목록, 분산 데이터 구조 중 하나입니다. 고객의 정보는 또한 다음을 사용하여 데이터베이스에 유지됩니다. 뒤에 쓰기, 고객 정보를 비동기식으로 업데이트합니다.
|
1 2 3 4 5 6 7 8 9 10 11 |
IDistributedList list = cache.DataTypeManager.GetList(key); if (list == null) AddCustomerInCache(key, null, cutomerInfo); else { // Update info of a customer against its id list.WriteThruOptions = new WriteThruOptions(WriteMode.WriteBehind); list.Add(cutomerInfo); } |
캐시되면 이 결과에서 새 메시지가 생성되고 트랜잭션 요청 관리자가 구독한 주제에 다시 게시됩니다. 메시지를 수신하고 클라이언트 애플리케이션에 결과를 다시 게시합니다.
맺음말
NCache 는 Pub/Sub, 분산 데이터 구조, 데이터 소스 공급자 등 다양한 기능을 제공하는 분산형 인메모리 .NET 캐시입니다. 네이티브 .NET 스택을 제공함으로써, NCache 다른 캐싱 솔루션에서 발생하는 직렬화 오버헤드를 제거하여, 매 순간이 중요한 고위험 사기 탐지에 이상적인 선택입니다. 로컬 메모리에 데이터를 저장하고 처리하는 목적은 네트워크 전송 비용을 없애는 것입니다. 모든 처리는 캐시를 통해 이루어지고, 결과는 나중에 데이터베이스에 업데이트됩니다.
자주 묻는 질문 (FAQ)
질문: 사기 탐지 관리자는 어떻게 의심스러운 거래를 식별합니까?
A: 이 시스템은 거래가 유효한 IP 주소, 신뢰할 수 있는 이메일 도메인 또는 알려진 지리적 위치에서 발생했는지 여부를 확인하여 누적 "실패 가중치"를 계산합니다. 총 가중치가 특정 임계값을 초과하면 해당 거래에 플래그가 지정됩니다.
질문: 이전 거래에서 거래가 "사기"로 표시된 경우 어떻게 되나요?
A: 시스템은 메모리 캐시에서 고객 기록을 불러와 과거 상태를 확인합니다. 가장 최근 거래가 사기인 경우, 시스템은 추가 로직을 실행하기 전에 현재 시도를 즉시 실패 처리합니다.
Q : 왜 NCache 이 로직에 표준 관계형 데이터베이스 대신 사용되는 것인가요?
A: 일반적인 데이터베이스는 디스크 I/O를 필요로 하는 경우가 많은데, 이는 실시간 카운터를 처리하기에는 너무 느립니다. NCache 데이터를 로컬 메모리에 저장하여 "매우 빠른" 결과를 제공하며, 이는 고객이 판매 시점에서 기다리는 것을 방지하는 데 필수적입니다.
질문: 머신러닝 모델은 시간이 지남에 따라 어떻게 개선되나요?
A: 이 시스템은 오프라인 처리 시스템을 사용합니다. 이 계층은 실시간 환경에서 데이터를 가져와 패턴을 개선하고 머신러닝 알고리즘을 재학습시킨 다음, 업그레이드된 로직을 준실시간(NRT) 시스템에 다시 입력합니다.
질문: 시스템은 의사 결정이 내려진 후 거래 결과를 어떻게 처리합니까?
A: 사기 탐지기가 결과를 발표하면 고객 정보가 업데이트됩니다. NCache 분산 리스트. 그런 다음 메시지는 Pub/Sub 토픽을 통해 트랜잭션 요청 관리자로 다시 게시되어 클라이언트 애플리케이션에 알립니다.







위의 기사를 즐겁게 읽고 모든 것을 자세히 설명하며 기사는 매우 흥미롭고 효과적입니다. 다가오는 기사에 감사하고 행운을 빕니다.