SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
모바일 메신저 아키텍쳐
2015.03.31
정효기(hyogij@gmail.com)
Contents
• 모바일 메신저 서비스 현황
• XMPP 소개
• LINE, Kakao Talk 아키텍쳐 소개
• 메신저를 만든다면?
2
모바일 메신저 점유율 (2014년 12월)
월간 사용자(백 만명)
Reference : http://www.statista.com/statistics/258749/most-popular-global-mobile-messenger-apps/
6 억
5 억
1.7 억
4.8 천만
3
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
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
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
XML 메시징 구분 (1/2)
• 스트림 (Stream)
• 두 피어 간에 XML 요소를 주고 받기 위해 미리 주고 받는 XML 문서
• 포함 요소 : 서버 주소, 프로토콜 버전, 네임스페이스
• 스탠자 (Stranza)
• 열려진 XML 스트림 내에 포함되어 전달되는 XML 문서
• 3가지 타입 존재 : message, iq, presence
• 로스터 (Roster) : 친구 리스트
• JID(Jabber Identifier) 유일한 식별자들로 구성
• 예 : romeo@gmail.com, juliet@gmail.com
7
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
스탠자 종류 (1/3)
• 메시지 (Message) : 메시지를 전송하기 위해 사용
• 구성 요소 : to, from, type, lang, body 등
• Presence : 온라인, 자리 비움 등의 상태 표시
• 구성 요소 : lang, show, status 등
• IQ (Info/Query) : 친구 리스트 받기 등의 정보 요청
• 종류 : get, set, result, error
9
스탠자 종류 (2/3)
메시지 스탠자
Presence 스탠자
Reference : http://btsweet.blogspot.kr/2014/09/google-talk-xmpp-2.html
10
스탠자 종류 (3/3)
Reference : http://btsweet.blogspot.kr/2014/09/google-talk-xmpp-2.html
“get” 타입의 IQ 스탠자
“result” 타입의 IQ 스탠자
11
Single Server
XML
Client
XMPP
ServerXMLClient
Client
Client Client
Client
Client
XML
XML
XML
XML
XML
Host.com
12
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
LINE, Kakao Talk 등은?
• 표준 프로토콜(XMPP) 가 아닌 자체 프로토콜 사용
• 대부분 자료를 공개하지 않음
• 어디서 자료를 얻을 수 있을까?
• 해당 서비스 홈페이지 또는 기술 블로그
• Reverse Engineering : 패킷 분석 등을 통한 사용 프로토
콜 분석
14
LINE
• 메시지 전송 : SPDY, Apache Thrift
• 서버 : nginx
• 데이터베이스 : Redis -> HBase

















Reference : http://developers.linecorp.com/blog/?p=1420
15
기존 HTTP 프로토콜 문제
• 하나의 커넥션에서 한 번에 하나만의 요청을 처리
• 요청에 대한 응답이 순차적
• 매 요청마다 동일한 Header를 중복으로 전송 : 압축하지 않음















Reference : http://www.slideshare.net/oddpoet/spdy-13231459
16
SPDY 특징
• Multiplexing : 하나의 커넥션 안에서 다수의 독립적인 

스트림을 동시에 처리
• Server Push : 클라이언트 요청 없이 서버에서 콘텐츠를 직
접 push 가능
• HTTP 헤더 압축







