시스템 아키텍트System Architect

전 세계적으로 분산된 프라이버시 보존 관측 파이프라인의 아키텍처를 설계하시오. 이 파이프라인은 수천 개의 마이크로서비스에서 페타바이트 규모의 분산 추적을 수집하며, 데이터가 서비스 경계를 벗어나기 전에 민감한 속성에 대해 필드 수준의 암호화를 시행하고, 복잡한 추적 집계를 위한 서브 초 쿼리 대기 시간을 유지하며, 암호화된 텔레메트리에 대한 실시간 이상 감지를 시행하는 기능을 포함해야 합니다.

Hintsage AI 어시스턴트로 면접 통과

질문에 대한 답변

이 아키텍처는 OpenTelemetry 에이전트를 부가 모듈로 배포하여 서비스 수준에서 추적을 캡처하는 제로 트러스트 텔레메트리 파이프라인을 중심으로 구성됩니다. 이러한 에이전트는 데이터 전송 전에 민감한 개인 식별 정보(PII)를 평문으로 네트워크를 통과하지 않도록 보장하기 위해 HashiCorp Vault의 테넌트별 키를 사용하여 필드 수준의 암호화를 이용합니다. 지역 Apache Kafka 클러스터는 암호화된 버퍼 역할을 하며, 개인 정보 보호 분석을 수행하는 스트림 처리기(Apache Flink)에 공급됩니다. 이는 동형 암호화 또는 토큰화 기술을 사용합니다. ClickHouse 또는 Apache Pinot 위에 구축된 연합 쿼리 레이어는 공유 인프라로 여러 테넌트에 대해 별도의 논리적 샤드를 유지하여 지능적인 인덱싱 및 프레디케이트 푸시다운으로 서브 초 조회를 가능하게 합니다. 이상 탐지는 원시 스팬이 아닌 집계된, 차별적 프라이버시 메트릭스에서 수행되며, Apache Spark를 이용하여 중앙 집중되는 decrypted 민감한 데이터를 사용하지 않고 배치 패턴 인식을 수행합니다.

실생활의 상황

매일 천만 명의 환자를 수용하는 글로벌 원격의료 플랫폼이 중요한 규정 준수 격차에 직면하였습니다. 기존 Jaeger 추적 인프라는 의료 기록 및 PHI를 포함한 전체 요청 페이로드를 캡처했습니다. 이는 HIPAA 및 GDPR 요건을 위반하며 조직에 막대한 보안 책임을 초래했습니다.

솔루션 A: 테넌트별 분리된 관측 스택

각 의료 제공 클라이언트는 riêng의 스토리지 백엔드와 함께 분리된 Kubernetes 클러스터에서 실행되는 PrometheusJaeger 인스턴스를 받게 됩니다. 이 접근 방식은 데이터 분리를 보장하고 규정 준수 감사를 단순화합니다. 그러나 운영 오버헤드는 엄청났습니다. 500개 이상의 분리된 클러스터를 관리하는 데 30명의 엔지니어 팀이 필요했으며, 크로스 테넌트 성능 비교는 불가능했습니다. 자본 지출은 중복된 인프라와 고립된 용량으로 인해 400% 증가했습니다.

솔루션 B: 역할 기반 접근 제어를 갖춘 중앙 집중화된 평문 집계

필드 수준의 RBAC 및 쿼리 시 데이터 마스킹을 수행하는 단일 대규모 Elasticsearch 클러스터를 구현했습니다. 이는 인프라 비용을 significantly 줄이고 통합 쿼리 기능을 제공했습니다. 치명적인 결함은 보안 감사 중에 발생했습니다: 집계 레이어는 메모리와 스토리지에 복호화된 PHI를 포함하게 되어 높은 공격 목표가 되었습니다. Elasticsearch 클러스터 또는 특권 자격 증명이 손상되면 수백만 건의 기록이 노출되어 제로 트러스트 요건 및 규제 기준을 충족하지 못하게 되었습니다.

솔루션 C: 제로 트러스트 필드 수준 암호화 및 연합 쿼리 평면

민감한 필드를 사전에 정해진 AES-256 암호화를 사용하여 암호화하는 부가 모듈로서 OpenTelemetry 수집기를 배포합니다. 비민감한 추적 메타데이터(타임스탬프, 서비스 이름, 지속 시간)는 인덱싱을 위해 평문으로 남아 있으며, 페이로드 및 PHI를 포함한 태그는 암호화된 상태로 유지됩니다. 커스텀 쿼리 프록시는 요청을 가로채어 지역 ClickHouse 클러스터로 라우팅하고 요청하는 서비스의 메모리 공간 내에서 임시 키 임대를 이용하여 경계에서 복호화를만 수행하는 방식으로 조정합니다. 이상 감지는 Flink를 사용하여 메타데이터 및 암호화된 피쳐 벡터의 패턴을 분석하며 복호화 없이 진행됩니다.

선택된 솔루션 및 결과

