비하인드 스토리: 라이브를 위한 넷플릭스 광고 이벤트 파이프라인 진화 - 2부
Netflix는 특히 라이브 스트리밍 광고의 증가하는 규모와 복잡성을 처리하기 위해 광고 이벤트 게시자(Ads Event Publisher)를 재구축했습니다. 이전 시스템은 광고 메타데이터 보강을 위해 Key-Value 저장소를 사용했습니다. 이 접근 방식은 기능적이었지만, 라이브 이벤트에 부적합한 확장 병목 현상과 중요 경로 종속성을 야기했습니다. 라이브 스트림은 더 강력하고 탄력적인 솔루션을 요구하는 방대하고 급증하는 트래픽을 생성합니다.새로운 아키텍처는 상태 저장 스트림 처리 프레임워크인 Apache Flink를 사용하여 거의 실시간으로 보강합니다. 광고 서버 응답 로그는 데이터베이스 대신 Kafka로 전송됩니다. 그런 다음 Flink는 이러한 응답과 클라이언트 생성 광고 이벤트 간의 실시간 스트리밍 조인을 수행합니다. 이를 통해 중요 서빙 경로에서 직접적인 데이터베이스 쓰기를 제거하여 장애를 방지하고 확장성을 향상시킵니다.Flink 작업은 이벤트를 정규화하고 올바른 처리 영역으로 라우팅하며, 특히 상태 저장 조인을 수행합니다. 최근 광고 서빙 응답을 메모리에 유지하고 구성 가능한 창(일반적으로 60분) 내에서 들어오는 클라이언트 이벤트를 일치시킵니다. 이 접근 방식은 두 이벤트가 모두 사용 가능한 경우 즉석 보강을 가능하게 합니다. 이벤트가 먼저 도착하면 해당 응답이 나타날 때까지 보류됩니다.지역 간 보강을 해결하기 위해 시스템은 모든 서빙 응답을 전역적으로 복제하는 대신 광고를 제공한 영역으로 클라이언트 이벤트를 라우팅하여 비용 효율성을 높입니다. 광고 토큰에는 이제 서빙 영역 정보가 포함됩니다. 60분 창은 대부분의 이벤트를 포함하지만, 청구 및 보고를 위한 데이터 완전성을 보장하기 위해 늦게 도착하는 이벤트를 복구하기 위한 별도의 경로가 존재합니다. 이 상태 저장 스트림 처리 아키텍처는 Netflix의 진화하는 광고 요구 사항에 필요한 확장성과 복원력을 제공합니다.