[프로젝트] Tweech

언어로그/프로젝트로그 2014. 1. 18. 21:23

 

 


 

1. 기본사항


시스템명: Tweech


주관기관: 앳게임


개발인원: 5명


프로젝트 기간: 2010.08.02 ~ 9.17





2. 프로젝트 소개 


SNS 시장에서 트위터 서비스의 점유율이 빠른 속도로 증가함에 따라 트위터를 통한 정보와 지식 공유의 수준 역시 나날이 높아지고 있다. 


Tweech 앱은 미국 내 트위터 서비스 이용자들을 대상층으로 한다. 단순한 키워드 검색 서비스를 넘어서서 사용자를 대변하는 Bot(로봇)을 


Following 함으로써 관심있는 분야에 대한 최적의 글을 자신의 타임라인에서 구독할 수 있는 앱이다. 


이런 검색시스템을 바탕으로 트위터 사용자들이 작성한 메시지들의 패턴을 분석하여 사용자와 유사한 유형을 가진 다른 사용자들을 추천해주는 


기능을 제공한다. 트위터 검색시스템 구축을 1차 목표, 로봇 및 성향 분석 모듈 구축을 2차 목표로 하며, 현재 버전에서는 1차 목표까지 완료하였다. 





3. 개발환경  


타겟 시스템: iPhone 3GS


SDK: Java 5, iPhone SDK 3.0, Apache Lucene 3.0


언어: Java, Objective-C 


프레임워크: iBATIS 2.3, Spring2.5, SpringMVC


분석/설계도구: Visual Paradigm


개발도구(IDE) : Eclipse 3.6, Xcode 3


서버 운영체제: CentOS 5.4


애플리케이션 서버: Apache Tomcat 6.02


데이터베이스: MySQL 5.1





4. 맡은 업무및 구현내용

앱 기획, 분석, 아키텍처, 설계 및 구현 

- iPhoen 앱 사용자 계정관리 및 OAuth 인증처리 (Objective-C/C)

- Tweeter API (Follow / Favorite / Retweet) 요청 및 처리 (Objective-C)

- 서버 색인기(indexer) 모듈 설계 및 구현 (Java)




5. Tweech 마인드맵








6. Tweech 시스템 구성도




[iPhone Client]

OAuth 인증처리 및 사용자 계정관리 (Objective-C / C언어 사용)

Third Party 라이브러리를 사용하지 않고, 웹 서비스 자원 오픈 표준인 OAuth 인증처리를 

구현하였다. 최대 5개까지의 트위터 계정을 등록할 수 있으며, 최초 등록 시 OAuth 인증과정을

거치게 된다.


Tweeter API (Follow / Favorite / Retweet) 요청 및 처리 (Objective-C 언어 사용)

Tweeter API와 연동하여 검색된 트윗글을 북마크하고, 리트윗하는 기능을 구현하였다. 또한 

트윗글 작성자를 팔로우하는 기능도 제공한다. 


[Server]

색인기(Indexer) 모듈 (Java 언어 사용)

Apache Lucene 3.0 검색 라이브러리를 사용하여, 분석기를 구현하였다. Crawler 모듈에서 수집된 트윗글을 네트워크로 전송 받아 파일시스템에 색인파일을 생성한다.  






6-1. OAuth 처리흐름




[iPhone Client]

OAuth 인증처리 및 사용자 계정관리

OAuth 인증처리 과정은 다음과 같다. Tweeter API 지원 페이지에서 Third Party 앱으로 

등록하면 Consumer Key, Consumer Secret 값이 발급된다. 이 값과 사용자부터 입력 받은 

트위터 서비스 UserName과 Password를 바탕으로 OAuth 인증 URL로 접속하여 Request

Token 요청, Acces Token 요청과정을 거쳐 최종적으로 Access Token을 획득하게 된다. 

Access Token은 사용자 데이터에 접근을 허용하는 일종의 허가권으로 인증이 요구되는 트위터

API 사용시 필요한 값이다. OAuth 구현시 트위터 OAuth 도움말 페이지 및 OAuth Core1.0 Spec을 참고하여 구현하였다. 


최대 5개까지의 계정을 등록하여 사용할 수 있으며, 등록 요청을 받은 계정정보는 유효성 검사

후 OAuth 인증처리를 거치게 되며, 성공시 iPhone SQLite 데이터베이스에 저장된다. 






6-2.색인기(Indexer) 모듈





색인기(Indexer) 모듈

색인기 모듈은 Java 언어를 사용하여, Apache Lucene 3.0 오픈소스 검색 라이브러리를 사용하여 구현하였다. 

Crawler가 수집한 트윗글(Status) 목록을 네트워크를 통해 전송 받아, 색인파일을

생성하는 역할을 한다. Crawler가 수집한 트윗글 목록이 끊임없이 전송되기 때문에 지연없이 

색인을 생성하는 것이 핵심이 된다. 색인속도가 전송되는 트윗글의 속도를 따라가지 못하게 되면 메모리 부족현상이 발생하게 된다. 

 성능을 향상을 위해 5개의 쓰레드로 동작하며, 100건 단위로 트윗글을 메모리에 색인한다. 빈번한 파일 색인 생성작업은 가장 CPU 

자원을 소모하기 때문에 1000건의 트윗글이 메모리에 색인되면 파일색인을 생성하도록 처리하였다. 

색인된 파일들은 NFS(Network File System)을 통해 검색기 모듈에 의해 참조된다. 

빠른 검색을 지원하기 위해서 증가하는 색인파일들을 주기적으로 최적화하여 색인파일의 개수를

줄이고 정리해야한다. IndexerOptimizer는 색인기 모듈 구동과 동시에 지정된 시간 후에 

일정 주기로 색인파일을 최적화 한다.





7. 주요화면


실시간 인기 검색어 목록과 입력한 검색어 이력 목록을 제공    

검색어 “Finding Nemo”의 검색결과








트윗글을 보관하거나 리트윗 또는 작성자를 팔로우할 수 있다.     


최대 5개까지의 트위터 계정을 지원한다.





































 


 

























'언어로그 > 프로젝트로그' 카테고리의 다른 글

[프로젝트] Tweech  (1) 2014.01.18
[프로젝트] 분실물 다나와  (1) 2014.01.18
[프로젝트] StarOS를 아시나요?  (0) 2014.01.18
  • geekdev 2014.01.28 16:44 신고 ADDR 수정/삭제 답글

    앱스토어에서 엄청난 인기였지 ㅋㅋ