[실리콘밸리 이야기] 150억 PV/month를 지탱하는 텀블러의 아키텍쳐 - Rainblue

제가 직전에 텀블러에 대한 카드를 올렸었는데요, 예전에 텀블러가 PHP/MySQL에서 시작해서 스케일링하는 과정을 담은 자료(http://goo.gl/CrC0P) 내용을 함께 올립니다. rainblue.kr의 레블님이 한글로 번역해 주셨습니다. ---------------------------------------------------------------------------------- 국내에는 사용자가 많지 않지만, 트위터보다 많은 트래픽을 자랑하는 마이크로 블로깅 도구입니다. (소셜 네트웤의 넘버 투 라고 자랑하네요.) 하루에 5억 PV, 초당 4만 request, 하루에 3TB 데이터를 저장하는 서비스를 위해 1천대 이상의 서버를 운용하는 텀블러. 4명의 엔지니어가 전형적인 LAMP 스택으로 시작했지만, 지금은 20명의 엔지니어가 점점 성장하는 사이트를 분산환경으로 진화시키고 있다네요. 전체의 내용이 엄청 긴데, 눈여겨 볼 대목이 꽤 많습니다. 시간되시면 전체를 일독해보시면 좋을것 같습니다. 웹서버: Apache 개발언어: PHP, Scala, Ruby 특징: sharding구조의 MySQL + Redis, HBase, Memcached등의 NoSQL을 적절히 조합 < Old Tumblr > 전형적인 Lamp 구조로 대부분의 프로그램을 PHP로 작성했다고 합니다. 이후에 MySQL을 sharding하는게 엄청난 도움이 되었고, memcache와 Redis를 활용했다고 하네요. < New Tumblr > - JVM기반(개발언어는 Scala라네요. Scala는 JVM위에서 동작)으로 전환중이랍니다. 채용과 개발속도 향상을 위해서. 그 핵심은 Scala 와 Finagle(트위터에서 개발한 RPC용 네트워크 스택)입니다. - Netty(java기반 고성능 네트웤 스택)는 좋아도 JAVA로부터 벗어나고 싶다면, Scala가 훌륭한 선택이라고 하네요. - C/libevent기반의 내부 서비스들은 Scala/Finagle 기반으로 이전중. - node.js는 아직 충분한 레퍼런스가 없어서 선택하지 않았다는 군요. - HBase와 Redis를 쓰지만, MySQL을 대체하지는 않고 있으며, 경험을 얻기위해서 제한된 영역에 조심스럽게 쓴다고 합니다.(Hbase는 write성능이 필요한 곳. 수십억개의 URL을 저장하는 단축url서비스등에 사용중) - Rails의 스캐폴딩(Rails의 CRUD용 자동 MVC생성도구입니다.)같은 것을 사용하지만, Production용이라고 합니다. - Front-end layer는 HAProxy와 Varnish가 담당. - 500대의 웹서버는 Apache와 PHP로 동작중이랍니다. - 200대의 DB서버 - Notification등의 Back-end 서비스는 PHP로 동작중 - 22대의 Redis서버를 Dashboard(텀블러 이용해보심 이해하실듯)의 데이터 저장소로 사용중. 한대당 8-32개의 인스턴스를 올려서 총 100개의 Redis 인스턴스 운용중(Redis는 이벤트 기반의 single thread라서 이렇게 멀티 인스턴스로 동작시키는게 성능측면에서 유리하다죠) - Memcache를 서서히 Redis로 이전중. < Cell Design For Dashboard Inbox > - 사용자군(user와 follower들의 묶음을 칭하는듯)의 Dashboard를 구성하는 데이터는 Cell이라는 묶음 단위로 구성하고 이는 HBase에 저장하며, Redis로 캐싱한다.(또 반대로 생각해보면 이렇게 안하면 소셜형 서비스는 구현하기가 정말 난감하죠) - 각각의 Cell이 HBase Cluser를 가진다는걸로 봐서 여러개의 HBase Cluster를 운용하는듯. - 수백만명의 follower들을 보유한 유저나 수백만명을 follow하는 active user들은 별도로 서비스 한다고 하네요 < Software Deployment > - 초기엔 rsync. 하지만 서비스가 성장하면서 점점 느려지기 시작. - 그다음엔 Capistrano(Ruby로 만든, Ruby/Rails에 주로 사용되는 오픈소스 deploy 도구)를 SSH기반으로 사용중. < Hiring Process > - 수학이나 퍼즐식의 두뇌 테스트 형식의 인터뷰는 지양. 후보자들이 실제로 할수있는것들 위주로 질문. 사람들을 걸러내기 위한게 아니고 찾기 위한 것이 인터뷰라고. - 하지만 코딩 테스트는 한다고. 심지어 전화 인터뷰를 하면서 온라인 텍스트 에디터인 Collabedit를 활용해서 코딩테스트 한다고.

I'm a man who love nature and live for five F's: Family Friends Faith Fun and Follow my dream.
Follow
4.7 Star App Store Review!
Cpl.dev***uke
The Communities are great you rarely see anyone get in to an argument :)
king***ing
Love Love LOVE
Download

Select Collections