주요 컨텐츠로 이동
금융 서비스

Spark 실시간 모드 및 Lakebase를 사용하여 실시간 사기 탐지 구축 방법

초당 지연 시간과 확장 가능한 데이터 인텔리전스로 금융 생태계 현대화

작성자: Sixuan He , Navneeth Nair

  • 기존 사기 탐지 시스템은 탐지 지연으로 어려움을 겪으며, 느린 배치 처리 또는 복잡하고 추가된 스트리밍 엔진에 의존하여 실시간으로 위협을 차단하지 못합니다.
  • Spark 실시간 모드와 Lakebase를 사용하면 데이터 팀이 엔드투엔드 사기 탐지 워크플로를 쉽게 구축하고 자동화할 수 있습니다. 통합 플랫폼 내에서 고처리량 데이터 스트림 처리, 저지연 ML 모델 실행, 설명 가능한 사기 점수 제공이 모두 가능합니다.
  • 조직은 외부 인프라 없이도 사기 거래에 대한 초당 미만의 개입을 달성하여 운영 복잡성을 줄이는 동시에 수익을 보호하고 고객 신뢰를 유지할 수 있습니다.

카드 사기는 몇 초 안에 발생합니다. 도난당한 신용카드 번호는 몇 분 안에 수십 건의 구매에 사용될 수 있으며, 거래가 완료되면 해당 자금을 회수하는 것이 기하급수적으로 어려워집니다. Nilson Report에 따르면 금융 기관은 연간 약 330억 달러를 사기 카드 거래로 잃고 있으며, 디지털 거래량이 가속화됨에 따라 이 수치는 더욱 증가할 것입니다.

문제는 사기를 탐지하는 것이 아닙니다. 대부분의 조직은 이미 유능한 사기 탐지 모델과 잘 조정된 규칙을 갖추고 있습니다. 문제는 승인과 결제 사이의 짧은 시간 내에 의심스러운 거래를 차단할 만큼 빠르게 탐지하고, 운영 복잡성을 두 배로 늘리는 별도의 전문 스트리밍 엔진을 추가하지 않고 이를 수행하는 것입니다.

이 블로그에서는 Databricks 환경에 직접 복제하여 배포할 수 있는 오픈 소스 참조 구현인 새로운 솔루션 가속기를 소개합니다. 이 솔루션은 원시 거래 수집 및 실시간 ML 채점부터 Databricks Apps를 사용하여 구축된 실시간 모니터링 대시보드에 이르기까지 Databricks 플랫폼 전체에서 완전한 엔드투엔드 사기 탐지 시스템을 구축하는 방법을 보여줍니다. 핵심에는 두 가지 기술이 있습니다. Databricks의 Apache Spark Structured Streaming에 대한 Real-Time Mode(RTM)로, 300ms 미만의 스트림 처리를 제공하고, Databricks 플랫폼에 내장된 완전 관리형 서버리스 Postgres 데이터베이스인 Lakebase입니다.

사기 탐지를 위한 속도 대 단순성: 실시간 절충

사기 탐지는 두 가지 상충되는 요구 사항의 교차점에 있습니다.

한편으로는 속도가 있습니다. 사기 거래는 결제되기 전에 수백 밀리초 이내에 식별되고 차단되어야 합니다. 정교한 사기 집단은 빠른 속도로 소액 구매를 통해 도난당한 카드를 테스트하고, 지리적 변칙을 악용하며, 정적 규칙으로는 따라잡을 수 없는 속도로 패턴을 조정합니다.

다른 한편으로는 단순성이 있습니다. 데이터 팀은 통합된 거버넌스, 공유 데이터 및 단일 도구 세트를 사용하여 단일 플랫폼에서 사기 모델을 구축, 학습 및 배포하기를 원합니다. 실시간 채점의 "마지막 단계"만을 위해 별도의 스트리밍 스택을 유지하고 싶어하지 않습니다.

