brunch

You can make anything
by writing

C.S.Lewis

by 핑크곰 Jan 19. 2022

콘텐츠 유통 데이터 분석 시스템 구축 - #1

프로젝트 개요

좋은 IT 엔지니어에 대해서 질문을 받을 때마다 '자신의 경험을 잘 정리하는 사람'이라고 대답한다. 


경험은 지식이 되고, 이를 정리한 노력은 꼼꼼함과 책임감을 나타내기 때문에.

무엇보다, 내가 그러지 못하고 있어서... -_ -


2003년부터 실무 프로젝트(학습 수준이 아닌, 실 서비스 개발)를 경험했지만 그간 이력은 경력 기술서라는 이름으로 간단하게 적어놨을 뿐, 상세히 작성하지 못한 게 사실이다.


시작할 때는 아직 구체적인 그림이 없어서 못하고, 

진행 중일 때는 바빠서 못하고, 

끝나고 나면 좀 쉬어야지 하고 안 하게 되더라. 


그리고 좀 쉬고 나서 적을라 치면, 그땐 다른 프로젝트를 시작하거나 기억이 아물 가물... -_- 

내가 개발한 프로젝트를 유지 보수하는 SM은 그나마 괜찮은데,  SI일 경우 서비스 화면 캡처조차 이미 방화벽에 걸리거나 내 접근 권한은 사라져 버린 지 오래다. 결론은, 프로젝트 진행 중에 틈틈이 정리하는 게 베스트.(너무 바쁘면 프로젝트 마무리하고 1순위로 정리해야 한다.)


해서, 가장 최근 진행한 프로젝트 내용을 정리해 볼까 한다.






가장 최근 진행한 프로젝트는 "콘텐츠 유통 데이터 분석 시스템(Contents Distribution Data Analysis System)"이다. 줄여서 CODDAS, 코다스 라고 부른다.

한마디로 콘텐츠를 유통하면서 생성된 모든 데이터(수익, 시청률, 조회수, 시청자 반응 등)를 수집하여 분석 정보를 제공해 주는 서비스다. 


사실 이 프로젝트는 2019년에 기획했었는데, 당시 온라인 뉴스 개선 프로젝트를 맡게 되면서 초기에 필자가 기획했던 내용과는 다른 모습으로 진행됐다. 


초기 기획은 다양한 대량의 데이터를 빠르게 수집하고 사용자의 요구사항을 손쉽게 시각화해서 보여주는 서비스였다. 그런데 진행된 내용을 보니 Splunk를 기반으로 수집을 하고 화면은 Vue를 활용하여 웹으로 개발하고 있었다.


여기에는 몇 가지 문제가 있었는데, 

Splunk의 라이선스가 생각보다 부담됐고 수집 모듈이 확장에 유연하지 못하고 시각화는 개발비용이 커서 사용자 요구사항의 반영에 취약했다. 게다가 다양한 플랫폼을 지원하는 게 아닌 PC 브라우저만 지원하면서 사용자 확대에 어려움이 이었다.


때마침 소속 부서가 변경되면서 데이터 분석에 대한 프로젝트를 맡게 됐고, 기존의 경험을 바탕으로 데이터 분석을 위한 서비스를 아래와 같이 기획했다.


목표 
콘텐츠 유통 데이터를 수집하고 시각화해서 보여줄 수 있는 서비스 개발

기능
사용자의 요구사항을 빠르게 반영할 수 있는 아키텍처
다양한 데이터를 유연하게 수집할 수 있는 확장성
사용자가 직접 데이터를 시각화할 수 있는 기능 제공
사용자에게 데이터를 API로 제공
다양한 플랫폼 지원

이슈
예산 없음(라이선스 비용, 개발 비용)


시간과 비용을 고려하여 오픈소스를 활용하기로 했고, 리서치 결과 Elastic Stack을 선택했다.

다양한 수집 모듈을 제공하고 빠른 시각화 도구를 지원하며 막강한 데이터 저장 및 검색 엔진을 포함했기 때문이었다.(말하고 나니 Elastic 영업 담당자 같군 -_ -)


무튼, Elastic Stack(ElasticSearch + Logstash + Kibana)을 기반으로 사용자에게 PC, 모바일로 제공하는 서비스를 지향했다.






자... 이제 대략적인 틀이 잡혔으니 개발만 하면 끝이다.


프로젝트를 위한 인력은, 같은 팀 선배와 필자 둘. 

일정은 6개월.

예산 따위는 없기 때문에 서버는 사내 시스템 서버에 기생;

아... 뭐, 하면 되는 거다. 개발 인프라가 없는 것도 아닌데 ㅎㅎㅎㅎ


CODDAS는 총 6개의 프로젝트로 구성했다.

coddas elasticstack
Elastic Stack을 사용하여 데이터를 수집하고 시각화

coddas crawler
원본(Raw) 데이터를 수집

coddas web
Elastic Stack의 Kibana를 사용한 시각화 웹 서비스

coddas android
시각화 안드로이드 서비스

coddas ios
시각화 iOS 서비스

coddas messaging
앱 메시지 발송 서비스


필자의 역할은 서버 구축, 데이터 수집 모듈 개발, 웹 개발, 앱(android/iOS) 개발, Push 모듈 개발.(두 명이 역할 구분하는 게 웃긴 상황이라, 그냥 다 하는 거다 ㅎㅎ 그런 거다)


시스템 아키텍처



Elastic Stack을 사용하여 다양한 레거시 데이터를 유연하게 수집하고 빠르게 저장 및 검색 그리고 시각화를 제공했다. 


데이터 수집 레이어에서는 콘텐츠 유통 데이터가 워낙 다양하고 표준화되어있지 않기 때문에 이를 수집하는 수집 서버(coddas_crawler)로 1차 수집을 진행하고, 이를 Elastic Stack의 Logstash를 통해 2차로 수집 및 가공하여 Elastic Search로 인덱싱 했다.

시각화 레이어에서는 인덱싱 데이터를 Kibana로 시각화했다. 해당 대시보드를 사용자가 보다 쉽게 접근할 수 있도록 이를 감싸는 웹 서비스 그리고 이를 보여주는 앱(iOS/Android)을 개발했다.

그밖에 앱에서 일/주/월별 분석 결과 알림을 받을 수 있도록 메시지 발송 서버를 구축했다.


정리하고 나니 이것저것 많긴 한데 크게 복잡해 보이지는 않는다.(이.. 이러면 낭팬데 @_@)

그런데 말입니다. 위에서 언급했듯이 콘텐츠 유통 데이터가 워낙 다양하고 크다 보니 다양한 예외상황들이 많았다.(특히 유튜브. 넌 정말... 아어.......)




개발 내용(조금 더 기술적인)과 필자를 고생시켰던 시행착오들은 6개의 프로젝트 별로 나눠서 정리해볼까 한다. (글이 길어지면 필자도 독자도 힘들다...)


다음 글에서는 그 첫 번째로 Elastic Stack 내용을 정리한다. 

(세상에는 큰따옴표, 작은따옴표를 작성하는 생각보다 다양한 방법이 존재하더라 -_ -;;;)

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari