블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


http://rainblue.kr/1045
트위터에서 재미있는 글을 찾아서 읽다보니, 발상의 전환이 필요하다고 생각되서 정리해 봅니다.
--
국내에는 사용자가 많지 않지만, 트위터보다 많은 트래픽을 자랑하는 마이크로 블로깅 도구입니다. (소셜 네트웤의 넘버 투 라고 자랑하네요.) 하루에 5억 PV, 초당 4만 request, 하루에 3TB 데이터를 저장하는 서비스를 위해 1천대 이상의 서버를 운용하는 텀블러. 4명의 엔지니어가 전형적인 LAMP 스택으로 시작했지만, 지금은 20명의 엔지니어가 점점 성장하는 사이트를 분산환경으로 진화시키고 있다네요
--
초당 4만 TPS, 경이로운 숫자입니다.
처음에는 LAMP로 개발했고 현재는 Scala로 전환중이며, 메인 데이타 베이스는 아직도 MySQL에 Sharding을 사용합니다.

대규모 분산 시스템을 설계할때 요즘은 기본적으로 NoSQL과 분산 기술을 고려합니다. 근데 이런 기술은 솔직하게 사용한 경험이 있는 사람도 많지 않을뿐더러 이는 즉 높은 품질의 서비스를 오픈하기가 어렵다는 이야기 입니다.

그렇다면 대규모 서비스의 정의는?
1. 일단 잘 팔려야 대규모 서비스도 해볼 수 있다.
2. 꼭 분산 환경이나 NoSQL을 써야 한다는 선입관을 바꿀 필요가 있다. → 기존의 MySQL등도 Sharding이나 Query Off-Loading등의 아키텍쳐를 사용하면 가능하다.
3. 나중에 아키텍쳐를 바꾸기 어렵다? → 그렇게 생각했었는데, 위의 사례를 보면 현재 Thumbler도 LAMP에서 Scala로 전환중이고, HBase와 Redis로 서서히 넘어가는 중이고, FaceBook도 예전에는 MySQL이었지만, 다른 NoSQL로 전환하였다. 그것도 운영중에.
결국 대규모 서비스는 서비스가 성공한 다음에 충분한 경험과 예산을 가지고 차차 바꿔 가면 된다.