SCDF로 하루 N만곡 이상 VIBE 메타 데이터 실시간으로 적재하기!
코드너리 | 2023. 03. 18
데이터 인프라
데이터 파이프라인
실시간 스트리밍
사용된 기술:
개요:
네이버 뮤직 시절부터 18년 동안 유지해 왔었던 배치+젠킨스 조합의 메타(+VIBE) 데이터 적재 시스템.
갑작스럽게 1,270만 곡을 3개월 안에 적재해야 하는 상황. 19년 08월 적재 시스템 하루 최대 음원 수급량 5천 곡, 이대로라면 3년 뒤에나 수급이 가능한 상황으로 우선 하루 5만 곡까지 수급량을 늘리기 위해서 급하게 젠킨스 슬레이브를 확장하고 머신을 늘려 겨우 미션을 성공하였지만 계속해서 발생하는 Job 간의 전/후 순서와 배압, 경쟁, 실패가 난 이후의 재시도 정책과 같은 프로그래밍적인 어려움을 다시금 맞닥뜨리게 되었습니다.
이런 어려움을 극복할 수 있는 SCDF 알게 되었고 그동안 운영하였던 배치+젠킨스 조합을 SCDF로 전환하기 위해서 지난 2년간 노력하였던 레거시 전환 계획과 전략, 그리고 하루 50만곡 -> 하루 N 만곡 이상 음원 적재 추가 미션까지 달성하기 위해서 고민하였던 SCDF 스트림 설계 방법과 구현 방법, 스케일링 전략까지 22년 실 서비스에 구축했었던 경험을 공유하고자 합니다.
목차
1. 대용량 데이터를 처리하는 2가지 방식
- 데이터를 다루는 프로그래밍 환경
- 더 많은 데이터를 더 빠르게 처리하는 기법
- 누가 스트림 처리를 사용해야 할까?
2. 레거시 전환 계획과 전략
- 배치 + 젠킨스으로는 충분하지 않다.
- STOP / SWITCH/ MODELING 기초공사
- Dual-Write로 데이터 적재하기
- RDBMS -> MongoDB 마이그레이션하기
- 배포, 롤백, 마이그레이션 전략 세우기
3. SCDF 스트림 구조와 설계
- Functional Interface로 개념 이해하기
- SCDF 컨셉 이해하기
- 데이터 플로우 이벤트 전달 방식의 이해
- 데이터 플로우 스트림 연결 방식의 이해
- 대표적인 엔트리포인트 소비 방식 3가지
- DAG 방향성 비순환 그래프 방식으로 설계하기
- Fan-in & Fan-out 설계측정
- IO처리와 DB접근은 다르게 고민하기
4. SCDF 실 서비스 적용하기
- VIBE + SCDF 아키텍처
- SCDF 설치하기
- SCDF 개발하기 (Source, Processor, Sink)
- SCDF 모니터링하기
- SCDF 무중단 배포 전략
- SCDF 스케일링 기술을 이용한 성능 끌어올리기