실시간 트렌드 분석기라는 프로젝트 특성상, 처음엔 요즘 많이 사용한다는 kafka와 같은 메시지 큐 시스템이 필수라고 생각했습니다.
여러 언론사에서 데이터를 지속적으로 수집하고, 그걸 바로바로 처리해야되기 때문입니다.
그래서 표면적으로만 보면, 실시간으로 뉴스 기사를 분석하는 제 프로젝트에 MQ가 필수적이라고 생각하는 것이 이상하지 않습니다.
먼저 kafka는 대용량 데이터 스트림을 안정적이고 확장성 있게 설계된 기술입니다.
넷플릭스나 링크드인같은 기업에서 초당 수백만 건의 이벤트를 처리하기 위해 만들어졌습니다.
하지만 제 프로젝트가 그 정도 규모일까요?
실시간과 대용량이라는 키워드만 보고 MQ를 선택한 건 아닐까?
그래서 실제로 MQ가 해결해야하는 병목이 제 프로젝트에도 존재하는지 검증해보기로 했습니다.
이 프로젝트가 감당해야 할 데이터의 양을 정확히 파악하기 위해, '한국언론진흥재단(Big Kinds)'의 통계를 바탕으로 추정해봤습니다.
저는 시스템 부하를 충분히 테스트할 수 있는 수치로, 일일 30,000을 기준으로 잡았습니다.
30,000(건) / 86,400(초) ≒ 0.35
초당 0.35건. 즉 1초에 기사가 한 건도 안 들어옵니다. 단순히 데이터의 총량만 놓고 보면, MQ 도입은 확실한 오버엔지니어링이 맞습니다.
데이터 양이 적다는 것은 확인했습니다. 그렇다면 정말 MQ가 필요 없을까요?
뉴스 데이터는 24시간 일정하게 들어오지 않습니다. 어떤 사건이 터지면 순간적으로 폭증할 수 있고, 분석 로직은 데이터 수집보다 훨씬 무거운 작업입니다.
MQ가 해결해야 하는 병목이 '데이터 양'이 아니라 '시스템 간의 의존성'에 있다면 충분히 도입할 가치가 있다고 판단했습니다.
결국 MQ의 필요성을 검증하려면, MQ가 해결해주는 문제가 실제로 내 프로젝트에도 존재하는지를 테스트 해봐야할 것 같습니다. MQ 없이 직접 데이터베이스에 연결하는 환경에서 두 가지 테스트를 진행할 예정입니다.
뉴스 기사 하나를 분석하는 데에는 형태소 분석, 키워드 추출 등의 작업이 필요합니다. (CPU 작업을 진행하게 될텐데, 제 프로젝트 서버는 node.js 이기에 이것 또한 고려해봐야합니다.)
(작성 예정)