[입 개발] twemproxy, redis, memcached 의 서버 사이드 proxy

혹시나 redis 에 관심이 많으신 분이 계시다면, 희소식이 있습니다. 아시는 분들은 이미 아시겠지만 twitter에서 만든 memcached 와 redis를 위한 서버 사이드 proxy 인 twemproxy 가 바로 그것입니다. 사실 memcached만 본다면 이미 moxi 라는 서버 사이드 proxy가 있기 때문에, 크게 생각을 안해도 되겠지만, redis를 쓰시는 입장에서는 꽤 구미가 당기는 소식일 수 밖에 없습니다. antirez도 열광하며, 블로그에 글을 올렸더군요. http://antirez.com/news/44

 

어차피 사용법이나 이런 것은 간단하지만, 간단하게 소개하자면, https://github.com/twitter/twemproxy 에서 해당 소스를 받을 실 수 있고, 혹시나 libtool이 설치가 안되어 있으면 autoreconf 시에 에러가 나므로, 설치해 주시면 될 것 같습니다. 두 번째로 설정을 보면 여러 그룹을 등록 할 수 있도록 되어 있는데, 여러개 다 안쓸 테니 그냥 conf/nutcraker.leaf.yml 정도만 수정하셔도  됩니다. 이 때 redis를 쓰시면 꼭 설정에 redis: true 가 있는지 확인하셔야 합니다.

 


redis: true

 

이게 없으면 memcached text protocol로 동작하게 됩니다. twemproxy는 memcached의 경우 binary protocol은 지원을 안해줍니다. 그 대신 연결이 안되는 서버는 접속 목록에서 제거해주는 기능도 있고 속도도 빠르다고 합니다.(아직 실제 서비스에서는 전 못써 봐서) 그리고, 사용하고 있는 업체들이 twitter, tumblr, pinterest 등으로 이미 트래픽으로는 검증된 회사들이라는 것도 장점이겠죠.

 

그럼 이제 좋은 얘기들은 널려 있으니, 어떤 분들은 쓰면 안되는지 간단하게 소개하려고 합니다. 일단 redis 기능 중에 구현안된 것들이 많습니다. 기본적인 기능은 사용이 가능하지만, 전체 서버를 대상으로 해야 하는 기능들은 계속 지원이 안될 것 같기도 합니다. 예를 들어, “AUTH”, “PING”, “MSET” 이런 것들이 안됩니다. 아마도 전체 서버로 리퀘스트를 요청한다음, 한 서버만 장애났을 때, 기존 프토토콜 앞에서 이를 전달할 수 있는 방법도 없고, rollback 도 어렵기 때문이지 않을까 싶긴 합니다.(개인적으로 저도 redis client-proxy, server-proxy를 만들어보다가 좌절하고 있는 부분이 바로 이 부분들 때문입니다. 그래서 twemproxy를 보니 과감하게 전부 패스군요 T.T)

그리고 keys 같은 명령도 쓰시는 분은 같은 이유로 안되므로, 쓰기가 곤란하실 듯합니다. 사실, keys는 쓰지 말라고 권장되어 있지만, 많은 분들이 쓰시고 계시므로 쿨럭…

 

그럼 간단하게 소개를 마칩니다. 다음번에는 소스에 대해서 좀 까보도록 하겠습니다.