카카오가 오픈소스DB까지 직접 만든 이유

컴퓨팅입력 :2016/07/01 14:18    수정: 2016/07/01 15:53

황치규 기자

카카오는 서비스 운영을 위해 오픈소스 소프트웨어를 적극 활용하는 대표적인 회사 중 하나로 꼽힌다. 최근에는 단순히 쓰기만 하는 것을 넘어 직접 만들어 오픈소스 개발자 커뮤니티와 공유도 하는, 프로슈머로의 변신에 속도를 내고 있어 주목된다.

스타트는 OLTP(online transaction processing)용 그래프 DB인 'S2그래프'가 끊었다.[그래프 DB 설명보기: 카카오 테크블로그]

카카오가 개발한 S2그래프는 지난해말 오픈소스 관리 단체 중 하나인 아파치 소프트웨어 재단(ASF) 인큐베이터 프로젝트로 선정됐다. 인큐베이터 프로젝트는 아파치 공식 프로젝트 전 단계로 커뮤니티에서 좋은 반응을 얻을 경우 공식 프로젝트인 '톱레벨' 지위를 획득할 수 있다.

그래프DB란 데이터들 간 상관 관계를 그래프 구조로 표현해 저장하는 DB다. 트위터, 페이스북, 인스타그램 등 SNS 선도적인 기업들은 자사 서비스 이용자 대상 피드(feed)추천 등을 위해 그래프DB를 자체 개발해 활용하고 있다.

그래프DB 기반 기술은 오라클이나 마이SQL같은 관계형 DB가 아니라 빅데이터에 적합한 NoSQL DB다.

카카오는 오픈소스로 제공되는 NoSQL 기술 중 하나인 H베이스에 내부 노하우를 접목해 S2그래프를 개발했다.

대용량 트랜잭션 데이터를 저장한 뒤 중앙 집중식으로 관리하는 환경이 필요했는데, 기존 NoSQL DB를 가져다 쓰는 것으로는 한계가 있다고 판단돼 직접 개발했고, 이를 다시 오픈소스로 공개하게 됐다.

자체 개발한 그래프DB를 오픈소스로 풀지 않는 페이스북이나 트위터와는 다른 행보였다.

카카오에 따르면 S2그래프는 방대한 데이터 들간 관련성을 빠르고 직관적으로 제공함으로써 서비스 내에서 이용자 행동에 대한 결과물을 실시간으로 제공하는데 활용된다.

SNS에서 특정 이용자와 친구관계를 맺은 사람들이 많이 반응한 콘텐츠들을 분석해 해당 이용자가 관심을 가질만한 콘텐츠를 추천해 주거나, 온라인 쇼핑에서 특정 이용자가 서비스 접속시 그와 유사한 취향을 가진 사람들이 구매한 제품들을 주로 노출시켜주는 것을 예로 들 수 있다.

가장 큰 장점은 이용자들의 관계 및 행동 데이터를 하나의 저장소에 모아 일원화된 API로 제공해 서로 다른 서비스들이 쉽게 데이터를 공유하고 실시간 데이터와 배치(Batch)로 생성된 데이터를 함께 사용할 수 있어 서비스에서 실시간성을 강화할 수 있다는 것이다.

속성이 추가된 소셜 그래프 예, 출처: 카카오 테크블로그

SNS에서 특정 게시물에 대해 사용자가 ‘좋아요’를 선택한 행동이 친구의 피드에 반영되기까지 기존 시스템에서는 수 시간에서 수 일이 걸렸는데 S2그래프를 통해 실시간으로 반영할 수 있다는 설명이다.

카카오는 S2그래프를 통해 관리 효율을 끌어올린 것은 물론 예전에는 할 수 없었던 품질의 서비스도 제공할 수 있게 됐다는 입장이다.비용 절감과 서비스 경쟁력 강화라는 두마리 토끼를 한꺼번에 잡았다.

S2그래프 개발을 주도한 윤도영 카카오 그래프DB 파트장은 "S2그래프는 DB 모델링 자체가 관계 중심이어서 마이SQL 등 다른 DB에 비해 관리가 매우 쉽울 뿐더러 예전에는 확보할 수 없었던 로그도 수집이 가능해 추천 서비스 품질도 좋아졌다"고 말했다.

카카오는 그동안 OLTP용 DB로 오픈소스 기반 관계형 DB인 마이SQL를 많이 사용해왔는데 지금은 점점 S2그래프 비중을 확대해 나가는 상황이다. 대부분의 카카오 서비스에 이미 S2그래프가 적용돼 있다. 카카오톡, 카카오스토리, 카카오뮤직, 선물하기, 다음앱, 다음뉴스, 다음쇼핑 등 20여개 이상의 서비스들을 포함하고 있다.

윤도영 파트장은 "S2그래프를 통해 총 1조건이 넘는 관계 데이터를 저장하고 있으며, 매일 갱신되는 500억건 이상의 관계 데이터를 분석해 주요 서비스들에 실시간 반영하고 있다"고 말했다.

카카오가 마이SQL을 버리고 그래프DB만 쓰는 것은 아니다.

그래프DB는 데이터를 처리하는 OLTP에 초점이 맞춰져 있다. OLTP 외에 다른 분야에선 마이SQL 등 다른 DB 제품들이 아직도 많이 쓰인다. 그런만큼 그래프DB와 다른 DB가 단절되지 않고 연동되는 것이 중요하다.

윤도영 파트장은 "S2그래프는 마이SQL과 연동해 쓸 수 있는 것이 주요 특징 중 하나"라며 "마이SQL과 함께 쓰는데 아무 문제가 없다"고 강조했다.

S2그래프는 카카오가 회사 차원에서 추진하는 첫 오픈소스 프로젝트다.

페이스북이나 트위터도 공개하지 않은 그래프DB를 오픈소스로 푼 것에 대해 윤도영 파트장은 "비슷한 문제로 고민하는 이들에게 도움이 됐으면 하는 바람과 글로벌 커뮤니티에서 우리보다 잘하는 개발자들의 기여를 받을 수 있다면 카카오에게도 이익이라는 판단아래 이뤄졌다"고 말했다.

카카오는 앞으로 S2그래프 용도를 보다 확장한다는 전략이다.

관련기사

지금은 OLPT용 그래프DB로 많이 쓰이지만 앞으로는 OLTP를 넘어 데이터 분석용으로도 쓸 수 있있도록 한다는 목표다. 윤도영 파트장은 "올해안에 가시적인 성과가 나올 것이다"고 말했다. S2그래프로 분석까지 커버하려면 제품 개발 외에 이런저런 챙겨야할 것들이 많다.

윤도영 파트장은 "다른 아파치 프로젝트들과 연동이 되는 것이 중요하다"면서 "S2그래프 개발에 집중하면서 사용자가 아파치 재단 이름으로 제공되는 다양한 오픈소스SW와 함께 무리가 없도록 할 것이다"고 말했다.