tumblr 에서 사용하고 있는 개발 관련 기술

문태준의 이미지

https://groups.google.com/forum/#!topic/sysadminstudy/bx2jKbnfpv8 에 포스팅했던 내용입니다.

tumblr 에서 사용하고 있는 기술에 대한 내용이네요.
http://highscalability.com/blog/2012/2/13/tumblr-architecture-15-billion-page-views-a-month-and-harder.html

기술적으로 부딪친 문제들을 어떻게 해결했는지, 사용하고 있는 오픈소스는 무엇인지 자세히 나와 있네요.
개발언어로 JVM 에서 동작하는 Scala 라는 것을 이용
memcache, redis 등의 in memory key-value store 기술 이용
Mysql sharding 기술 이용(파티셔닝)
Kestrel, Gearman 등의 MQ, job 큐잉 서비스 이용
HAProxy, Varnish(cache) 를 이용하여 웹서비스 부하 분산
애플리케이션 배포를 위해서 Capistrano, func, Puppet, Jenkins(hudson 에서 파생된 프로젝트) 등..

저는 그다지 써먹을 일이 없지만 개발쪽에서는 유용한 자료일 듯 하군요.
사이트 링크를 보면 Mysql sharding 에 pdf 도 있어서 db쪽 담당하는 분한테는 참고가 될 듯.

- Software
OS X for development, Linux (CentOS, Scientific) in production
Apache
PHP, Scala, Ruby
Redis, HBase, MySQL
Varnish, HA-Proxy, nginx,
Memcache, Gearman, Kafka, Kestrel, Finagle
Thrift, HTTP
Func - a secure, scriptable remote control framework and API
Git, Capistrano, Puppet, Jenkins

- Hardware
500 web servers
200 database servers (many of these are part of a spare pool we pulled from for failures)
47 pools
30 shards
30 memcache servers
22 redis servers
15 varnish servers
25 haproxy nodes
8 nginx
14 job queue servers (kestrel + gearman)

댓글

문태준의 이미지

오늘 zdnet 뉴스를 보다보니 재미있는 것이 있네요.
Cafe24에서 memcache, redis 를 이용한 호스팅을 시작했네요.
또 서버호스팅에서 10G 제공도 시작을 했군요.

메모리 캐싱 기반 호스팅, 어떻게 쓸까?
http://www.zdnet.co.kr/news/news_list.asp?zdknum=0020

호스팅 시장, 기본 10G 시대 열렸다
http://www.zdnet.co.kr/news/news_view.asp?artice_id=20130723143639

memcache, redis 는 in memory key-value store 라고 하여 DBMS 앞단에서 메모리 기반의 가벼운 캐쉬라고 생각을 하면 됩니다.
해외의 큰 사이트들에서는 요즘 많이 사용을 하고 있는 기술들입니다.

제가 있는 회사 내부에서도 일부 redis를 사용하려 하거나 사용하고 있는 것 같습니다.
Graylog/elasticsearch 에서도 redis 프로세스가 있는 것을 보면 redis를 이용하는 것으로 보입니다.

SSD, Fusion-io 같은 하드웨어 기술을 이용하여 하드웨어적으로 성능을 높이는 것도 의미는 있겠지만 제 생각에는 다른 기술들을 이용하여 하드웨어 의존하지 않고 성능, 확장성을 높이는 것이 필요하지 않을까 그런 생각이 듭니다.
물론 기존의 솔루션, 애플리케이션을 바꾸는 것은 쉽지 않지만요.

Mysql 이든 Maria DB든 replication, sharding(파티셔닝 기능)을 이용하여 write 와 read 부분은 분리하고 애플리케이션에서도 파티셔닝 기능을 이용할 수 있도록 구현을 합니다.
그 앞단에는 redis, memcache 등의 메모리 캐싱 기술을 이용합니다. 물론 redis, memcache 등도 죽을 수 있기 때문에 오픈소스쪽의 여러 ha 솔루션들을 이용하면 됩니다.

---------------------------
문태준
http://groups.google.co.kr/group/sysadminstudy 시스템어드민 공부모임
http://tunelinux.pe.kr
http://database.sarang.net

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.