지금까지 팀은 선택해야 했습니다. 역사적으로 이러한 초저 지연 시간 요구 사항을 충족하려면 Apache Flink와 같은 Spark 외에 특수 엔진을 도입해야 했습니다. 그 결과 익숙한 패턴이 나타납니다. 두 개의 병렬 시스템, 중복 데이터, 분할된 거버넌스, 그리고 엔지니어링 팀이 사기 모델 개선보다는 파이프라인 관리에 더 많은 시간을 소비합니다. Spark Structured Streaming에 RTM이 도입됨에 따라 이러한 절충은 더 이상 필요하지 않습니다.

RTM: 여러 시스템의 운영 오버헤드 없이 초당 처리

RTM은 기능 엔지니어링과 같은 지연 시간에 민감한 운영 애플리케이션을 위해 초당 데이터 처리를 가능하게 하는 Spark Structured Streaming 엔진의 발전입니다.

속도 측면에서 RTM은 밀리초 단위로 이벤트를 처리하며, 상태 비저장 변환, 조인 기반 보강 및 집계 워크로드에 걸쳐 Apache Flink보다 최대 92% 더 빠릅니다. Coinbase와 같은 고객은 이미 RTM을 사용하여 250개 이상의 ML 기능을 계산하고 있으며, 100ms 미만의 P99 처리 지연 시간을 달성했습니다.

단순성 측면에서 RTM은 옆이 아닌 이미 실행 중인 Spark 엔진 내부에 있습니다. 따라서 다음과 같은 이점을 즉시 누릴 수 있습니다.

  • 논리 드리프트 없음. 사기 채점 규칙, 기능 엔지니어링 및 ML 전처리가 한 번만 존재합니다. 오프라인 학습 파이프라인에서 실행되는 코드와 실시간 채점 환경에서 실행되는 코드가 동일합니다. 이를 통해 더 빠르고 정확하게 기능을 프로덕션화할 수 있습니다.
  • 하나의 운영 표면. Spark UI, 클러스터 모니터링, 작업, 경고 등. 이미 사용 중인 모든 도구가 적용됩니다. 스트리밍 엔진에 대한 두 번째 온콜 로테이션은 없습니다.
  • 비용 대 최신성 유연성. 초당 최신성이 비용만큼 가치가 없을 때, 더 느린 트리거로 다시 전환하는 것은 다른 방향으로 한 줄 코드 변경으로 동일합니다. 병렬 처리를 수동으로 조정하거나 컴퓨팅 리소스의 종료 및 재시작을 조정하는 데 시간을 할애할 필요가 없습니다.

결과적으로 팀은 더 이상 선택할 필요가 없으며, 속도와 단순성을 모두 얻을 수 있고, 엔지니어링 시간은 인프라 관리 대신 사기 신호 조정으로 돌아갑니다.

예시 시나리오: 신용카드 거래에서 사기 차단

이를 구체화하기 위해 당사의 솔루션 가속기는 신용카드 거래에 대한 실시간 사기 탐지 시스템을 구현합니다. 시나리오는 다음과 같습니다.

거래는 메시징 시스템(Kafka, Kinesis 등)에서 스트리밍됩니다. 각 거래에는 카드 ID, 금액, 가맹점 범주, 지리 좌표 및 채널(온라인 대 POS)이 포함됩니다. 시스템은 각 거래를 여러 사기 신호에 대해 평가하고, 위험 점수를 할당하고, 승인, 검토 대상 플래그 지정 또는 차단 중 적절한 결과로 라우팅해야 합니다. 이 모든 것을 300ms 미만으로 완료해야 합니다.

이 아키텍처는 주요 금융 기관의 프로덕션 사기 시스템과 유사하며, 상태 추적, 온라인 서빙 계층으로서의 Lakebase에서의 기능 보강, ML 채점, 그리고 사기 분석가 모니터링을 위한 실시간 Databricks Apps를 포함합니다. 유일한 차이점은 모든 것이 단일 플랫폼에서 실행된다는 것입니다.