17
Apache Thrift (1/2)
• 페이스북이 개발한 규모 가변적인(scalable) 이종 언어 서비스 개발을
위한 소프트웨어 프레임워크
• 데이터 교환을 쉽게 하기 위한 목적 : XML, JSON, Protocol Buffers
등과 유사
• 최소의 부하로 이기종 언어간 Serialization 지원
• Thrift 도구를 통해 다양한 언어의 코드 자동 생성
• C++, Java, C#, PHP, Python
• Ruby, Erlang, Perl, Haskell, Cocoa, Smalltalk, Ocaml 등
18
Apache Thrift (2/2)
19
메시지 크기 (Bytes) 비교
20
CPU 부하 (%) 비교
21
nginx
• 트래픽이 많은 웹사이트를 위해 네트워크 확장성을 주목적으로 설계
한 경량 HTTP 서버
• 아파치 웹 서버를 대체할 대안으로 급부상 중
• 비동기 이벤트 기반 구조 (아파치는 스레드/프로세스 기반)
• 사용하는 곳
• Facebook, NetFlix, WordPress, GitHub, Zynga, Sourceforge 등
• 한국에서는 네이버 첫 페이지, 카카오톡 공지사항 서버
Reference : http://nginx.org/en/docs/
22
Web Server 점유율 (2014년)
아파치 39%, IIS 29%, nginx 15%
Reference : http://news.netcraft.com/archives/2014/05/07/may-2014-web-server-survey.html
23
이벤트 기반 구조 (1/2)
Reference : http://www.iij.ad.jp/en/company/development/tech/mighttpd/
24
이벤트 기반 구조 (2/2)
• 아파치 웹 서버
• 스레드/프로세스 기반 구조
• 클라이언트의 요청이 들어오면 스레드를 생성
• 사용자가 많으면 많은 스레드 생성 : 메모리 및 CPU 낭비, Context-Switching
Overhead 발생
• nginx
• 비동기(async) 이벤트(ioctl, send, recv, epoll) 기반 구조
• 다수의 연결을 효과적으로 처리
• 대부분의 코어 모듈이 Apache보다 적은 리소스로 더 빠르게 동작
Reference : http://opentutorials.org/module/384/3462
25
Redis
• "REmote DIctionary System"의 약자로 메모리 기반의 

Key/Value Store
• 빠른 처리(read/write) 속도와 검증된 소프트웨어 안정성 

제공
• 다양한 데이터 구조 저장 : String, hash, lists, sets, sorted
set, bitmap 등
• 사용하는 곳 : 트위터, 핀터레스트, 인스타그램, 텀블러 등
Reference : http://redis.io/
26
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
Kakao Talk
• 메시지 전송 : HTTP 기반 json
전송 -> LOCO Protocol
• 서버 : 루비온레일즈 -> C++
• 데이터베이스 : MySQL,
MariaDB, TokuDB, 멤캐시드, 카
산드라





Reference : http://blog.kakao.com/311
2011년 4월 ‘겁나빠른황소’ 프로젝트
28
LOCO Procotol (1/2)
• 3가지 타입의 패킷
• LocoSecureHandShakePacket : 서버와 통신을 위해 세
션을 여는 패킷(LOGIN 커맨드 패킷)
• LocoSecureNormalPacket : LOGIN 커맨드 패킷을 AES
encrypt 한 후 서버와 통신(세션 유지)
• LocoPacket : 암호화가 적용되지 않는 패킷
Reference : https://www.bpak.org/blog/2012/12/
29
LOCO Procotol (2/2)
• 패킷 아이디 : 패킷 구분
• 상태 코드 : 커맨드/패킷 상태 코드
• Method : 메시지 전달, 대화 상대 추
가, 차단, 채팅방 리스트 등
• Body Type, 길이, 내용
Reference : https://www.bpak.org/blog/2012/12/
30
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
DB 구성도 (2/2)
32
Reference : http://www.oss.kr/oss_repository10/517682
메신저를 만든다면?
33
메신저 서버/클라이언트 구현 (1/3)
• XMPP 기반 서버/클라이언트
• 서버 : Openfire, MySQL, JDK
• 클라이언트 : Spark(PC client), 

Smack(Java library), 

aSmack(Smack on Android) 등







Reference : http://www.igniterealtime.org/
34
메신저 서버/클라이언트 구현 (2/3)
References : http://www.igniterealtime.org/,http://nekomimi.tistory.com/660
PC 클라이언트 안드로이드 클라이언트
35
메신저 서버/클라이언트 구현 (3/3)
Reference : http://www.oss.kr/index.php?document_srl=100642&category=69425&mid=oss_repository14
36
모바일 메신저 아키텍쳐 소개

