무료정보

카프카의 사촌 Apache Samza - LinkedIn 사용 사례

✝. . .☪ 2022. 2. 1. 22:19
반응형

이번 포스팅에선 링크드인의 아파치 Samza 사용 사례를 알아보도록 하겠다. 아파치 Samza는 LinkedIn에서 시작된 프로젝트여서 개인적으로 어떻게 사용하고 있는지 어떤 목적을 위해 만들었는지 궁금했다. 이번 사례를 통해서 Samza 및 스트리밍 시스템에서 더 심도 깊은 인사이트를 얻으면 좋겠다는 마음으로 조사를 했다.

 

LinkedIn은 이메일 커뮤니케이션을 을 최적화하기 위해 Samza를 활용하여 상태 처리 시스템(Stateful stream processing system)인 Air Traffic Controller를 구축하였다.

 

링크드인은 많은 전셰계 많은 구직자 고용주 그리고 헤드헌터 등을 위한 다양한 서비스와 플랫폼을 제공하는 전문 네트워킹 기업이다. 사용자가 증가함에 따라 다양한 서비스를 제공하기 위해서 회원 간의 커뮤니케이션을 효율화하는 것이 필수적인 조건이 되었다. 회원들의 경험이 최우선임을 보장하기 위해 LinkedIn은 ATC (Air Traffic Controller)라는 새로운 이메일 및 알림 플랫폼을 개발하였다.

 

ATC는 모든 발신하는 커뮤니케이션을 트래킹하고 적절한 채널을 통해 알맞은 시간에 적절한 멤버에게 커뮤니케이션을 전달하는 지능형 플랫폼으로 설계되었다.

 

회원에게 알림을 발송하는 모든 요청사항은  Kafka(카프카) 토픽(topic)에 기록하며, ATC는 나중에 이 내용을 읽는다. ATC 플랫폼은 다음 세 가지 요소로 구성된다.

 

Partitioners (파티셔너 - 분할자): 파티셔너는 Kafka로부터 들어오는 모든 커뮤니케이션 요청을 읽고 수신자의 해시(Hash)를 기반으로 파이프라인 인스턴스 전체에 분산시킨다. 또한 일부 필터링 기능을 초기에 수행하여 잘못된 형식의 메시지를 삭제한다.

 

The Relevance processors (연관 처리자): 연관 처리자는 Kafa에서 개인화된 기계 학 습모델을 읽고 나중에 Samza의 상태 저장소에 저장한다. 수신 요청을 채점하여 점수를 매기고 알림에 적합한 채널 (예: 삭제 or 이메일 전송 or 푸시 알림)을 결정하는데 이 기능을 사용한다.

 

The ATC pipeline (ATC 파이프라인): ATC 파이프라인 처리자는 연관처리자와 파티셔너의 결괏값을 집계하여 알림에 대한 최종 결정을 한다. Samza의 로컬 상태를 최대한 많이 활용하여 알림을 일괄 처리하고 집계할 수 있도록 하였다.

 

중복 알림은 병합(merge)하고 알림은 특정 임계 설정값으로 제한한다. 또한 파이프라인은 나중에 전송할 메시지를 예약할 수 있도록 Samza의 로컬 저장소 위에 스케쥴러를 구현한다. 예를 들면 자정에 밀린 푸시 알림을 보내는 것은 도움이 되지 않기 때문에  스케쥴러를 통해 나중에 전송할 수 있도록 예약하게 하는 시나리오가 있다.

 

ATC는 아래와 같은 Samza의 유용한 기능을 사용 하였다.

1. Stateful Processing (상태 저장 처리): 관련 모듈의 기계학습 모델들을 로컬 저장소 RocksDb에 저장하고 사용자 피드백에 따라 실시간으로 업데이트된다.

 

2. Async APIs and Multi-threading (비동기 APIs와 멀티스레딩): Samza의 멀티스레딩 및 비동기 API들을 통해 ATC는 높은 처리량 (high throughput)을 원격 호출할 수 있다. 이를 통해서 푸시 알림의 90번째 퍼센타일을 통해 시스템 전체의 지연 시간(end-to-end latency )을 줄이는데 도움이 된다.

 

3. Host Affinity(호스트 선호도): Samza의 증분 체크포인트(incremental checkpointing)와 호스트 선호도를 통해 ATC는 업그레이드 중에 다운타임을 방지하는 무중단 서비스를 제공하고 장애 발생 시 즉시 복구할 수 있다.

 

주요 Samza 기능 한 줄 정리: Stateful processing, Async API, Host affinity

구글 트렌드 정보 - 아파치 삼자

 

반응형