트위터가 어떻게 개발되었을 까? 아래는 타임지에 실린 트위터의 기사이다. 타임지에서 트위터가 우리의 삶을 어떻게 바꾸어 놓을 것인가 에 대한 기사를 실었다. 이처럼 현재 트위터같은 실시간 웹은 온-오프라인을 넘나들면서 새로운 문화를 만들어 가고 있다.

사용자 삽입 이미지

개인적으로도 맥장비에는 Twitterrific 을 설치하고 윈도우의 FireFoX에는 Twitter Extension을 설치하여 사용하고 있다. 분명한 것은 트위터가 폭발적으로 성장하고 있고 앞으로도 성장할 것이라는 것이다. 개인적으로는 무선 환경 특히 , SMS 서비스로 길들여진 실시간 정보 교환 문화가 140개의 문자로 소통하는 트위터를 성장시킨 밑거름이 아닐까 싶다. 지금도 인터넷에서는 트위터로 , 현실에서는 핸드폰 문자와 포스트잇으로 의사를 교환하곤 한다. 

사회.문화적 관점을 떠나 개발자 입장에서 트위터가 어떻게 개발이 되었을까 고민을 하며 그 기술을 추적을 해보았다. 특히, 트워터는 실시간에 대용량 데이타에 대한 Push 서비스를 제공해야 하기 때문에 서비스의 구조와 운영 기술은 아주 중요하다. 

먼저 트위터의 아키텍쳐에 대한 전반적인 소개 자료를 보면 트워터는 아래와 같은 기술을 사용하여 개발되었다.

-개발 언어 : Ruby on Rails , 자바 , Scala
-시스템 관리 : Puppet , 오픈소스 서버 관리 툴
-Cache : Memcache , 오픈소스 분산 객체 캐쉬 시스템(트워터의 성능을 위해 중요한 역할을 한다.)
-H/W : X86 기반 리눅스
-DBMS : MySQL
-Web Server : Apache
-서비스 특징 :  일반 웹 서비스처럼 웹 페이지를 중심으로 서비스를 제공하는 것이 아니라 트워터 서버에서 API를 제공하고 이를 통해 웹과 디바이스등 다양한 생태계를 구성하고 있다.

트위터의 경우 웹 프론트는 성능의 이유때문에 Ruby on Rails를 사용하고 백엔드는 자바를 사용한다. 특히, 자바를 사용할 때 Scala 를 함께 사용한다.  Scala는 자바 등의 언어와 함께 사용하여 보다 코드는 간결하게 만들어주는 개발 언어이다. 간략히 테스트 코드는 보면 스칼라 코드에서 직접 자바 라이브러리를 호출하여 사용할 수 있다. 이렇게 자바와  Scala , Memcache 를 사용하여 초기 서버를 구축하여 2008년까지 사용하였다.

이렇게 개발된 시스템의 현재 상황은 다음과 같다.

- 초당 600개의  Request를 처리함
- 초당 평균 200-300 커넥션( 초당 800 커넥션 까지 확장 가능함 )
- MtSQL 은 초당 2,400 Request를 처리함
- 웹 서버는 Mongrel 이고 180개의 레일스 인스턴스를 운용
- 8 코어 하드웨어 박스에 1 MySQL 서버와 1 슬래이브 구성( 슬래이브는 통계 및 레포팅용으로 데이타 마트 구성 )
- 예외 상황에 대비하여 30개 이상의 추가 프로세스를 운영중
- Sun X4100 모델, 8대
- 평균 DB에서 처리 시간 : 50-100 밀리초
- 16GB Memcached

트위트 사이트보다 트위트의 API가 10배 이상 호출이 많다고 한다. 이러한 상황에서 최대한의 성능을 내기 위해 당연히 DB를  denormalization하여 테이블간의 죠인을 줄이고 , 메모리 캐쉬에 모든 데이타를 올려놓아서 성능을 보장한다.

