-
kakao의 오픈소스 Ep3 - HBase Region Inspector
“카카오의 오픈소스를 소개합니다” 세번째는 jg.choi와 동료들이 개발한 HBase Region Inspector입니다. HBase Region Inspector는 HBase의 여러 리젼에 분산된 데이터를 시각적으로 보여주는 실용적인 도구입니다. 카카오에서도 대규모 HBase 클러스터 운영에 큰 도움이 되고 있는 유용한 소프트웨어입니다. 특히 Clojure 와 React으로 작성되어 Clojure를 공부하려는 개발자들에게 유용할 것입니다. HBase 카카오의 많은 서비스는 대용량의 데이터를 저장하고 서비스하기 위해 Apache HBase 를 사용하고 있습니다. HBase 는 이미 잘 알려져 있으니 긴 설명이 필요하진 않을 것 같은데요. 간단히 한 문장으로 요약하자면 HBase 는...
-
Redis의 SCAN은 어떻게 동작하는가?
Redis의 기능 중에 쓰면 안되지만, 그 단맛에 끌려 어쩔 수 없이 치게 되는 명령이 KEYS입니다. KEYS를 쓰는 순간, Redis는 이 명령을 처리하기 위해서 멈춰버립니다. 특히 트래픽이 많은 서버는 이 KEYS 명령 하나 때문에 많은 장애를 내게 됩니다. 그런데 어느 순간(!) Redis에 SCAN이라는 명령이 생겼습니다. KEYS의 단점을 없애면서도, 느리지 않은 SCAN, 어떻게 그것이 가능할까요? 이 글에서는 단순한 SCAN의 사용법을 넘어, 소스 코드를 통해 동작 원리까지 알아보겠습니다. SCAN/SSCAN/ZSCAN/HSCAN 명령 대부분의 Redis 명령처럼 SCAN도 네가지 변형이 있습니다. SCAN은...
-
Monad Programming with Scala Future
함수형 언어에 대해서 공부를 하다보면 언제나 Monad라는 녀석을 마주치게 됩니다. [Category Theory][1]의 수학적인 개념이 바탕이 되어 있는 Monad를 접하면 어렵고 난해해서, 많은 사람들이 Monad를 학습하는 과정에서 함수형 언어를 포기합니다. 하지만 Monad라는 장벽을 넘어서고 나면, 아니 조금만 이해하고 나면 함수형 언어를 개발하는데 있어서의 이해도와 생산성이 급속도로 높아지게 됩니다. Learning Curves (for different programming languages)라는 글에 보면 여러 언어의 학습과정에서 나타다는 다양한 특징을 그래프로 보여줍니다. 그 중에 Haskell의 경우 Monad의 대한 이해 과정을 거치기 전과 후가 확연하게...
-
그래, 가끔 "Vim에서" GitHub을 보자!
vimrc 건드리기 좋은 목요일입니다. ;) 기술 블로그 담당자가 글을 내놓으라고 닥달하니, 예전에 만들었던 플러그인이나 한번 꺼내볼까 합니다: https://github.com/junegunn/vim-github-dashboard Vim 상에서 GitHub API를 이용해 dashboard 페이지를 보여주는 플러그인입니다. 왜 멀쩡한 브라우저를 놔두고 이런 짓을 한 것이냐 물으신다면 … 그것 참 좋은 질문이네요. Vimscript 만 가지고는 API 결과를 받아오는 것이 불가능하므로 Ruby interface를 이용합니다만 (:help ruby) OS X 의 시스템 디폴트 Vim 에서 기본적으로 지원하기 때문에 사용하시는데 문제는 없을 겁니다. 제공하는 커맨드는 다음과 같습니다. GHDashboard[!] [user] 특정...
-
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 서버에서는...