구축 방법

네 가지 주요 구성 요소에 걸친 고수준 시스템 아키텍처 다이어그램

이 가속기는 마지막 단계를 기반으로 구축되는 네 가지 점진적인 단계를 거칩니다. 다음은 고수준 시스템 아키텍처 다이어그램입니다. 네 가지 주요 구성 요소에 걸친 깔끔한 데이터 흐름을 보여줍니다.

  • Kafka (소스): 원시 이벤트를 수집하는 이벤트 스트리밍 플랫폼
  • Spark RTM: 스트리밍 데이터를 처리하는 실시간 구현 엔진
  • Kafka / Lakebase: 처리된 데이터가 Kafka로 다시 들어오거나 Lakebase(Databricks의 저지연 서빙 계층)로 들어가는 중간 계층
  • Databricks Apps: 최종 데이터를 최종 사용자에게 제공하는 애플리케이션 계층

아래의 전체 엔드투엔드 데모 비디오를 확인하거나, 단계별 설명을 계속 읽으면서 정확히 어떻게 구축했는지 알아보세요. 복잡성을 더해가면서 빠른 시작 섹션(외부 종속성 없음)부터 시작하세요.

1단계: Real-Time Mode 작동 방식 확인

실시간 사기 인프라를 평가하는 금융 기관의 경우 빠른 가치 실현이 중요합니다. Quick Start 노트북을 사용하면 팀이 즉시 Real-Time Mode를 경험하고, 프로덕션 커밋 전에 5분 이내에 핵심 지연 시간 벤치마크와 플랫폼 적합성을 검증할 수 있습니다. Kafka에 연결하거나 외부에서 무언가를 구성할 필요가 없습니다. Spark의 내장 속도 소스를 사용하여 합성 거래를 생성하고, 사기 채점 로직을 적용하고, 노트북에서 결과를 실시간으로 표시합니다. 이것이 Real-Time Mode의 "hello world"입니다. 실행하고, 지연 시간 수치를 확인하고, 클러스터가 올바르게 구성되었는지 검증하세요.

2단계: 사기 탐지 파이프라인 구축

Real-Time Mode가 검증되면 다음 노트북은 선도적인 FSI가 실시간 사기 의사 결정을 운영하는 방식을 반영하는 프로덕션 등급 사기 탐지 파이프라인을 구축합니다. 이 파이프라인은 거래를 엔드투엔드로 처리하며, 사기 운영 및 규정 준수 팀 모두에게 필요한 설명 가능한 채점을 제공합니다. 거래는 Kafka에서 5단계로 흐르며, 각 단계는 지속적으로 실행되고 각 단계는 지능을 추가합니다.

Kafka 기반 규칙 파이프라인
  • 파싱은 Kafka에서 원시 JSON을 가져와 타입이 지정된 열로 구조화합니다.
  • 속도 추적은 흥미로운 부분입니다. transformWithState(임의 또는 사용자 지정 상태 저장 변환을 구축하기 위한 Spark의 강력한 연산자)를 사용하여 파이프라인은 스트림 전체에서 카드별 상태를 유지 관리합니다. 이 카드에서 지난 60초 동안 몇 건의 거래가 발생했습니까? 1분 동안 5건의 거래를 갑자기 발생시키는 카드는 전형적인 카드 테스트 동작을 보입니다. 상태는 TTL을 통해 자동으로 만료되므로 무제한 메모리 증가나 수동 정리가 필요하지 않습니다.
  • 강화는 판매자 위험 프로필 및 카드 소지자 데이터의 컨텍스트를 추가합니다. 이것이 위험도가 높은 판매자 범주(상품권, 보석류)입니까? 카드 소지자는 일반적으로 50달러 또는 5,000달러를 지출합니까? 이러한 조회는 브로드캐스트 조인 대신 Python 사전을 사용하여 스트리밍 파이프라인에 지연 시간을 추가할 수 있는 BroadcastExchange 오버헤드를 피합니다.
  • 채점은 5가지 가중치 사기 신호(속도, 지리적 이상, 금액 편차, 판매자 범주 위험, 국가 위험)를 단일 0-100 점수로 결합합니다. 각 신호는 전용 UDF에 의해 계산되며 가중치는 구성 가능합니다. 결과는 설명 가능한 점수입니다. 어떤 신호가 얼마나 기여했는지 정확히 알 수 있습니다.
  • 라우팅은 최종 결정을 내립니다. 거래는 승인, 수동 검토 플래그 지정 또는 자동 차단으로 분류되어 적절한 출력 Kafka 주제에 기록됩니다.