과거 DBMS 수업시간에 DBMS Normalization을 배우고 오라클에 종속적인 지식을 갖고 있는 DA(Data Architecture)가 테이블과  SQL을 설계하고 곳에서는 상상할 수 없는 일이다. 왜 Normalization을 안하냐고 당장 공격이 들어올니까.. 그게 그 분들의 밥줄이기도 하지만... 얼추 계산해 보니 하드웨어와 기타 라이센스 해서 2억 정도면 서비스를  구축하지 않을까 싶다. 나머지 상용제품은 눈을 씼고 찾아볼 수 없다... 쩝.. 외국 회사의 장비와 소프트웨어를 구매해야 데 많은 비용을 써야 하는 입장에서는 가슴이 아프다..

Posted by 박재현

댓글을 달아 주세요

  1. 익명 2009.06.29 16:27  댓글주소  수정/삭제  댓글쓰기

    모르는 사람이 보면 "웹프론트는 성능의 이유로 레일즈를 사용하고 백엔드는 자바를 사용한다"라는 표현이 오해가 있습니다. 레일스가 느리다는 사실을 아는 사람이야 레일스 느려서 백엔드 바꿨다로 이해하겠지만요.

    그리고 nokarma 저 분은 말투 저러기로 유명한 분이니 흥분하지 마세요. 저 분하고 일하는 사람이 얼마나 피곤할지 걱정되네요. 일부러 감정의 변화를 일으켜서 무슨 카타르시스를 느끼는 듯 합니다. 좋게 얘기했으면 "오해의 소지가 있었으니 정정합니다" 정도로 끝날 수 있는 얘기였는데요.

  2. Favicon of https://wisefree.tistory.com BlogIcon 박재현 2009.06.29 16:35 신고  댓글주소  수정/삭제  댓글쓰기

    ^-^ 그러게요.. 오르시는 분의 입장에서 오해의 소지가 있는 것 이해합니다. 아무래도 댓글의 첫단추가 존중이라는 기본 소양에서 끼워지지 않아서 그런것 같긴 합니다. 내가 모자란 탓이기도 하겠죠.. 짬짬히 어려운 시간내서 블러깅하기도 힘들어지내요.. 그래서 트위터를 점점 더 하게 되는 것 같습니다. 상용 블러그도 아닌데요.. ^-^ 좋은 말씀감사합니다.

    • 흥분금지 2009.06.29 18:06  댓글주소  수정/삭제

      제가 알기로 저분은 국내에 IT 블로깅이나 글을 좀 쓴다하는 분들 모두를 저런씩으로 찍접거리는 것을 낙으로 삼고 계신 분입니다. 아마 해외 있으니 얼굴 철판 깔고 그럴 수 있다고 보는데, 자기 신분 밝히고 켄트백이나 이런 사람 블로그에도 이 따위 말투로 말할 수 있을런지 모르겠습니다. 그냥 자기 잣대로 사람 재단하는 걸 즐기는 사람입니다. 휘말리지 마세요.

  3. Favicon of http://sparck.tistory.com BlogIcon sparck 2009.06.29 19:21  댓글주소  수정/삭제  댓글쓰기

    흐음 보통, twitter 정도의 엄청난 유저의 서비스를 유지하기 위해서는 당연히 비싼 Oracle DB/WAS/SOA Suite 등으로 무장해 있을 것 같은데, 저렴하게 시스템을 구축/운영하면서도 좋은 서비스를 제공하고 있네요.

  4. 컴사랑 2009.07.01 11:02  댓글주소  수정/삭제  댓글쓰기

    저렴하게 저런 서비스를 운영할 수 있다니...
    그러면서 훌륭한 서비스를 하다니..
    부럽군요.

    • Favicon of https://wisefree.tistory.com BlogIcon 박재현 2009.07.01 15:53 신고  댓글주소  수정/삭제

      동감입니다. 오픈소스를 적용하는 데 있어 기존 회사들은 인력과 기술 지원 등으로 인해 많은 부담을 갖고 있는 것 같습니다. 국내에도 오픈소스 기반의 인프라 서비스를 하는 회사들이 있어도 좋을 것 같습니다. 최소한 아파치, 톰캣, 멤캐쉬 등과 제대로 Deploy해도 많은 효과가 있을 텐데요.. 요즘 환율이 올라 오라클 제품은 더 비싸진 것 같습니다. 유지보수 비율도요... ^-^

  5. 지나가던 2010.05.31 10:51  댓글주소  수정/삭제  댓글쓰기

    이 분야에 대해 잘은 모르지만 상세한 정보 감사합니다. ^^


