
핵심요약
Azar 서비스는 유저 데이터 라이프사이클 관리를 위해 이벤트 기반 아키텍처를 활용하여, 사용자의 개인 정보 보호를 위한 데이터 보관 및 삭제 시스템을 효율적으로 구현했습니다. 이 시스템은 다양한 보관 정책과 대용량 데이터 처리를 유연하게 지원합니다.
Azar 서비스 개인정보 삭제 시스템 개요
이벤트 기반 아키텍처 및 핵심 구성요소
Azar는 유저 데이터 개인정보 보호를 위해 이벤트 기반 아키텍처를 채택하여 데이터 라이프사이클을 관리합니다.
- 시스템은 크게 **이벤트 예약부(Reservation Part)**와 **이벤트 처리부(Processing Part)**로 구성됩니다.
- 예약부는 유저 탈퇴 또는 제재 시 개인정보 삭제 스케줄을 MySQL 테이블에 저장하고, 보관 기간 만료 시 Kafka 이벤트를 발행합니다.
- 처리부는 발행된 Kafka 이벤트를 컨슘하여 해당 유저의 개인정보를 삭제하는 역할을 수행합니다.
- Kafka를 활용하여 대량의 메시지 처리, 마이크로 서비스 간의 비동기 통신 및 최종 일관성을 확보합니다.
유연한 데이터 보관 및 삭제 정책
데이터의 성격에 따른 다양한 보관 기간 요구사항을 충족하기 위해 Privacy Type 개념을 도입했습니다.
- 각 데이터(레코드 또는 필드)에 Privacy Type을 부여하고, 타입별로 고유한 보관 기간을 정의합니다.
- 예약부는 모든 Privacy Type에 대해 보관 기간에 따라 삭제 예약을 진행하고, 배치 프로세스가 만료된 예약을 기반으로
PERSONAL_INFO_DELETED이벤트를 발행합니다. - 처리부의 각 마이크로 서비스는 자신의 도메인 데이터를 Privacy Type에 맞춰 하드 딜리트 또는 소프트 딜리트 방식으로 유연하게 삭제를 구현합니다.
- 이 구조는 데이터 추가/변경 시에도 최소한의 수정으로 데이터 삭제 로직을 관리할 수 있도록 합니다.
데이터 무손실 및 대규모 백필 처리
데이터 삭제의 무손실성 보장 및 정책 변경에 따른 대규모 백필 처리를 위한 메커니즘을 갖추고 있습니다.
- 이벤트 발행 보장을 위해 트랜잭셔널 아웃박스 패턴과 Kafka Producer의
acks=all설정을 활용합니다. - 이벤트 처리 무손실은 컨슈머의 Manual Commit, 재시도 로직, DLQ(Dead Letter Queue) 전략으로 보장합니다.
- 데이터 백필은 Databricks를 활용하여 특정 유저군을 대규모로 쿼리하고, 추출된 유저 식별자를 이용해 Kafka 이벤트로 다시 발행하여 삭제 예약을 재수행합니다.
- 백필 과정에서 서비스 부하를 최소화하기 위해 Rate Limiter를 발행부와 컨슈머 양단에 적용합니다.
시스템 모니터링 및 삭제 검증
구현된 DLP 시스템의 신뢰성을 확보하기 위해 지속적인 모니터링 및 검증 절차를 수행합니다.
- 메트릭 모니터링: 예약부에서 발행된 스케줄 및 Kafka 이벤트를 Databricks에 동기화하여 실시간 처리량을 대시보드로 시각화합니다.
- 삭제 검증:
dateDeleted필드와 같은 메타데이터를 기반으로 Replica Production Database에서 Full Scan 쿼리를 수행하여, 삭제되었어야 할 데이터가 실제로 존재하지 않는지 정기적으로 검증합니다.