OSCON 첫째날 II – Memcached와 MySQL

오후에는 Memcached and MySQL: Everything You Need to Know라는 튜토리얼에 들어갔습니다. Alan Kasindorf (Six Apart)와 Brian Aker (MySQL)이 진행했는데 Brian Aker라는 분이 주로 이야기 했습니다. (그런데, 이분 MySQL에 근무하면서 나름 유명한 엔지니어더군요.)

Memcached는 Live Journal, Facebook, Mixi 등 유명 스타트업 기업들이 사용해서 유명해진 분산 데이터 캐쉬 소프트웨어 입니다. Six Apart에서 소스 코드를 공개해 오픈 소스로 만들어지고 있고, 읽고 쓰기가 많은 대용량 데이터 분산 처리에 용이합니다. 물론 다양한 언어를 지원하는 라이브러리가 속속 공개되면서 많은 개발자들이 사용하기 시작했습니다.

본 튜토리얼에서는 Memcached에 대한 일반적인 클라이언트/서버 구조 소개로 시작해서 MySQL과 분리된 캐쉬풀을 어떻게 연동하는지 연동한 다양한 사례를 소개해 주었습니다. Memcached로는 데이터를 덤프할 수도 없고, 백업을 할 수도 없고 Fail-over도 안되고 인증도 제공 하지 않는다고 합니다. 이런 분산 캐쉬를 어떻게 믿고 쓰는지 대단합니다.

객체로 캐쉬를 생성하고 locking하고 expire 시키는 유용한 코드를 몇 가지 소개한 후 자신이 만든 libmemcached라는 C 라이브러리를 소개해 주더군요. 결론은 자신이 MySQL과 연동 하는 방법으로 UDP API와 libmemcached를 써서 SQL로 memcached cluster를 관리해 읽고 쓰기를 모두 캐쉬로 하는 것을 제안했습니다.

사실 제가 이렇게 간단하게 쓰는 이유는 초반에 설명이 좀 지루했고 프리젠테이션 파일을 미리 공개 해버리는 바람에 김이 빠졌습니다. 이후 내용은 PT 파일을 참고하시면 도움이 될 것입니다.

사실 국내 웬만한 대형 포털에는 자체적으로 만들거나 가져와 고쳐 쓰고 있는 분산 캐쉬 솔루션들을 가지고 있습니다만 소형 사이트의 경우 그럴 여력이 없기 때문에 memcached와 mysql을 잘 혼합해 쓰면 좋을 것 같습니다. 진짜 트래픽이 늘어나서 memcached까지 써야 될 국내 웹 사이트들이 늘어나길 바랍니다. (저도 Daum Open API 시스템에 활용할 방법을 찾아 봐야 겠네요.)

Break Time을 가지고 난 후 몇 개 트랙을 돌아 봤습니다. 고급 Ruby 메타 프로그래밍 튜토리얼은 취소 되었더군요. PHP 확장 모듈(Extension Module) 만드는 튜토리얼에서도 대충 끝내고 프리젠테이션 파일을 공개해 주었습니다.

올해 튜토리얼에는 SeaSide를 이용한 빠른 웹 개발, JavaScript 라이브러리 소개 등 지난 해 웹앱스콘에서 해봤던 몇 가지 주제들이 들어가 있는게 흥미로웠습니다. 올해 웹앱스콘에서도 튜토리얼 세션들은 좀 더 내실을 다져야 할 것 같았습니다. 해외 컨퍼런스에서 튜토리얼은 좀 아는 사람들한테는 아마 발표자들 연습용인것 같은데 그만큼 초보 기술자들이 많다는 증거겠죠. 초반에 튜토리얼을 끝내고 스피커랑 질답하는 사람도 잘 아는 사람이던데 그런 사람들이 왜 왔는지 잘 모르겠더군요.

어쨌던 내일도 튜토리얼인데 ‘오픈 소스로 3시간만에 서비스 만들기’랑 ‘괴짜 개발자 사람들과 소통하기’ 같은 주제에 들어갈려고 합니다만 웬지 실망할 것 같은 예감이 드는 군요. 혹시 여러분이 관심있는 튜토리얼이 있으시면 댓글로 알려주시면 제가 대신 들어가도록 하겠습니다.

- ;

Disclaimer- 본 글은 개인적인 의견일 뿐 제가 재직했거나 하고 있는 기업의 공식 입장을 대변하거나 그 의견을 반영하는 것이 아닙니다. 사실 확인 및 개인 투자의 판단에 대해서는 독자 개인의 책임에 있으며, 상업적 활용 및 뉴스 매체의 인용 역시 금지함을 양해해 주시기 바랍니다. 본 채널은 광고를 비롯 어떠한 수익도 창출하지 않습니다. (The opinions expressed here are my own and do not necessarily represent those of current or past employers. Please note that you are solely responsible for your judgment on checking facts for your investments and prohibit your citations as commercial content or news sources. This channel does not monetize via any advertising.)

여러분의 생각 (4개)

  1. aero 댓글:

    memcached는 livejournal의 설립자이자 OpenID의 창시자인 천재 Perl해커 Brad Fitzpatrick란 사람이 처음으로 만들었습니다. 이후 livejounal이 sixapart에 인수되고 다시 러시아의 유수 인터넷 업체인 SUP에 인수되자 회사를 떠나 현재는 구글에 들어가서 Opensocial을 주도하고 있죠. 그는 memcached이외에도 대용량 서비스를 위한 Perl기반의 다양한 인프라(danga닷com)를 만들었는데 이것을 Sixapart에서 물려받아서 code닷sixaprt닷com 에서 지속적으로 개발되고 있습니다.

  2. keedi 댓글:

    리눅스 매거진의 편집장 Martin Streicher은 “If XCache and XDebug are turbochargers, memcached is a jet engine.” 라고 했었죠. 말씀하신대로 memcached는 보안 부분이 빠져 있기 때문에 memcached 와 다른 보안기술을 연동해서 써야합니다. 이런 분산 캐시를 어떻게 믿고 쓰냐는 부분은… :-) 분산 캐시를 믿는다기 보다는 다른 보안기술과 연동해서 쓰기 때문에 문제가 없겠죠. memcached를 쓰는 제법 유명한 사이트들로는 라이브저널을 비롯한 뉴욕타임즈, 슬래시닷, 위키피디아, 트위터 등 꽤 많죠. 아! 유튜브도 있군요. :-)

  3. Channy 댓글:

    원래 구조 자체가 Giant Cache기 때문에 문제가 있다는 것은 아니었구요. 다들 알아서 커스트마이징해서 쓰고 있다는 게 대단하다는 뜻이었습니다.

    참고글…
    FOWA 08 Day 2 – Matt Mullenweg : WP의 구조
    FOWA 08 Day 1 – 워크샵 Improving Performance

  4. 한재선 댓글:

    memcached 이용사례로 Google App Engine을 빼 놓을 수 없죠. ^^ Brad가 구글에 들어가더니 App Engine에 memcached API를 추가하는군요. Bigtable 사용량을 줄일 수 있겠죠. http://code.google.com/appengine/docs/memcache/