Review/Conferences

[if(kakao)2020 카카오 컨퍼런스] 기술 session: 카카오와 MongoDB

Hannah_ko 2020. 11. 23. 10:00
SMALL

2020년 11월 18일 ~ 11월 20일 동안 카카오는 if(kakao)2020이라는 컨퍼런스를 열었다.

작년까지는 기술 컨퍼런스로만 개최하였었는데 올해는 코로나 영향으로 온라인으로 개최하게 되면서

서비스, 비지니스 등의 다양한 분야의 세션들이 준비되었다.

훨씬 다양하고 온라인으로 간편하게 볼 수 있어서 많은 사람들에게 큰 도움이 됐을 것 같다 ㅎㅎ

 

나 역시도 이번 컨퍼런스에 준비된 기술 세션을 보고 많이 놀라고 감탄했다..ㅋㅋ

일단 이렇게까지 말해줘도 되나 싶을 정도로 시스템 구조를 자세히 설명해주고

왜 그렇게 구현했는지에 대한 이유도 충분히 이해가게 설명해주었다.

알려줘도 누가 만드느냐에 따라 달라진다는 건가...

 

아직 전체를 다 들어보진 못했는데 들었던 기술 세션 중에 좋았던 세션들을 정리해보려고 한다.

정리해도 괜찮겠지...? 하핳..

 


 

 

첫 번째로 정리할 세션 내용은 카카오와 MongoDB 세션이다.

 

이 세션을 듣고 적잖이 놀랐는데 카카오에서 MongoDB를 생각보다 많이 활용하고 있어서 놀랐다 ㅎㅎ

나는 MongoDB가 가볍고 접하기 쉬운 DB 정도라고만 생각하고 간단한 데이터를 적재할 때 사용해 봤었다.

뭔가 카카오에서 광범위하게 사용되고 있다는 얘기를 들으니 MongoDB에 대한 신뢰도가 증가했다 ㅋㅋㅋ

다시 열심히 공부해봐야지 ㅎㅎ

 

 

카카오에서는 MongoDB storage로 SSD를 사용한다고 한다.

(고성능이 필요할 경우 NVMe를 사용하는 경우도 있다고 한다.)

또한 메모리는 64GB가 대부분이라고 한다.

 

DB Architecture는 PSS(1 primary, 2 secondary) 구조를 기본 구조로 사용하고 있으며

Shard Server는 전용서버가 따로 있고 Shard Cluster의 Mongos는 전용 서버를 여러대로 구성하고 있고 이것을 DBA가 관리한다.

 

 

 

DB 관리를 위한 모니터링의 경우 Prometheus와 Grafana가 사용되고 DB의 지표들을 수집하기 위해 자체 개발한 Expoter를 사용한다고 한다.

수집된 데이터들을 기반으로 사용량이 높은 서버에 알람을 울려 DBA에 전달된다.

알람을 관리하는 컨트롤 타워 자체를 따로 두어 카카오톡으로 DBA에 전달하는 방법을 사용한다.

 

 

데이터의 백업RBaM(알밤)이라는 자체 개발 시스템을 이용해 진행하고 있고

물리 백업은 LVM 기반으로, Remote 백업은 사내 클라우드 스토리지에 저장한다고 한다.

 

많은 서버가 동시에 백업을 진행하게 되면 특정 구간에서 병목현상이 발생할 수 있으므로

RBaM에서 queue 구조를 이용해 동시 백업 수와 백업 속도를 조절하고 있다.

 

 


카카오에서 MongoDB의 활용은 크게 세 가지를 설명해주셨는데 첫 번째는 공간인덱스에 관한 부분이었다.

 

몽고디비는 공간인덱스라는 기능을 활용할 수 있는 데이터베이스인데,

이 같은 기능은 카카오 모빌리티처럼 사용자 위치를 기반으로 서비스를 하는 곳에서 많이 사용한다고 한다.

 

 

 

두 번째 MongoDB 활용 사례로는 대용량 로그 저장 및 조회 부분이다.

이는 수평 확장이 가능한 샤드클러스터를 구성해 원하는 조건으로 인덱스를 구성해 조회가 가능하고

TTL 인덱스를 이용해 오래된 데이터는 자동으로 삭제되게 구성한다고 한다.

 

 

 

세 번째 MongoDB 활용 사례로는 MySQL에서 MongoDB로의 이전(migration)사례이다.

최근 저장해야할 데이터의 양이 급증하고 이에 따라 데이터 스키마의 형태도 변경해주어야 하는 일이 발생하다보니

MySQL과 같은 관계형 데이터베이스에서 MongoDB로 전체가 넘어가거나 부분을 이전시키는 경우가 많아졌다고 한다.

 

기존의 데이터 이외의 지속적으로 쌓이는 로그데이터 및 트래픽 데이터 등을 처리하는 DB로 몽고디비의 사용량이 증가하고 있다고 한다.

 

카카오에서 실제 예로 몽고디비로 마이그레이션 이전에는 상품 데이터와 로그데이터가 혼재해있었고 수 TB의 디스크 용량으로 더이상 스케일 업에는 한계가 왔고 스키마 변경에 부담이 왔었지만,

마이그레이션 이후에는 63%나 디스크 용량이 감소했고 인덱스 서포트를 이용해 스키마 변경의 부담이 줄었으며 샤드 클러스터 구성으로 향후에 데이터 스케일링에 대한 대응이 가능해졌다고 한다.

 

 


 

카카오 몽고디비 기술섹션에서 본 몽고디비의 전망은

RDBMS와 유사한 사용 경험을 제공하면서 데이터간 연관도가 낮은 최근 서비스에 적합하고

스키마 관리, 데이터 급증, 서버 장애 등을 해결하기에 좋은 기술이기 때문에 사용량이 증가할 것이라고 보고 있었다.

 

실제로 카카오 내에서도 다양한 개발팀에서 몽고디비에 대한 관심과 실제 사용이 증가하고 있고

2020년 코로나 팬데믹 이후에 사용량 더욱 급증하고 있다고 한다.

 

 


 

 

 

if(kakao)2020 MongoDB section 후기

 

개발에 대한 공부를 하거나 실제로 개발일을 할 때에도 새로운 기술이나 개념을 접하게 되면 실제로 어떻게 사용되는지 이해하는 것이 쉽지 않다.

MongoDB의 경우에도 실제 사용해본 기술임에도 불구하고 이번 세션 발표를 들으면서 모르는 게 많았다는 것을 느꼈다.

이번 세션을 공부한 이후로 MongoDB에 대해 다시 공부해봐야겠다는 생각이 들었다.

정말 훌륭하고 친절한 발표였다 ㅎㅎ 

역시 카카오..b 카카오에 더 입사하고 싶어졌드아.. 꺅

 

 


[reference]

1. if(kakao)2020 카카오 컨퍼런스

 

 

 

 

 

 

LIST