Más contenido relacionado

La actualidad más candente

Apache Kafka: A high-throughput distributed messaging system @ JCConf 2014
Apache Kafka: A high-throughput distributed messaging system @ JCConf 2014Apache Kafka: A high-throughput distributed messaging system @ JCConf 2014
Apache Kafka: A high-throughput distributed messaging system @ JCConf 2014Chen-en Lu
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드KwangSeob Jeong
 
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with KubernetesKubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with KubernetesSeungYong Oh
 
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례Jemin Huh
 
Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3SANG WON PARK
 
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARK
 
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축Juhong Park
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipelineJongho Woo
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
 
RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개Wonchang Song
 
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) Amazon Web Services Korea
 
ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기Yungon Park
 
gRPC and Microservices
gRPC and MicroservicesgRPC and Microservices
gRPC and MicroservicesJonathan Gomez
 
A Deep Dive into Kafka Controller
A Deep Dive into Kafka ControllerA Deep Dive into Kafka Controller
A Deep Dive into Kafka Controllerconfluent
 
Kafka Streams State Stores Being Persistent
Kafka Streams State Stores Being PersistentKafka Streams State Stores Being Persistent
Kafka Streams State Stores Being Persistentconfluent
 
On-boarding with JanusGraph Performance
On-boarding with JanusGraph PerformanceOn-boarding with JanusGraph Performance
On-boarding with JanusGraph PerformanceChin Huang
 
카프카 기반의 대규모 모니터링 플랫폼 개발이야기
카프카 기반의 대규모 모니터링 플랫폼 개발이야기카프카 기반의 대규모 모니터링 플랫폼 개발이야기
카프카 기반의 대규모 모니터링 플랫폼 개발이야기if kakao
 