스마트폰을 통한 모바일 환경이 일상화 되면서 웹 클라우드와 모바일 디바이스간의 동기화는 아주 중요한 기본 서비스로 자리잡고 있습니다. 가령, RIM의 블랙베리는 Push Mail을 앞세워 비지니스 맨들의 문화를 바꾸면서 이 분야의 강자로 자리잡았습니다. 이러한 Push Mail의 구현 방법중 하나가 바로 씽크 기술을 이용하는 것 입니다. 간략히 모바일 클라우드와 동기화 서비스의 현황에 대해 정리해 봅니다. ( 참고로 아래 그림들은 테크런치에 올라온 싱크 솔루션에 대한 비교 자료에서 발췌한 것 입니다. 해당 자료는 실제 오픈소스  씽크 솔루션과 플랫폼 제공업체인 Funambol에서 작성한 자료입니다. )


1. 동기화 대상

아래 그림은 모바일 클라우드와 모바일 디바이스간의 동기화 대상을 정리한 것 입니다. 전체적으로는 사진과 주소록, 전자우편,소셜 네트웍,일정 데이타가 현재 주요한 동기화 대상임을 알 수 있습니다. Apple MobileMe와 Funambol, MS Myphone,Nokia OVI,Plam Synergy 에서 이들 데이타를 동기화해주고 있습니다. 아마 다른 서비스들도 조만간 이들 데이타의 동기화를 모두 제공할 것입니다.
 
사용자 삽입 이미지

개인적으로는 앞선 데이타 타입들 외에 사용자 정의 데이타(User defined data type)에 대한 동기화의 지원 여부가 중요한 경쟁요소가 될 것이로 보입니다. 현재 모바일 플랫폼의 개발 환경이 개방화되면서 개발자들이 자발적으로 많은 어플리케이션을 개발하고 있습니다. 또한 핸드폰 뿐만 아니라 디자탈 액자, TV 등 다양한 디바이스간 동기화가 필요하기 때문에 보다 어플리케이션에서 사용자가 정의한 데이타에 대한 동기화 지원이 아주 중요해 질 것으로 보입니다.

사용자 정의 데이타외에 또 하나 중요한 동기화 대상은 외부 서비스 데이타(External service data type)에 대한 동기화입니다. 다음은 현재 각 동기화 서비스서 지원하는 외부 쇼셜 서비스의 대상이다. 현재 플리커와 페이스북에 대한 동기화를 주로 지원하고 있습니다. 그러나 현재 이들 서비스외에 Twitter나 Friendfeed같은 실시간 마이크로블러깅 등 모바일 분야의 Killer Application 들에 대한 지원이 주요한 경쟁력으로 부각되고 있습니다.

사용자 삽입 이미지

2. 비용

대부분의 서비스가 무상으로 제공되고 있음을 알 수 있습니다.  아마 기본 서비스는 무상으로 제공되겠지만 백업이나 기타 다른 디바이스로의 Restore 등 기타 부가 기능을 제공한 프리미엄 버전이 동시에 제공될 것입니다.

사용자 삽입 이미지

3. 동기화 방법