또한 다양한 TPS 수준에 걸쳐 종단 간 지연 시간 테스트를 수행했습니다. 결과는 일관된 성능을 보여주었으며, P50 지연 시간은 40ms 미만이고 P99 지연 시간은 215-392ms 범위였습니다. 이러한 결과는 Databricks 플랫폼에서 RTM을 사용하는 Kafka 입력, Kafka 출력 아키텍처가 외부 API 또는 추가 인프라에 의존하지 않고 낮은 지연 시간의 프로덕션 준비 성능을 제공할 수 있음을 보여줍니다.

End-to-end latency testing across TPS levels

3단계: 머신러닝으로 업그레이드

정적 규칙 기반 사기 탐지는 감사에 친숙하지만 취약한 시스템을 만듭니다. 임계값은 임의적입니다. 60초에 5번의 거래가 "의심스러운" 이유는 무엇입니까? 4번이나 6번은 어떻습니까? 그리고 학습이 없기 때문에 시스템은 과거 결정으로부터 결코 개선되지 않습니다.

고급 노트북은 이 로직을 관리되는 머신러닝 모델로 업그레이드합니다. 이 전환을 통해 위험 팀은 잘못된 양성(false positive)을 줄이고, 새로운 사기 패턴에 적응하며, MLflow의 내장 실험 추적 및 버전 관리를 통해 규제 기관에 모델 계보를 입증할 수 있습니다. 이는 두 가지 새로운 플랫폼 기능을 도입합니다.

ML-enhanced pipeline with Lakebase
  • 온라인 서빙 계층으로서의 Lakebase. Lakebase는 Databricks의 관리형 PostgreSQL 서비스입니다. Spark Structured Streaming의 foreach 싱크와 사용자 지정 LakebaseFeatureWriter를 사용하여 파이프라인은 카드별 기능, 속도 패턴, 평균 거래 금액, 지리적 분포를 모두 upsert 의미론을 가진 Lakebase 테이블로 직접 지속적으로 스트리밍합니다. Lakebase는 밀리초 미만의 읽기 성능을 제공하여 외부 인프라를 관리하지 않고 실시간 기능 서빙에 이상적입니다.
  • 모델 학습 및 서빙을 위한 MLflow. RandomForest 분류기는 실험 추적 및 모델 버전 관리를 위해 MLflow를 사용하여 과거 레이블이 지정된 데이터로 학습됩니다. 학습된 모델은 Spark UDF로 로드되어 스트리밍 파이프라인의 모든 거래에 적용됩니다. Lakebase의 실시간 기능과 결합된 이 모델은 정적 규칙이 놓치는 신호 간의 비선형 관계를 학습하고 사용 가능한 새 레이블 데이터가 생김에 따라 시간이 지남에 따라 개선됩니다.

4단계: 모든 것을 실시간으로 모니터링