팀은 6개월의 개념 증명을 거쳐 솔루션 C를 선택했습니다. 이 아키텍처는 복잡한 추적 조회에 대해 99번째 백분위수 기준으로 평균 쿼리 대기 시간을 650ms로 달성하여 서브 초 요건을 충분히 준수하였습니다. 플랫폼은 텔레메트리 처리에 대한 중요한 발견 없이 HIPAA 및 GDPR 감사를 통과했습니다. 운영 비용은 솔루션 A에 비해 60% 감소하였으며, 잠재적인 침해의 폭발 범위는 전체 데이터 세트가 아닌 개별 서비스 인스턴스로 제한되었습니다. 이상 탐지 시스템은 환자 데이터를 플랫폼 엔지니어링 팀에 노출하지 않고 첫 번째 달 내에 생산에서 세 가지 중요한 성능 퇴보를 식별했습니다.

후보자들이 종종 놓치는 점

질문 1: 필드 수준의 암호화된 텔레메트리에 대한 키 회전을 어떻게 처리하여 이전 키 버전으로 암호화된 과거 추적을 쿼리할 수 있는 능력을 잃지 않습니까?

후보자들은 종종 회전 중에 전체 데이터 세트를 복호화하고 재암호화하는 방안을 제안합니다. 그러나 이는 페타바이트 규모에서 계산적으로 부담이 큽니다. 올바른 접근 방식은 Envelope Encryption을 사용하여 키 계층 구조를 구현하는 것입니다. 여기서 데이터 암호화 키(DEKs)는 텔레메트리 필드를 암호화하고 키 암호화 키(KEKs)는 DEKs를 보호합니다. 각 스팬과 함께 DEK ID를 암호화되지 않은 메타데이터로 저장합니다. 회전 중에는 새로운 KEK로 DEKs만 재암호화하면 되며, 역사적인 DEKs는 새로운 마스터 키로 보호된 채 접근할 수 있습니다. 쿼리에서 사용되는 결정론적 암호화(예: patient_id와 같은 암호화된 필드에 대한 동등 검색을 가능하게 하기 위해)에 대해서는 평문 해시에서 파생된 **Synthetic Initialization Vectors (IVs)**를 구현하여 특정 필드에 대한 일관된 암호문 생성을 허용하면서 키 버전 관리에 대한 의미적 보안을 유지합니다.

질문 2: 관측 백엔드 내에서 특정 사용자 여정을 디버깅할 수 있는 능력을 유지하면서 높은 카드inality 필드(예: 사용자 ID 또는 세션 토큰)에서의 카드inality 폭발을 어떻게 방지합니까?

많은 후보자들은 디버깅 능력을 파괴하는 높은 카드inality 필드를 단순히 차단하는 방법을 제안합니다. 정교한 솔루션은 TokenizationBloom Filters를 결합하여 사용하는 것입니다. 높은 카드inality 식별자는 수집기 수준에서 결정론적 토큰으로 대체되며, 별도의 매우 제한된 부가 모듈에서 지난 24시간 동안의 hash(token) -> user_id의 매핑을 유지합니다. 역사적인 쿼리의 경우 엔지니어는 비즈니스 정당성을 검증하는 개인 정보 게이트웨이를 통해 요청을 제출하여 특정 토큰-사용자 매핑을 일시적으로 재가수화합니다. 스토리지 계층(ClickHouse)에서는 서비스 이름 및 작업에 대해 LowCardinality 데이터 유형을 이용하고, 토큰은 기본 정렬 키 대신 희소 보조 인덱스에 저장합니다. 이러한 접근 방식은 인덱스 크기를 관리 가능하게 유지하고(ClickHouse에서의 "too many parts" 오류를 방지) 필요한 경우 감사된, 시간 제한된 재가수화 작업 흐름을 통해 특정 사용자 추적을 다시 구성할 수 있도록 합니다.

질문 3: 통계적 유용성을 파괴하지 않고 실시간 이상 탐지에 차별적 프라이버시를 어떻게 구현합니까?

초보자들은 전역 노이즈 추가를 균일하게 적용하여 실제 이상을 마스킹(high epsilon)하거나 개인 정보를 유출(low epsilon)하는 경우가 많습니다. 아키텍처 솔루션은 두 겹 집계 전략을 요구합니다. 첫째, OpenTelemetry 에이전트 수준에서 **Local Differential Privacy (LDP)**를 활용하여 각 서비스가 전송 전에 칼리브레이션된 라플라스 노이즈를 자신의 히스토그램 버킷에 추가하도록 합니다. 이는 개별 추적을 보호하면서 집계 분포는 유지됩니다. 둘째, Flink 클러스터 내에서 **Secure Multi-Party Computation (SMPC)**를 구현하여 지역 집계기가 개별 기여를 알지 못한 채 암호화된 카운터에 대해 전역 통계를 계산합니다. 특정 지연 감지를 위해서는 **Sparse Vector Techniques (SVT)**를 활용하여 이상이 적응 임계치를 초과할 때만 프라이버시 예산을 소비합니다. 예산 할당을 구성할 때는 Privacy Accounting 라이브러리(예: Google Privacy-on-Beam)를 사용하여 드문 중요한 경고에 예산의 70%를 할당하고, 30%를 일상적인 건강 점검에 할당합니다. 이러한 방법은 5ms 지연 변화를 감지할 수 있는 충분한 신호 대 잡음 비율을 유지하면서 개인 사용자 활동에 대한 수학적 프라이버시 경계도 보장합니다.