단순히 모바이 디바이스상의 데이타를 웹상의 모바일 클라우드로 백업을 하는 개념의 동기화하면 그 구현은 단순할 것입니다. 그러나 양방향으로 실시간에 이들 데이타를 동기화하기 위해서는 많은 고민이 필요합니다. 특히, 모바일 디바이스는 장비 특징상 대기 시간이 길수록 밧데리가 빨리 소모하며, 고정 IP가 아니라 수시로 IP가 변경되는  특징들 때문에 보다 스마트한 구조를 필요로 합니다. 일반적으로는 기존의 SyncML을 사용하거나 블렉베리 처럼 자체 개발한 표준 방법을 사용하여 개발합니다.

사용자 삽입 이미지

- 자체 개발한 미들웨어와 프로토콜 사용
현재  Push Mail을 가장 먼저 서비스한 RIM의 블랙베리는 기존의 메일 서버와 블랙베리 디바이스 간에 자체 개발한 미들웨어와 프로토콜을 사용하여 기존 메일 서버를 모니터링한 후 새로운 메일을 가져와서 블랙베리 디바이스에 Push를 합니다. 이 때 사용하는 프로토콜은 자체 개발한 것 입니다.  
 
- 기존 표준 방법의 확장 모델
기존의 대표적인 디바이스상의 동기화 방법은 SyncML을 이용하는 것입니다. 따라서 많은 동기화 서비스들은 HTTP(S) 프로토콜과 SyncML에 기반하여 개발합니다. 메일의 경우에는 IMAP IDLE(RFC2177) 커멘트를 사용하여 동기화를 하기도 합니다. IMAP IDLE 커멘트는 디바이스가 메일을 받을 수 있는 상태라는 것을 알려주는 커맨트입니다.

아래 그림은 MS에서 구현한 Direct Push 란 Push mail 모델입니다. Exchange server 2007에 구현되어 있는 이 방법은 Device가 Long-standing https로 동기화를 요청하면 이에 따라 사용자의 메일 박스의 상태를 점검하여 새로운 메일을 Device에 HTTP 프로토콜을 통해 SyncML로 Push를 해 줍니다.

사용자 삽입 이미지

모바일 디바이스를 이용하다 보면 간혹 디바이스를 잃어버리거나 다른 디바이스로 변경을 할 경우가 종종 발생합니다. 이 때, 가장 필요했으면 하는 기능이 바로 기존의 정보를 백업하거나 해당 정보를 다른 디바이스로 쉽게 옮기는 것입니다. 이처럼 모바일 환경이 일반화되면서 모바일 디바이스와 웹 클라우즈, 모바일 디바이스간 동기화는 아주 중요한 기본 서비스로 자리 잡을 것 입니다. 또한 외부 쇼셜 서비스를 비롯하여 새롭게 개발되는 모바일 웹 어플리케이션에서 동기화 기능은 필수적인 기능이 될 것 입니다. 


Posted by 박재현

댓글을 달아 주세요

  1. Favicon of https://nusys.tistory.com BlogIcon nusys 2009.06.17 12:25 신고  댓글주소  수정/삭제  댓글쓰기

    사용자 관점에서는 BUS구조로, 혹은 Hub형태로 다양한 이기종 디바이스 들과 서비스, PC에 비정형 데이터까지 싱크하는 것이 베스트 겠습니다만 - Business stakeholder들을 고려하면 요원한 일 처럼 여겨집니다. 10년 치 데이터까 켜켜이 쌓인 제 Palm desktop과 그 일부를 상속처럼 물려받은 Windows mobile과 아웃룩, 그리고 그 중 다시 일부를 물려받은 회사의 노츠와 구글 서비스들 그리고 그나마 남은 유산을 떨어머은 맥과 아이팟의 iCal. 그리고 완죤히 따로노는 저의 메인 Feature phone.
    Diverse하게 사용하는 극단이겠지만 위의 topology를 구성하느라구 수십 시간과 수십 불 그리고 팔자에없는 encoding 공부. (companion sw들이 한글과 맥에서의 한글은 어찌 그리 따로노는지...) 어찌보면 악몽 같고.. 어찌보면 인생 처럼 부질없는 데이터에 집착하고 있구나 하는 관조까지 가지게 합니다.
    주절 합니다만.. 결론은 현실에서는 구글과 같은 클라우드 플레이어가 큰형님의 대안이 될 것 같고, 그도 아니라면 그냥 알아서 자알... 한동안은 스스로 자알.. 해야 하는 구나 싶습니다. 팜 Pre도 그런 관조의 눈길에서 Palm Desktop을 버린게 아닐른지..