운영 가시성은 실시간 규제 보고 의무 하에 작업하는 사기 팀에게는 협상 불가능한 요소입니다. 시스템을 관찰 가능하게 만들기 위해 이 가속기에는 Lakebase에서 직접 읽어 라이브 사기 모니터링 대시보드를 제공하는 Streamlit 기반 Databricks 앱이 포함되어 있습니다. 이를 통해 사기 분석가와 위험 관리자는 엔지니어링 지원 없이 시스템이 내리는 모든 결정에 대한 라이브 감사 가능 보기를 얻을 수 있습니다. 사용자는 10초마다 자동 새로 고침되는 총 거래 점수, 결정 내역(승인, 플래그 지정, 차단), 카드 수준 세부 정보가 있는 최근 사기 점수 및 사기 확률 분포를 추적할 수 있습니다. 이것은 기술적으로 기능적일 뿐만 아니라 실제로 시스템을 사용할 수 있게 하는 운영 계층입니다.

Screenshot of Real-Time Fraud Detection Dashboard

핵심 통찰력은 모든 것이 단일 플랫폼에서 실행된다는 것입니다. 배치 ETL 및 ML 학습을 지원하는 동일한 Spark 엔진이 이제 300ms 미만의 스트리밍을 처리합니다. Unity Catalog는 이제 스트리밍 테이블과 학습 데이터를 모두 관리합니다. MLflow는 배치 추론 또는 실시간 채점에 사용되는지 여부에 관계없이 사기 모델을 추적합니다. 모든 것이 동일한 플랫폼에 있기 때문에 통합 격차, 거버넌스 분할 또는 유지 관리할 두 번째 스택이 없습니다.

시작하기

이 솔루션 가속기는 점진적으로 조정 가능하도록 설계되었습니다. 간단하게 시작하고 필요한 경우 복잡성을 추가하십시오.

  • 빠른 시작: 리포지토리를 복제하고 `notebooks/RTM_00_Quick_Start.py`를 열고 실시간 모드로 실행되도록 구성된 클러스터에서 실행합니다. Kafka나 외부 설정 없이 RTM이 300ms 미만의 지연 시간으로 합성 거래를 처리하는 것을 볼 수 있습니다.
  • 전체 파이프라인: Kafka 시크릿 범위를 브로커 주소로 구성한 다음 `notebooks/RTM_01_Introduction_fraud_detection.py`를 실행합니다. 이렇게 하면 Kafka에서 읽고 쓰는 완전한 파싱-강화-채점-라우팅 파이프라인을 사용할 수 있습니다. 실행 시 모든 5단계에서 거래가 흐르고 승인, 플래그 지정 및 차단된 출력 주제에 결정이 내려지는 것을 볼 수 있습니다.
  • ML 기반 채점: Lakebase 인스턴스를 생성한 다음 `notebooks/RTM_02_Advanced_fraud_detection_ml.py`를 실행합니다. 이렇게 하면 Lakebase로의 기능 스트리밍, MLflow를 사용한 모델 학습 및 파이프라인에서의 ML 기반 채점이 추가됩니다. 완료되면 MLflow는 학습된 모델을 기록하고 파이프라인은 규칙 기반 가중치를 대체하여 ML에서 파생된 사기 점수를 내보내기 시작합니다.
  • 실시간 모니터링 앱: Databricks 앱으로 `apps/`의 Streamlit 앱을 Lakebase 리소스 바인딩과 함께 배포합니다. 앱은 자동으로 연결되고 실시간 사기 점수 표시를 시작합니다.

가장 빠른 경로는 Databricks 자산 번들을 사용하는 것입니다. 복제, 배포 및 실행만 하면 됩니다.

번들은 올바르게 구성된 클러스터를 자동으로 프로비저닝하고 모든 노트북을 순서대로 실행합니다.

실시간 모드에 대해 자세히 알아보기

실시간 모드는 AWS, Azure 및 GCP 전반의 Databricks에서 일반적으로 사용할 수 있습니다. 사기 탐지 솔루션 가속기는 오픈 소스이며 배포할 준비가 되었습니다.

(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)

최신 게시물을 이메일로 받아보세요

블로그를 구독하고 최신 게시물을 이메일로 받아보세요.