Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

모바일 메신저 아키텍쳐 소개

18,705 views

Published on

모바일 메신저 아키텍쳐
• 모바일 메신저 서비스 현황
• XMPP 소개
• LINE, Kakao Talk 아키텍쳐 소개

Published in: Mobile
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ...................................ALL FOR EBOOKS................................................. Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ...................................ALL FOR EBOOKS................................................. Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • -- DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT -- ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... (Unlimited)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes ,Download or read Ebooks here ... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M }
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • -- DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT -- ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... (Unlimited)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

모바일 메신저 아키텍쳐 소개

  1. 1. 모바일 메신저 아키텍쳐 2015.03.31 정효기(hyogij@gmail.com)
  2. 2. Contents • 모바일 메신저 서비스 현황 • XMPP 소개 • LINE, Kakao Talk 아키텍쳐 소개 • 메신저를 만든다면? 2
  3. 3. 모바일 메신저 점유율 (2014년 12월) 월간 사용자(백 만명) Reference : http://www.statista.com/statistics/258749/most-popular-global-mobile-messenger-apps/ 6 억 5 억 1.7 억 4.8 천만 3
  4. 4. Instant Messaging 서비스 표준화 동향 • IETF’s Session Initiation Protocol (SIP) • Henning Schulzrinne와 Mark Handley가 1996년 고안, 2000년 표준으로 채택 • IP network 상에서 음성, 화상 전화와 같은 multimedia 통신을 제어하기 위해 정의된 signaling protocol • SIP for Instant Messaging and Presence Leveraging Extensions (SIMPLE) • SIP를 기반으로 instant messaging, presence protocol 을 명세 • the open XML-based Extensible Messaging and Presence Protocol (XMPP) • 1998년 Jeremie Miller에 의해 만들어져 2004년 IETF 표준이 됨 • Instant Messaging and Presence Protocol (IMPP) • Application Exchange (APEX) Reference : http://en.wikipedia.org/wiki/Comparison_of_instant_messaging_protocols 4
  5. 5. eXtensible Messaging and Presence Protocol (XMPP) • XML에 기반한 실시간 메시지 지향 공개 표준 통신 프로토콜 • 두 네트워크 피어 간에 실시간으로 메시지를 주고 받고, 
 부재 여부를 파악하며, 구조화된 정보들 전달 • Google Talk, Facebook chat, WhatsApp, 
 Windows Live Messenger 등에 이용
 
 
 
 Reference : http://www.ibm.com/developerworks/library/x-xmppintro/, http://xmpp.org/ XML DocumentClient Server
  6. 6. XMPP 프로토콜 특징 특징 설명 Open free, open, public 프로토콜 Standard IETF(국제 인터넷 표준화 기구) 표준 Proven 수천 개의 서버, 수백만의 사용자 확보 Decentralized Email과 유사한 방식으로 확장 Secure SASL(Simple Authentication Security Layer), 
 TLS(Transport Layer Security) 등 규격 지원 Extensible XML namespace에 의해 자신만의 프로토콜을 코어위에 확장 Flexible IM 위에 네트워크 관리, 콘텐츠 동기화, 협업 도구, 파일공유, 게임 등 확장 가능 Diverse 수많은 회사 또는 오픈소스 프로젝트에서 다양한 응용서비스들을 출시하고 있음 6
  7. 7. XML 메시징 구분 (1/2) • 스트림 (Stream) • 두 피어 간에 XML 요소를 주고 받기 위해 미리 주고 받는 XML 문서 • 포함 요소 : 서버 주소, 프로토콜 버전, 네임스페이스 • 스탠자 (Stranza) • 열려진 XML 스트림 내에 포함되어 전달되는 XML 문서 • 3가지 타입 존재 : message, iq, presence • 로스터 (Roster) : 친구 리스트 • JID(Jabber Identifier) 유일한 식별자들로 구성 • 예 : romeo@gmail.com, juliet@gmail.com 7
  8. 8. XML 메시징 구분 (2/2) <stream:stream to='example.com‘ xmlns='jabber:client‘ xmlns:stream='http://etherx.jabber.org/streams’ version='1.0'> <message …..> …. </message> …………. <presence …> … </presence> …………. <iq … > … </iq> </stream:stream> <stream:stream from='example.com‘ id='someid‘ xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams‘ version='1.0'> <message …..> …. </message> …………. <presence …> … </presence> …………. <iq … > … </iq> </stream:stream>Client Server 8
  9. 9. 스탠자 종류 (1/3) • 메시지 (Message) : 메시지를 전송하기 위해 사용 • 구성 요소 : to, from, type, lang, body 등 • Presence : 온라인, 자리 비움 등의 상태 표시 • 구성 요소 : lang, show, status 등 • IQ (Info/Query) : 친구 리스트 받기 등의 정보 요청 • 종류 : get, set, result, error 9
  10. 10. 스탠자 종류 (2/3) 메시지 스탠자 Presence 스탠자 Reference : http://btsweet.blogspot.kr/2014/09/google-talk-xmpp-2.html 10
  11. 11. 스탠자 종류 (3/3) Reference : http://btsweet.blogspot.kr/2014/09/google-talk-xmpp-2.html “get” 타입의 IQ 스탠자 “result” 타입의 IQ 스탠자 11
  12. 12. Single Server XML Client XMPP ServerXMLClient Client Client Client Client Client XML XML XML XML XML Host.com 12
  13. 13. Multiple Servers XML XML XML XML XML Client XMPP App Client XMPP Server XMPP Server XMPP Server XMPP Server Client XML XML XML Client XML Client Client Internet XML XML XML XML Client 13
  14. 14. LINE, Kakao Talk 등은? • 표준 프로토콜(XMPP) 가 아닌 자체 프로토콜 사용 • 대부분 자료를 공개하지 않음 • 어디서 자료를 얻을 수 있을까? • 해당 서비스 홈페이지 또는 기술 블로그 • Reverse Engineering : 패킷 분석 등을 통한 사용 프로토 콜 분석 14
  15. 15. LINE • 메시지 전송 : SPDY, Apache Thrift • 서버 : nginx • 데이터베이스 : Redis -> HBase
 
 
 
 
 
 
 
 
 Reference : http://developers.linecorp.com/blog/?p=1420 15
  16. 16. 기존 HTTP 프로토콜 문제 • 하나의 커넥션에서 한 번에 하나만의 요청을 처리 • 요청에 대한 응답이 순차적 • 매 요청마다 동일한 Header를 중복으로 전송 : 압축하지 않음
 
 
 
 
 
 
 
 Reference : http://www.slideshare.net/oddpoet/spdy-13231459 16
  17. 17. SPDY 특징 • Multiplexing : 하나의 커넥션 안에서 다수의 독립적인 
 스트림을 동시에 처리 • Server Push : 클라이언트 요청 없이 서버에서 콘텐츠를 직 접 push 가능 • HTTP 헤더 압축
 
 
 
 17
  18. 18. Apache Thrift (1/2) • 페이스북이 개발한 규모 가변적인(scalable) 이종 언어 서비스 개발을 위한 소프트웨어 프레임워크 • 데이터 교환을 쉽게 하기 위한 목적 : XML, JSON, Protocol Buffers 등과 유사 • 최소의 부하로 이기종 언어간 Serialization 지원 • Thrift 도구를 통해 다양한 언어의 코드 자동 생성 • C++, Java, C#, PHP, Python • Ruby, Erlang, Perl, Haskell, Cocoa, Smalltalk, Ocaml 등 18
  19. 19. Apache Thrift (2/2) 19
  20. 20. 메시지 크기 (Bytes) 비교 20
  21. 21. CPU 부하 (%) 비교 21
  22. 22. nginx • 트래픽이 많은 웹사이트를 위해 네트워크 확장성을 주목적으로 설계 한 경량 HTTP 서버 • 아파치 웹 서버를 대체할 대안으로 급부상 중 • 비동기 이벤트 기반 구조 (아파치는 스레드/프로세스 기반) • 사용하는 곳 • Facebook, NetFlix, WordPress, GitHub, Zynga, Sourceforge 등 • 한국에서는 네이버 첫 페이지, 카카오톡 공지사항 서버 Reference : http://nginx.org/en/docs/ 22
  23. 23. Web Server 점유율 (2014년) 아파치 39%, IIS 29%, nginx 15% Reference : http://news.netcraft.com/archives/2014/05/07/may-2014-web-server-survey.html 23
  24. 24. 이벤트 기반 구조 (1/2) Reference : http://www.iij.ad.jp/en/company/development/tech/mighttpd/ 24
  25. 25. 이벤트 기반 구조 (2/2) • 아파치 웹 서버 • 스레드/프로세스 기반 구조 • 클라이언트의 요청이 들어오면 스레드를 생성 • 사용자가 많으면 많은 스레드 생성 : 메모리 및 CPU 낭비, Context-Switching Overhead 발생 • nginx • 비동기(async) 이벤트(ioctl, send, recv, epoll) 기반 구조 • 다수의 연결을 효과적으로 처리 • 대부분의 코어 모듈이 Apache보다 적은 리소스로 더 빠르게 동작 Reference : http://opentutorials.org/module/384/3462 25
  26. 26. Redis • "REmote DIctionary System"의 약자로 메모리 기반의 
 Key/Value Store • 빠른 처리(read/write) 속도와 검증된 소프트웨어 안정성 
 제공 • 다양한 데이터 구조 저장 : String, hash, lists, sets, sorted set, bitmap 등 • 사용하는 곳 : 트위터, 핀터레스트, 인스타그램, 텀블러 등 Reference : http://redis.io/ 26
  27. 27. HBase • 기존 Redis NoSQL 의 한계 • 많은 Memory 공간을 필요, 분산 저장 시스템이 아님 • 다양한 NoSQL 비교 : HBase, Cassandra, MongoDB • Benchmark 도구 : YCSB(Yahoo! Cloud Serving Benchmark), 자체 Benchmark 도구 이용 • 요구사항 : 각 시나리오에 따른 시간 제약, 
 read/write O(1), random reads O(n) 등 Reference : http://developers.linecorp.com/blog/?p=1420 27
  28. 28. Kakao Talk • 메시지 전송 : HTTP 기반 json 전송 -> LOCO Protocol • 서버 : 루비온레일즈 -> C++ • 데이터베이스 : MySQL, MariaDB, TokuDB, 멤캐시드, 카 산드라
 
 
 Reference : http://blog.kakao.com/311 2011년 4월 ‘겁나빠른황소’ 프로젝트 28
  29. 29. LOCO Procotol (1/2) • 3가지 타입의 패킷 • LocoSecureHandShakePacket : 서버와 통신을 위해 세 션을 여는 패킷(LOGIN 커맨드 패킷) • LocoSecureNormalPacket : LOGIN 커맨드 패킷을 AES encrypt 한 후 서버와 통신(세션 유지) • LocoPacket : 암호화가 적용되지 않는 패킷 Reference : https://www.bpak.org/blog/2012/12/ 29
  30. 30. LOCO Procotol (2/2) • 패킷 아이디 : 패킷 구분 • 상태 코드 : 커맨드/패킷 상태 코드 • Method : 메시지 전달, 대화 상대 추 가, 차단, 채팅방 리스트 등 • Body Type, 길이, 내용 Reference : https://www.bpak.org/blog/2012/12/ 30
  31. 31. DB 구성도 (1/2) •RDBMS •MySQL : 출시 초기 사용한 데이터베이스 •TokuDB : 로그를 쌓는데 활용 •NoSQL •MariaDB •MySQL과 동일한 코드 기반, 사용 방법과 구조가 동일, •MySQL과 99.99%의 바이너리 호환성을 제공 •초당쿼리처리 속도 2~10% 빠름 •쿼리 최적화, 서브쿼리 지원, 조인 작업 시 색인 사용률 등에서 성능 향상 효과 •memcached : 데이터 요청을 캐시에서 직접 서비스, 데이터베이스에 연결된 디스크 스토리지에 대 한 접근을 줄임 •Cassandra : 분석 데이터베이스로 활용 31 Reference : http://www.oss.kr/oss_repository10/517682
  32. 32. DB 구성도 (2/2) 32 Reference : http://www.oss.kr/oss_repository10/517682
  33. 33. 메신저를 만든다면? 33
  34. 34. 메신저 서버/클라이언트 구현 (1/3) • XMPP 기반 서버/클라이언트 • 서버 : Openfire, MySQL, JDK • 클라이언트 : Spark(PC client), 
 Smack(Java library), 
 aSmack(Smack on Android) 등
 
 
 
 Reference : http://www.igniterealtime.org/ 34
  35. 35. 메신저 서버/클라이언트 구현 (2/3) References : http://www.igniterealtime.org/,http://nekomimi.tistory.com/660 PC 클라이언트 안드로이드 클라이언트 35
  36. 36. 메신저 서버/클라이언트 구현 (3/3) Reference : http://www.oss.kr/index.php?document_srl=100642&category=69425&mid=oss_repository14 36

×