세상의 모든 것들의 웹으로의 연결이 가속화되고 있다. 특히, 손안의 인터넷이라 말할 수 있는 스마트폰이 확산되면서 웹은 생활의 일부가 되어 가고 있다. 디지탈 카메라나 스마트폰으로 찍은 사진과 동영상이 실시간에 플리커유튜브같은 웹에 업로드되고 , 페이스북이나 트위터에 남긴 글들을 스마트폰을 통해 실시간으로 모니터링을 하고 답변을 달기도 한다. 쇼핑을 할 때는 가격 비교 사이트에서 조회를 하고 다시 가격 비교 사이트에 낚이는 것을 방지하기 위해 내 쇼셜 네트웍에 있는 친구들에게 자문을 구하고 쇼핑을 한다. 이 모든 것이 현재의 모습이다. 과거에 비해 다른 것은 점점 더 웹이 실시간화 되고 있다는 것이다.


실시간 방송
직접 야구장에 가서 경기를 관람하는 게 가장 좋치만 그렇치 못할 경우에는 포탈에서 제공하는 실시간 방송을 보곤한다. 특히, 포탈의 실시간 방송이 재미난 것은 사용자들이 실시간에 올리는 댓글이다. 물론, 때론 눈살을 찌푸리게 하는 경우도 있지만 사용자의 반응을 실시간에 보는 것 만으로도 무척 즐겁다. 간혹 실시간 캠을 통해  독도나 한강변을 보기도 한다.

사용자 삽입 이미지


실시간 정보 - 교통,주식,등등
포탈에서 제공하는 실시간 정보도 유용하다-교통,주식 정보 등등. 아쉬운 점은 실시간으로 변경되는 해당 정보를 일일이 포탈에 방문해야 확인할 수 있다는 점이다. 실시간 웹으로 발전하기 위해서는 해당 정보를 전달받을 수 있도록 RSS,Atom같은 피드를 제공하면 보다 유용할 것이다.

사용자 삽입 이미지



실시간 검색
구글의 검색은 방대한 양의 HTML 데이타를 크롤러가 수집하고 이를 색인한 후 검색한다. 크롤러가 수집하는 HTML은 실제 죽어있는 데이타이다. 보다 생생하고 살아있는 정보는 없을까? 일반적으로 쇼셜 서비스로 알려져 있는 트위터(Twitter)의 서치는 검색양에 있어 구글보다는 못하지만 실시간으로 살아있는 정보를 조회할 수 있다. "Samsung Electronics"란 단어로 만들어지는 실시간 정보를 트워터는 제공해 준다. 구글의 죽어있는 문서간의 연결되는 URL을 기반으로 한 페이지 랭킹 알고리즘과 실시간 사람들의 관심사를 랭킹으로 한 알고리즘은 많은 차이가 있을 것 같다. 나는 문서 검색을 할 때는 구글을 이용하지만 사람들의 관심사와 지식에 기반한 정보를 원할 때는 트위터 서치를 이용한다.

사용자 삽입 이미지


실시간 매쉬업
페이스북, 마이스페이스,구글 독스,구글 리더,트위터,플리커,피카사,유튜브,.. 현재 사용하고 있는 사이트만 나열해 보아도 10가지는 넘는 것 같다. 이 들 사이트에 실시간에 업로드되는 나와 관련된 정보는 얼마나 많을까? 이들 정보를 조회하는 것도 무척 큰 일이다. 이러한 다양한 서비스들의 실시간 정보들을 한 곳에서 실시간에 조회하고 관리하는 서비스를 이용하면 손쉽게 해결할 수 있다. friendfeed를 이런 용도로 사용한다. friendfeed를 이용하여 내가 가입되어 있는 많은 쇼셜 서비스와 정보를 실시간에 확인하고 업로드할 수 있다.