[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영NAVER D2
 
대용량 트래픽을 처리하는 최적의 서버리스 애플리케이션 - 안효빈, 구성완 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
대용량 트래픽을 처리하는 최적의 서버리스 애플리케이션  - 안효빈, 구성완 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021대용량 트래픽을 처리하는 최적의 서버리스 애플리케이션  - 안효빈, 구성완 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
대용량 트래픽을 처리하는 최적의 서버리스 애플리케이션 - 안효빈, 구성완 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021Amazon Web Services Korea
 

La actualidad más candente (20)

Apache Kafka: A high-throughput distributed messaging system @ JCConf 2014
Apache Kafka: A high-throughput distributed messaging system @ JCConf 2014Apache Kafka: A high-throughput distributed messaging system @ JCConf 2014
Apache Kafka: A high-throughput distributed messaging system @ JCConf 2014
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드
 
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with KubernetesKubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
 
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
 
Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3
 
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
 
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipeline
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
 
RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개
 
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
 
ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기
 
gRPC and Microservices
gRPC and MicroservicesgRPC and Microservices
gRPC and Microservices
 
A Deep Dive into Kafka Controller
A Deep Dive into Kafka ControllerA Deep Dive into Kafka Controller
A Deep Dive into Kafka Controller
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
Kafka Streams State Stores Being Persistent
Kafka Streams State Stores Being PersistentKafka Streams State Stores Being Persistent
Kafka Streams State Stores Being Persistent
 
On-boarding with JanusGraph Performance
On-boarding with JanusGraph PerformanceOn-boarding with JanusGraph Performance
On-boarding with JanusGraph Performance
 
카프카 기반의 대규모 모니터링 플랫폼 개발이야기
카프카 기반의 대규모 모니터링 플랫폼 개발이야기카프카 기반의 대규모 모니터링 플랫폼 개발이야기
카프카 기반의 대규모 모니터링 플랫폼 개발이야기
 
[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영
 
대용량 트래픽을 처리하는 최적의 서버리스 애플리케이션 - 안효빈, 구성완 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
대용량 트래픽을 처리하는 최적의 서버리스 애플리케이션  - 안효빈, 구성완 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021대용량 트래픽을 처리하는 최적의 서버리스 애플리케이션  - 안효빈, 구성완 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
대용량 트래픽을 처리하는 최적의 서버리스 애플리케이션 - 안효빈, 구성완 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
 

Destacado

[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발NAVER D2
 
URQA 삼성 컨퍼런스 발표
URQA 삼성 컨퍼런스 발표 URQA 삼성 컨퍼런스 발표
URQA 삼성 컨퍼런스 발표 YoungSu Son
 
Android Push Server & MQTT
Android Push Server & MQTTAndroid Push Server & MQTT
Android Push Server & MQTT광운 이
 
모바일 네트워크 친화적인 글로벌 메시징 서비스 - ChatON 개발
모바일 네트워크 친화적인 글로벌 메시징 서비스 - ChatON 개발 모바일 네트워크 친화적인 글로벌 메시징 서비스 - ChatON 개발
모바일 네트워크 친화적인 글로벌 메시징 서비스 - ChatON 개발 Jay JH Park
 
클라우드 인프라 기반 서비스 개발 - ChatON
클라우드 인프라 기반 서비스 개발 - ChatON클라우드 인프라 기반 서비스 개발 - ChatON
클라우드 인프라 기반 서비스 개발 - ChatONJay JH Park
 
중남미 모바일 플랫폼 (Go Global)
중남미 모바일 플랫폼 (Go Global)중남미 모바일 플랫폼 (Go Global)
중남미 모바일 플랫폼 (Go Global)Andrew Kim
 
위챗 매니저 소개 (wechat manager sales kit)
위챗 매니저 소개 (wechat manager sales kit)위챗 매니저 소개 (wechat manager sales kit)
위챗 매니저 소개 (wechat manager sales kit)imperator21
 
[newsletter 10월] 글로벌 모바일 매신저앱
[newsletter 10월] 글로벌 모바일 매신저앱[newsletter 10월] 글로벌 모바일 매신저앱
[newsletter 10월] 글로벌 모바일 매신저앱MezzoMedia
 
최종본 위챗 마케팅 제안서_이형민 마케터
최종본 위챗 마케팅 제안서_이형민 마케터최종본 위챗 마케팅 제안서_이형민 마케터
최종본 위챗 마케팅 제안서_이형민 마케터Hyungmin Lee
 
161024 aTCHINA 위챗 모바일 쇼핑몰 제안서_extract
161024 aTCHINA 위챗 모바일 쇼핑몰 제안서_extract161024 aTCHINA 위챗 모바일 쇼핑몰 제안서_extract
161024 aTCHINA 위챗 모바일 쇼핑몰 제안서_extractHyungmin Lee
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
 
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?OpenStack Korea Community
 

Destacado (12)

[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발
 
URQA 삼성 컨퍼런스 발표
URQA 삼성 컨퍼런스 발표 URQA 삼성 컨퍼런스 발표
URQA 삼성 컨퍼런스 발표
 
Android Push Server & MQTT
Android Push Server & MQTTAndroid Push Server & MQTT
Android Push Server & MQTT
 
모바일 네트워크 친화적인 글로벌 메시징 서비스 - ChatON 개발
모바일 네트워크 친화적인 글로벌 메시징 서비스 - ChatON 개발 모바일 네트워크 친화적인 글로벌 메시징 서비스 - ChatON 개발
모바일 네트워크 친화적인 글로벌 메시징 서비스 - ChatON 개발
 
클라우드 인프라 기반 서비스 개발 - ChatON
클라우드 인프라 기반 서비스 개발 - ChatON클라우드 인프라 기반 서비스 개발 - ChatON
클라우드 인프라 기반 서비스 개발 - ChatON
 
중남미 모바일 플랫폼 (Go Global)
중남미 모바일 플랫폼 (Go Global)중남미 모바일 플랫폼 (Go Global)
중남미 모바일 플랫폼 (Go Global)
 
위챗 매니저 소개 (wechat manager sales kit)
위챗 매니저 소개 (wechat manager sales kit)위챗 매니저 소개 (wechat manager sales kit)
위챗 매니저 소개 (wechat manager sales kit)
 
[newsletter 10월] 글로벌 모바일 매신저앱
[newsletter 10월] 글로벌 모바일 매신저앱[newsletter 10월] 글로벌 모바일 매신저앱
[newsletter 10월] 글로벌 모바일 매신저앱
 
최종본 위챗 마케팅 제안서_이형민 마케터
최종본 위챗 마케팅 제안서_이형민 마케터최종본 위챗 마케팅 제안서_이형민 마케터
최종본 위챗 마케팅 제안서_이형민 마케터
 
161024 aTCHINA 위챗 모바일 쇼핑몰 제안서_extract
161024 aTCHINA 위챗 모바일 쇼핑몰 제안서_extract161024 aTCHINA 위챗 모바일 쇼핑몰 제안서_extract
161024 aTCHINA 위챗 모바일 쇼핑몰 제안서_extract
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
 

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

[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드
[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드
[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드Sanghun Yun
 
API Management Reference Architecture
API Management Reference ArchitectureAPI Management Reference Architecture
API Management Reference ArchitectureSeong-Bok Lee
 
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...Jemin Huh
 
20160414 ROS 2차 강의 (for 아스라다 팀)
20160414 ROS 2차 강의 (for 아스라다 팀)20160414 ROS 2차 강의 (for 아스라다 팀)
20160414 ROS 2차 강의 (for 아스라다 팀)Yoonseok Pyo
 
웹을 지탱하는 기술
웹을 지탱하는 기술웹을 지탱하는 기술
웹을 지탱하는 기술JungHyuk Kwon
 
웹을 지탱하는 기술
웹을 지탱하는 기술웹을 지탱하는 기술
웹을 지탱하는 기술정혁 권
 
Spring 4.x Web Application 살펴보기
Spring 4.x Web Application  살펴보기Spring 4.x Web Application  살펴보기
Spring 4.x Web Application 살펴보기Ji Heon Kim
 
웹 2.0 기술 소개 (2006)
웹 2.0 기술 소개 (2006)웹 2.0 기술 소개 (2006)
웹 2.0 기술 소개 (2006)Channy Yun
 
하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요TIMEGATE
 
하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요Seung-Woo Kang
 
한국청소년정보과학회 1회 세미나 - RestFul API Basic
한국청소년정보과학회 1회 세미나 - RestFul API Basic한국청소년정보과학회 1회 세미나 - RestFul API Basic
한국청소년정보과학회 1회 세미나 - RestFul API Basic한국청소년정보과학회
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)jeongseokoh
 
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...Amazon Web Services Korea
 
NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템tcaesvk
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos uEngine Solutions
 
MongoDB 신제품 및 신기능 소개
MongoDB 신제품 및 신기능 소개MongoDB 신제품 및 신기능 소개
MongoDB 신제품 및 신기능 소개MongoDB
 
build a linux webhosting server
build a linux webhosting serverbuild a linux webhosting server
build a linux webhosting server정현 윤
 
Browsing With Firefox
Browsing With FirefoxBrowsing With Firefox
Browsing With FirefoxMatt Shin
 

Similar a 모바일 메신저 아키텍쳐 소개 (20)

Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
 
[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드
[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드
[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드
 
CouchDB - Introduction - Korean
CouchDB - Introduction - KoreanCouchDB - Introduction - Korean
CouchDB - Introduction - Korean
 
API Management Reference Architecture
API Management Reference ArchitectureAPI Management Reference Architecture
API Management Reference Architecture
 
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
 
20160414 ROS 2차 강의 (for 아스라다 팀)
20160414 ROS 2차 강의 (for 아스라다 팀)20160414 ROS 2차 강의 (for 아스라다 팀)
20160414 ROS 2차 강의 (for 아스라다 팀)
 
웹을 지탱하는 기술
웹을 지탱하는 기술웹을 지탱하는 기술
웹을 지탱하는 기술
 
웹을 지탱하는 기술
웹을 지탱하는 기술웹을 지탱하는 기술
웹을 지탱하는 기술
 
Spring 4.x Web Application 살펴보기
Spring 4.x Web Application  살펴보기Spring 4.x Web Application  살펴보기
Spring 4.x Web Application 살펴보기
 
웹 2.0 기술 소개 (2006)
웹 2.0 기술 소개 (2006)웹 2.0 기술 소개 (2006)
웹 2.0 기술 소개 (2006)
 
하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요
 
하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요
 
한국청소년정보과학회 1회 세미나 - RestFul API Basic
한국청소년정보과학회 1회 세미나 - RestFul API Basic한국청소년정보과학회 1회 세미나 - RestFul API Basic
한국청소년정보과학회 1회 세미나 - RestFul API Basic
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)
 
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
 
NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
 
MongoDB 신제품 및 신기능 소개
MongoDB 신제품 및 신기능 소개MongoDB 신제품 및 신기능 소개
MongoDB 신제품 및 신기능 소개
 
build a linux webhosting server
build a linux webhosting serverbuild a linux webhosting server
build a linux webhosting server
 
Browsing With Firefox
Browsing With FirefoxBrowsing With Firefox
Browsing With Firefox
 

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

  • 2. Contents • 모바일 메신저 서비스 현황 • XMPP 소개 • LINE, Kakao Talk 아키텍쳐 소개 • 메신저를 만든다면? 2
  • 3. 모바일 메신저 점유율 (2014년 12월) 월간 사용자(백 만명) Reference : http://www.statista.com/statistics/258749/most-popular-global-mobile-messenger-apps/ 6 억 5 억 1.7 억 4.8 천만 3
  • 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. 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. 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. 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. 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. 스탠자 종류 (1/3) • 메시지 (Message) : 메시지를 전송하기 위해 사용 • 구성 요소 : to, from, type, lang, body 등 • Presence : 온라인, 자리 비움 등의 상태 표시 • 구성 요소 : lang, show, status 등 • IQ (Info/Query) : 친구 리스트 받기 등의 정보 요청 • 종류 : get, set, result, error 9
  • 10. 스탠자 종류 (2/3) 메시지 스탠자 Presence 스탠자 Reference : http://btsweet.blogspot.kr/2014/09/google-talk-xmpp-2.html 10
  • 11. 스탠자 종류 (3/3) Reference : http://btsweet.blogspot.kr/2014/09/google-talk-xmpp-2.html “get” 타입의 IQ 스탠자 “result” 타입의 IQ 스탠자 11
  • 14. LINE, Kakao Talk 등은? • 표준 프로토콜(XMPP) 가 아닌 자체 프로토콜 사용 • 대부분 자료를 공개하지 않음 • 어디서 자료를 얻을 수 있을까? • 해당 서비스 홈페이지 또는 기술 블로그 • Reverse Engineering : 패킷 분석 등을 통한 사용 프로토 콜 분석 14
  • 15. LINE • 메시지 전송 : SPDY, Apache Thrift • 서버 : nginx • 데이터베이스 : Redis -> HBase
 
 
 
 
 
 
 
 
 Reference : http://developers.linecorp.com/blog/?p=1420 15
  • 16. 기존 HTTP 프로토콜 문제 • 하나의 커넥션에서 한 번에 하나만의 요청을 처리 • 요청에 대한 응답이 순차적 • 매 요청마다 동일한 Header를 중복으로 전송 : 압축하지 않음
 
 
 
 
 
 
 
 Reference : http://www.slideshare.net/oddpoet/spdy-13231459 16
  • 17. SPDY 특징 • Multiplexing : 하나의 커넥션 안에서 다수의 독립적인 
 스트림을 동시에 처리 • Server Push : 클라이언트 요청 없이 서버에서 콘텐츠를 직 접 push 가능 • HTTP 헤더 압축
 
 
 
 17
  • 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
  • 21. CPU 부하 (%) 비교 21
  • 22. nginx • 트래픽이 많은 웹사이트를 위해 네트워크 확장성을 주목적으로 설계 한 경량 HTTP 서버 • 아파치 웹 서버를 대체할 대안으로 급부상 중 • 비동기 이벤트 기반 구조 (아파치는 스레드/프로세스 기반) • 사용하는 곳 • Facebook, NetFlix, WordPress, GitHub, Zynga, Sourceforge 등 • 한국에서는 네이버 첫 페이지, 카카오톡 공지사항 서버 Reference : http://nginx.org/en/docs/ 22
  • 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. 이벤트 기반 구조 (1/2) Reference : http://www.iij.ad.jp/en/company/development/tech/mighttpd/ 24
  • 25. 이벤트 기반 구조 (2/2) • 아파치 웹 서버 • 스레드/프로세스 기반 구조 • 클라이언트의 요청이 들어오면 스레드를 생성 • 사용자가 많으면 많은 스레드 생성 : 메모리 및 CPU 낭비, Context-Switching Overhead 발생 • nginx • 비동기(async) 이벤트(ioctl, send, recv, epoll) 기반 구조 • 다수의 연결을 효과적으로 처리 • 대부분의 코어 모듈이 Apache보다 적은 리소스로 더 빠르게 동작 Reference : http://opentutorials.org/module/384/3462 25
  • 26. Redis • "REmote DIctionary System"의 약자로 메모리 기반의 
 Key/Value Store • 빠른 처리(read/write) 속도와 검증된 소프트웨어 안정성 
 제공 • 다양한 데이터 구조 저장 : String, hash, lists, sets, sorted set, bitmap 등 • 사용하는 곳 : 트위터, 핀터레스트, 인스타그램, 텀블러 등 Reference : http://redis.io/ 26
  • 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. Kakao Talk • 메시지 전송 : HTTP 기반 json 전송 -> LOCO Protocol • 서버 : 루비온레일즈 -> C++ • 데이터베이스 : MySQL, MariaDB, TokuDB, 멤캐시드, 카 산드라
 
 
 Reference : http://blog.kakao.com/311 2011년 4월 ‘겁나빠른황소’ 프로젝트 28
  • 29. LOCO Procotol (1/2) • 3가지 타입의 패킷 • LocoSecureHandShakePacket : 서버와 통신을 위해 세 션을 여는 패킷(LOGIN 커맨드 패킷) • LocoSecureNormalPacket : LOGIN 커맨드 패킷을 AES encrypt 한 후 서버와 통신(세션 유지) • LocoPacket : 암호화가 적용되지 않는 패킷 Reference : https://www.bpak.org/blog/2012/12/ 29
  • 30. LOCO Procotol (2/2) • 패킷 아이디 : 패킷 구분 • 상태 코드 : 커맨드/패킷 상태 코드 • Method : 메시지 전달, 대화 상대 추 가, 차단, 채팅방 리스트 등 • Body Type, 길이, 내용 Reference : https://www.bpak.org/blog/2012/12/ 30
  • 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. DB 구성도 (2/2) 32 Reference : http://www.oss.kr/oss_repository10/517682
  • 34. 메신저 서버/클라이언트 구현 (1/3) • XMPP 기반 서버/클라이언트 • 서버 : Openfire, MySQL, JDK • 클라이언트 : Spark(PC client), 
 Smack(Java library), 
 aSmack(Smack on Android) 등
 
 
 
 Reference : http://www.igniterealtime.org/ 34
  • 35. 메신저 서버/클라이언트 구현 (2/3) References : http://www.igniterealtime.org/,http://nekomimi.tistory.com/660 PC 클라이언트 안드로이드 클라이언트 35
  • 36. 메신저 서버/클라이언트 구현 (3/3) Reference : http://www.oss.kr/index.php?document_srl=100642&category=69425&mid=oss_repository14 36