-
kakao의 오픈소스 Ep8 - hbase-packet-inspector
hbase-packet-inspector 이번에 카카오에서 오픈소스로 공개한 hbase-packet-inspector (이하 HPI) 는 HBase 리젼서버의 네트워크 패킷을 분석해 요청과 응답 정보를 추출하는 툴입니다. 기존의 모니터링 툴을 통해서는 알 수 없었던 보다 상세한 정보들을 확인할 수 있습니다. 먼저 왜 이런 툴이 필요했는지 이야기해봐야 할 것 같습니다. 배경/동기 카카오와 다음의 많은 서비스들은 HBase 를 중요한 데이터 저장소로 사용하고 있습니다. 서비스 간의 간섭을 피하기 위해 개별 서비스는 각각 독립적인 HBase 클러스터를 사용하는 것이 원칙이며, 그러다 보니 실제 운영 중인 HBase 클러스터는 수십...
-
kakao의 오픈소스 Ep7 - CMUX: CLI에 날개를 달자!
“카카오의 오픈소스를 소개합니다” 일곱 번째는 jon.kwon과 동료들이 개발한 CMUX입니다. CMUX는 Cloudera Manager 기반의 하둡 클러스터를 관리하는데 필요한 대화형 커맨드라인 인터페이스 도구들을 제공합니다. CMUX의 아이디어를 참고해 보세요. 여러분의 커맨드라인에 날개를 달 수 있을 것입니다. 카카오의 하둡 엔지니어링 파트에서는 CMUX를 이렇게 사용합니다. 수천 대의 하둡 클러스터의 정보를 빠르게 검색하여 필요한 정보를 조회하기도 하고, 특정 조건으로 검색한 노드에 SSH 로그인하여 병렬 작업을 하거나, 특정 조건으로 검색한 관리자 웹페이지를 열어보기도 합니다. 특정 조건으로 검색한 노드에만 명령어를 실행할 수도 있습니다....
-
kakao의 오픈소스 Ep6 - Cite
“카카오의 오픈소스를 소개합니다” 여섯번째는 niko.bellic이 개발한 Cite입니다. Cite는 Container as a Service(CaaS)로서 소스코드를 빌드하고 배포하며 운영하는 일련의 과정을 자동화하는 웹 서비스입니다. Introduction Cite는 google kubernetes기반 CaaS(Container as a Service)입니다. Kubernetes는 최근 Container Orchestrator로 각광받고 있지만 설치와 운영이 복잡하기 때문에 익혀서 사용하기 위해서는 많은 시간과 노력을 필요로 합니다. Cite는 이러한 어려움을 줄이기 위해 Kubernetes Cluster를 사전에 생성하고 실제 서비스 담당 개발자가 Kubernetes Cluster로 서비스 배포/롤백 등을 할 수 있도록 Kubernetes와 GitHub을 연동하였습니다. Why Cite? Fast IT...
-
ADT 활용 예제1: MySQL Shard 데이터 재분배
샤딩의 한계 카카오의 많은 서비스들이 데이터베이스로써 MySQL을 사용합니다. 그리고 서비스 규모가 커지면 대용량 분산을 위해 샤딩을 합니다. 카카오에서 많이 사용하는 샤딩 방법으로 크게 두 가지 방식이 있습니다. range-based sharding modulus-based sharding 그러나 두 방법 모두 한계가 있습니다. Range 방식의 한계 특정 ID값을 기준으로, ID 범위에 따라 샤드를 나누는 방식입니다. ID값이 증가하는 추이를 보고서 새로운 샤드 추가가 쉽다는 장점이 있습니다. 반면에 디스크 사용량이나 쿼리 처리량의 밸런스가 많이 안 맞는 경우가 발생하기도 합니다. 아래 그림과 같이 User...
-
kakao의 오픈소스 Ep5 - Almighty Data Transmitter
“카카오의 오픈소스를 소개합니다” 다섯번째는 gordon.hahn과 동료들이 개발한 ADT - Almighty Data Trasmitter입니다. ADT는 샤드 구성이나 사딩 규칙이 바뀔 때 샤드를 재분배하는 용도로 만들기 시작했지만, MySQL에서 데이터를 수집하여 다른 MySQL로 데이터를 전송하는 - CDC와 ETL이 결합된 - 만능 데이터 전송 도구로 변모하고 있습니다. ADT는 그 자체로도 유용한 소프트웨어 도구지만, MySQL 기반의 CDC/ETL 시스템을 구축하기 위한 좋은 시작점이 될 것 입니다. ADT는 무엇을 위한 툴인가요? ADT는 MySQL의 데이터를 수집하여 사용자가 원하는 형태로 가공하거나 다른 DB에 적재할 수...
-
kakao의 오픈소스 Ep4 - HBase Tools
“카카오의 오픈소스를 소개합니다” 네번째는 terence.yoo와 동료들이 개발한 HBase Tools입니다. [HBase Tools]는 카카오에서 대규모 HBase 클러스터를 운영하면서 만들어진 도구들을 하나로 묶은 것입니다. HBase 주요 버전별 빌드를 제공하고 있어서 가져도 쓰기도 좋지만, HBase의 부실한 도구들 때문에 고생하셨던 분들에겐 나만의 HBase 도구를 만드는 좋은 시작점이 될 것입니다. 1. hbase-tools 소개 툴을 사용하면 HBase 운영 작업의 효율성이 좋아집니다. 카카오에서 사용하는 대표적인 툴 세 가지는 HBase Shell, HBase Web UI, Cloudera Manager Express Edition(이하 CM)입니다. 이 툴들은 매우 우수하지만, 꼭...
-
kakao의 오픈소스 Ep3 - HBase Region Inspector
“카카오의 오픈소스를 소개합니다” 세번째는 jg.choi와 동료들이 개발한 HBase Region Inspector입니다. HBase Region Inspector는 HBase의 여러 리젼에 분산된 데이터를 시각적으로 보여주는 실용적인 도구입니다. 카카오에서도 대규모 HBase 클러스터 운영에 큰 도움이 되고 있는 유용한 소프트웨어입니다. 특히 Clojure 와 React으로 작성되어 Clojure를 공부하려는 개발자들에게 유용할 것입니다. HBase 카카오의 많은 서비스는 대용량의 데이터를 저장하고 서비스하기 위해 Apache HBase 를 사용하고 있습니다. HBase 는 이미 잘 알려져 있으니 긴 설명이 필요하진 않을 것 같은데요. 간단히 한 문장으로 요약하자면 HBase 는...
-
kakao의 오픈소스 Ep2 - MRTE(MySQL Realtime Traffic Emulator)
“카카오의 오픈소스를 소개합니다” 두번째는 matt.lee와 동료들이 개발한 MySQL Realtime Traffic Emulator(MRTE)입니다. MRTE는 실서비스용 MySQL 서버의 트래픽을 수집하는 MRTE-Collector와, 수집한 데이터를 테스트용 MySQL 서버에서 재현하는 MRTE-Player 두 개의 툴로 구성되어 있습니다. 카카오에서도 효율적인 MySQL 운영에 큰 도움이 되고 있는 유용한 소프트웨어입니다. 특히 MRTE-Collector는 Go로 작성되어 Go로 네트웍 프로그래밍을 하려는 개발자들에게 유용할 것입니다. MySQL 서버를 사용하면서, 가끔씩 실 서비스용 MySQL 서버(Production mysql server)로 유입되는 쿼리들을 똑같이 흉내낼 수 없을까 하는 생각들을 많이 했습니다. 실 서비스용 MySQL 서버에서는...
-
kakao의 오픈소스 Ep1 - 대용량 분산 그래프DB "S2Graph"
“카카오의 오픈소스를 소개합니다” 첫번째는 shon.0와 동료들이 개발한 S2Graph입니다. S2Graph는 카카오에서 1년 여의 개발을 거쳐 카카오톡, 카카오스토리, 카카오뮤직, 선물하기, 다음앱, 다음뉴스, 다음쇼핑 등 20여개 이상의 서비스에 적용된 대용량 분산 그래프 데이터베이스입니다. [스칼라] 언어와 Play 프레임웍으로 작성된 그래프 API 서버와 HBase, Kafka, Spark 등 최근 가장 주목받는 기술들로 구성되어, 호기심으로 똘똘뭉친 개발자들에게 많은 도움이 될 것입니다.