사용자 삽입 이미지


아주 다양한 분야에서 웹이 실시간화되는 것을 볼 수 있었다. 이렇게 웹이 실시간화 되면서 사회,문화적으로도 많은 영향을 줄 것이다. 보다 스마트해진 디바이스들을 통해 텍스트와 이미지, 동영상 등이 업로드될 것이며 이를 항상 휴대하는 스마트폰을 통해 실시간에 조회하고 참여하여 정보를 생산하게 될 것이다.  모바일 디바이스가 실시간 웹을 항상 사용자에게 전달하는 매개체가 되면서 기존의 통신 수단이라는 개념에서 탈피하여 사용자를 실시간 웹을 연결해주고 궁극적으로는 하나의 노드가 되도록 해준다. 사용자는 실시간 정보를 생산해 내는 생산자이자 이 정보를 이용하여 다양한 활동을 수행하는 소비자가 될 것이다. 과거부터 현재까지 우리는 SMS 단문 서비스를 실시간처럼 사용해 오고 있다. 어떤 경우에는 SMS가 실시간 서비스인 것 같다. 아니 우리는 SMS를 실시간 서비스인 채팅처럼 사용하고 있다. 마찬가지로 우리는 웹을 실시간으로 이용하게 될 것이다. 실시간화된 웹이 바로 차세대 웹의 모습중 하나가 아닌가 싶다.



Posted by 박재현

댓글을 달아 주세요

  1. Favicon of https://futurewalker.tistory.com BlogIcon 퓨처 워커 2009.05.19 15:04 신고  댓글주소  수정/삭제  댓글쓰기

    실시간이라~. 특히 성격급한 우리나라 사람들에게 딱 맞는 속성인 것 같습니다. ^^;

  2. Favicon of https://wisefree.tistory.com BlogIcon 박재현 2009.05.19 15:27 신고  댓글주소  수정/삭제  댓글쓰기

    그렇쵸. 성질급한 우리나라 분들에게 핸드폰이 딱맞듯이 핸드폰 디바이스에 올라갈 어플과 웹 서비스에서 실시간은 맞을 것 같습니다. 실시간 인프라 좀 만들고 싶어라.. 과거 닷컴 버플때 채널 개념을 이용한 서비스가 있었는데.. 그 채널을 웹 채널로 돌리면 멋질 것 같은데...

  3. Favicon of http://chaco.tistory.com BlogIcon 챠코 2009.06.01 16:16  댓글주소  수정/삭제  댓글쓰기

    잘 읽고갑니다 ^^

  4. Favicon of https://logfile.tistory.com BlogIcon 와이엇 2009.06.30 22:19 신고  댓글주소  수정/삭제  댓글쓰기

    트랙백 감사합니다. 저도 실시간 검색이 차세대 웹의 근간이 될거라는 생각을 하고 있습니다. 앞으로 어떻게 발전할지 기대가 되네요.

    • Favicon of https://wisefree.tistory.com BlogIcon 박재현 2009.07.01 10:13 신고  댓글주소  수정/삭제

      쇼셜 + 실시간이 전 웹 기반 서비스 분야에 공통적으로 적용돼야만 경쟁력이 있을 것이라 확신합니다. 지금은 트위터같은 플랫폼이 초기 이런 흐름을 리드하지만 분명 보다 창의적인 서비스가 나올 것으로 보입니다.

  5. Favicon of http://www.livek.com BlogIcon 라이브K 2010.01.14 18:37  댓글주소  수정/삭제  댓글쓰기

    국내최초 실시간검색서비스인 라이브K (http://www.livek.com)이 출시되었습니다.