아키텍처는 분산 쿼리 조정기를 중심으로 구성되며, 이는 연합 소스에서 실시간 통계 수집을 통해 비용 기반 최적화기를 사용하여 적응형 쿼리 계획을 구현합니다. 쿼리 결과는 핫 데이터용 메모리 캐시와 사전 집계된 결과를 위한 분산 열 저장소로 구성된 계층 저장 시스템에 캐시됩니다. 정책 시행 지점이 모든 쿼리를 가로채어 기본 데이터 소스를 수정하지 않고도 행 수준 보안 프레디케이트를 삽입합니다.
다국적 금융 기관은 실시간 신용 카드 거래, 대출 신청 메타데이터 및 모바일 뱅킹 행동 신호를 연관시켜 교차 상품 사기를 감지해야 했습니다. 각 도메인 팀은 서로 다른 지역의 데이터를 소유하고 있었습니다—카드는 AWS US-East, 대출은 Azure Europe, 모바일 로그는 GCP Asia에 위치했으며, 중앙집중식 데이터 통합을 방지하는 엄격한 규제 요건이 있었습니다.
중앙집중식 데이터 웨어하우스: 모든 데이터를 단일 스노우플레이크(Snowflake) 인스턴스로 통합하고 매일 ETL 파이프라인을 설정합니다. 이 접근 방식은 중앙집중식 접근 제어로 거버넌스를 단순화하고 최적화된 저장소를 통해 일관된 쿼리 성능을 보장합니다. 그러나 이는 도메인 자율성을 위반하여 팀이 데이터 소유권을 포기하게 만들고, 지역 간 복제에 대한 상당한 데이터 전송 비용을 발생시키며, 실시간 사기 감지 시나리오에서 신선하지 않은 데이터 문제를 도입합니다.
기본 쿼리 연합: 데이터 이동 없이 소스 시스템을 직접 쿼리하는 경량 프레스토 클러스터를 배포합니다. 이는 도메인 자율성을 유지하고 중복을 피함으로써 저장소 비용을 줄입니다. 그러나 이는 지역 간 네트워크 대기 시간으로 인해 예측할 수 없는 성능을 경험하고, 반복적인 비용이 많이 드는 스캔을 유발하는 지능형 캐싱이 부족하며, 서로 다른 인증 모델을 가진 다양한 소스 시스템 간의 일관된 보안 정책을 시행할 수 없습니다.
도메인 게이트웨이를 통한 스마트 연합 레이어: 도메인 중심의 데이터 제품을 노출하는 내장된 OLAP 엔진으로 구성된 도메인별 API 게이트웨이를 구현하며, 푸시다운과 캐싱 간의 결정을 위해 비용 기반 최적화를 사용하는 글로벌 쿼리 계획자와 결합합니다. 이는 도메인 소유권을 보존하면서 물리화된 뷰를 제공하고 교차 도메인 결과 캐싱을 통해 성능을 제공합니다. 이는 운영 복잡성을 추가하며 도메인 간 데이터 제품 계약을 표준화해야 합니다.
선택된 해결책: 옵션 3. 이는 자율성 요구 사항과 성과 요구 사항 간의 균형을 맞추었습니다. 은행은 자신의 게이트웨이를 관리할 수 있는 기존 도메인 지향 팀을 보유하고 있어 이 접근 방식이 운영적으로 실행 가능했습니다. 또한 점진적인 마이그레이션 경로를 통해 도메인이 큰 폭으로 다시 쓰지 않고 점진적으로 선택할 수 있었습니다.
이 시스템은 95%의 교차 도메인 사기 쿼리에 대해 500ms 이하의 대기 시간을 달성하고, 전체 복제에 비해 데이터 전송 비용을 70% 줄이며, 유럽 지역 내에서는 EU 고객 데이터를 유지하면서 미국 분석가가 집계된 익명 결과를 쿼리할 수 있도록 하여 GDPR 준수를 유지했습니다.
고카디널리티 도메인(예: 거래)과 저카디널리티 도메인(예: 상인 카테고리)을 조인할 때 데이터 편향을 어떻게 처리합니까? 그리고 중앙 노드로 전체 거래 데이터 세트를 이동하지 않고 이를 처리하는 방법은 무엇입니까?
작은 데이터 세트에 대해 브로드캐스트 조인을 구현하고 큰 데이터 세트에 대해 파티션 조인을 적용합니다. 쿼리 최적화기는 도메인 메타데이터 카탈로그의 카디널리티 통계를 분석하여 최적의 전략을 자동으로 선택해야 합니다. 편향된 키에 대해서는 **소금 기법(salting techniques)**을 적용하여 핫 키를 여러 파티션에 분산시키고 조인 후에 결과를 집계합니다. 이를 통해 데이터가 존재하는 도메인 노드에서 대규모 작업이 수행되고, 최소한의 조인 결과만 네트워크를 통과하게 됩니다.
기저 도메인의 데이터가 자주 변경될 때 캐시 일관성을 어떻게 유지합니까, 특히 해당 도메인이 변경 데이터 캡처(CDC) 메커니즘을 지원하지 않을 경우에는 어떻게 합니까?
중요한 쿼리에 대해 TTL 기반 무효화와 결합된 **캐시-사이드 패턴(cache-aside pattern)**을 사용합니다. CDC가 없는 도메인에서는 관찰된 데이터 변동성 패턴에 기반하여 적응형 TTL을 구현합니다—자주 변경되는 테이블에 대해 짧은 TTL을 설정합니다. 쿼리가 오래된 캐시를 히트하면 소스 도메인으로 되돌아가 캐시를 비동기적으로 다시 채우도록 하여 캐시 스탬피드(cache stampede)를 방지합니다.
하나의 도메인이 RBAC(역할 기반 접근 제어)를 사용하고, 다른 도메인이 ABAC(속성 기반 접근 제어)를 사용하며, 세 번째 도메인이 기본적인 RLS 지원을 하지 않을 때 도메인 간 일관된 행 수준 보안(RLS) 정책을 어떻게 시행합니까?
쿼리 레이어에서 실행 전에 정책을 평가하는 통합 정책 엔진을 사용하여 보안 정책을 추상화합니다. 게이트웨이 수준에서 사용자 속성을 표준화된 클레임 형식(예: JWT 토큰)으로 변환합니다. 기본 RLS가 없는 도메인에서는 보안 프레디케이트를 생성된 쿼리에 주입하는 가상화 어댑터를 배치하여 사용자 권한에 따라 필터링하는 WHERE 절을 효과적으로 추가합니다. 정책 평가 중 대기 시간 패널티를 피하기 위해 각 지역 게이트웨이에 분산 정책 캐시를 유지하며, CI/CD 동안 정책 시뮬레이션을 구현하여 도메인별 규칙 간의 충돌을 탐지합니다.