Korea Blog
HackFair 출품작 소개 8탄!~ 멀티 플랫폼/모바일 환경의 약점을 극복한다, IRCTalk~!
Thursday, December 13, 2012
IRCTalk 소개
IRCTalk
은
지금까지 IRC가 단순한 서버-클라이언트 구조를 취하며 가져왔던 문제점인
멀티 플랫폼/모바일 환경
에서의 약점을 극복하였습니다.
기존 IRC
는 서버와 클라이언트가 직접 연결을 맺고 있어 연결이 끊어지는 경우 유저가 들어가 있던 채널에서 모두 퇴장하게 되고 이후의 대화 내용들을 놓칩니다. 특히 모바일 기기에서 3G/LTE 와 같은 모바일 네트워크를 이용할 경우 모바일 네트워크의 특성상 접속이 자주 끊어져 사용성이 크게 저하됩니다.
사람들은 자신이 창을 보고 있는 시간 외에 사람들이 나누었던 대화를 보기 위해서 자신이 가진 서버에서 IRC를 접속해두거나, 회사나 집을 오가며 여러 대의 컴퓨터를 사용하기 때문에 같은 채널에 불필요하게 여러 개의 닉네임으로 접속하는 경우가 있습니다. 뿐만 아니라 요즘에는 모바일 기기도 늘어나 한 사람이 한 채널에 여러 개의 닉네임으로 접속하는 경우가 늘어났습니다.
저희는 위와 같은 문제를 해결하기 위해 중간에서 IRC 연결을 안정적으로 유지해주는 시스템을 기반으로한 서비스를 목표로 프로젝트를 시작하게 되었습니다.
Why IRCTalk?
IRC 연결이 항상 유지됩니다.
컴퓨터를 켜지 않아도, 잠을 잘 때에도 IRC에 항상 접속해 있을 수 있습니다. 유저가 직접 접속하는 것이 아니라 IRCTalk서버가 IRC에 접속을 맺고 있습니다. 유저는 IRCTalk 클라이언트에서의 접속 유지에 신경을 쓰지 않아도 됩니다. 대화 내용은 저장되어 나중에 놓친 대화를 살펴볼 수 있습니다. 대화 내용은 일정 기간 보관 후 폐기됩니다.
멘션이 왔을 때 모바일 클라이언트에 푸시로 전달해 드립니다.
기존의 IRC 바운서 서비스들은 IRC연결이 서버상에서 접속되어 있더라도 클라이언트가 접속되어 있을 때만 멘션 알림을 받을 수 있었습니다. 멘션 알림이란 특정 상대방에게 꼭 봐야 할 내용이 있을 경우 상대방의 닉네임을 명시하면 클라이언트에서 알림을 표시해주는 기능입니다. 하지만 IRCTalk에서는 클라이언트가 접속되어있지 않더라도 푸시가 지원되는 플랫폼(Android 등)에서 푸시 알림을 전송하여 중요한 메세지를 놓치지 않게 해줍니다.
멀티 플랫폼을 지원합니다.
안드로이드, 웹(HTML5) 클라이언트가 현재 활발히 개발 중에 있으며 차후 iOS도 지원 예정입니다.
멀티 디바이스 이용을 지원합니다.
구글 계정을 이용하여 사용자 인증을 하고 있기 때문에 같은 구글 계정을 연동해 놓은 환경에서는 동일하게 동작합니다. 또한 여러 기기에서 동시에 접속해도 모든 디바이스에서 사용할 수 있도록 설계가 되어 있어서 멀티 디바이스를 사용하는 유저들도 아무런 제약없이 사용할 수 있습니다.
IRCTalk의 간단한 구성
IRCTalk 서버는 Go로 구현되어 있습니다. Go는 구글에서 만든 언어로 C++과 많은 점이 닮아 있지만 현대적인 요소들이 가미된 언어입니다. 이번 핵페어를 기회로 Go를 공부하면서 서버를 구현해 보기로 했습니다. 기존에는 App Engine에 적용하는 용도로 Go를 많이 사용하고 있고, Stand-Alone 서버로는 적용 사례가 많이 없기에 도전하는 마음으로 시도해 보았습니다.
IRCTalk 서버는 2개로 구성되어 있습니다. 클라이언트와의 통신을 담당하는 Websocket 서버(Frontend)와 IRC서버들과의 접속을 유지하고 관련된 메시지들을 처리하는 IRC Relay 서버(Backend)로 이루어져 있습니다. DB는 Redis를 사용하고 있습니다. 클라이언트와 Frontend서버와의 통신은 다양한 플랫폼을 지원하고 빠른 반응성을 위해 Websocket을 사용하였습니다. Frontend서버에선 사용자 인증 및 DB로부터 대화목록 정보를 읽어와 클라이언트로 전송하는 기능을 합니다.
클라이언트에서 IRC관련 요청을 할 경우 Frontend서버에서 Backend서버로 메세지를 ZeroMQ를 통해서 전달합니다. Backend서버에서는 Frontend서버로부터 온 메세지를 처리하고 접속된 IRC서버들로부터 온 메세지를 DB에 저장하고 클라이언트로 실시간으로 전송해야할 메세지들은 ZeroMQ를 통해 Frontend서버로 전달해서 접속된 클라이언트로 보내어집니다. 이때 IRC서버로부터 멘션이 왔을 경우 접속된 클라이언트들에게는 Websocket채널로 알림 메세지가 전송이 되며 접속되어있지 않은 등록된 디바이스들에는 PushAgent를 통해서 푸시알림 메세지를 전송합니다.
앞으로...
아직은 개발 단계이기 때문에 미구현 기능들이 많고 잔 버그가 있습니다. 앞으로 몇 주 내에 closed beta
공개를 목표로 기능 구현 및 버그 수정 작업을 하고 있습니다. closed beta 서비스를 통해 확장성 및 안정성을 검증 및 보완해서 정식으로 서비스를 하는 것이 목표입니다. IRCTalk을 통해 모바일 시대에 잊혀져 가는 IRC를 되살리고 Go 언어의 가능성을 보여줄 수 있었으면 합니다. 또한 Hackfair라는 행사를 통해 시작된 프로젝트가 행사 이후에도 계속해서 개발되고 실제로 서비스 되는 의미 있는 사례가 되었으면 합니다. 끝으로 아래 링크에서 베타 참여 신청을 받고 있으니 많은 지원 부탁 드립니다.
Closed beta 참여 신청
-
http://ircta.lk
시연 영상 -
http://youtu.be/hsQHr3DWZo0
IRCTalk 팀원
정주영
(
@iamquadr
)>
서버 개발 및 설계를 담당하였습니다. 게임 개발을 해오다 현재 카카오에서 서버 및 클라이언트 개발을 하고 있습니다. 아직도 게임 분야에 관심이 많으며 주변 개발자들과 취미 코딩 모임을 열고 참석하기도 합니다.
김동우
(
@dongwookim
)>
웹 버전 클라이언트를 담당하였습니다. javascript 및 css에 매우 능숙하며 iPhone개발도 많이 하고 있습니다. 카카오에서 일하고 있으며 많은 프로젝트에 기여하고 있습니다.
박영훈
(
@eie
)>
안드로이드 클라이언트를 담당하였습니다. 카카오에서 일하고 있으며 안드로이드 클라이언트 개발을 하고 있습니다.
No comments :
Post a Comment
ラベル
ad
AdMob
admob_sdk
Advanced Power Searching
Android
Android App Quality
android back button
Android back end
Android navigation
Android Player API
android server
android up button
androidL
androidtv
androidwear
App Translate Service
Audio Focus
Chrome
Chromecast
Code-in 2012
Core App Quality Guidelines
Daydream
design
designing for Tablets
designsprint
dialog
Drive SDK
Game Developers Conference
GCi
GCi 참가자
GDA
GDC
gdg
gdgkorea
Go
Google Cast
Google Code-in
Google Play
Google Play 스토어
Google Search
Google Summer of Code
Google+ Sign-In
Google+ Sign-In Bootcamps
Google+ 로그인
Google+ 로그인 부트캠프
googleanalytics
googleio
GooglePlay #AndroidDevStory #PlayStore #MaterialDesign #AndroidStudio #DeveloperConsole
GSOC
hackathon
HackFair 출품작
In-app Billing
io
io2014
ioapp
iobytes
ioextended
IRC Talk
IRC 서버
java7
kitkat
launch
Marshmallow
materialdesign
mobile ad
mobile_ads_sdk
multiscreen
NaCl
Native YouTube Player API
NRRN 사용 제한
Power Searching
product launch
SD 카드에 앱 설치
SecureKeyFactory
ux
webview
YouTube
YouTube Android Player API
YouTube API
YouTube API 3.0
YouTube API Update RSS Feed
광고
구글 HackFair
구글 Summer of Code
구글 개발자 사이트 홍보
구글 개발자 아카데미
구글 개발자 온라인 강좌
구글 검색
구글 고급 파워 서치
구글 드라이브 앱
구글 부트캠프
구글 아카데미
구글 코드인
구글 플러스 로그인
구글 핵페어
구글로 로그인하기
네이티브 클라이언트
데이드림
멀티 모바일
멀티 플랫폼
모바일 광고
수익화
스마트 브라우저
안드로이드
안드로이드 4.2
안드로이드 Back 버튼
안드로이드 Up 버튼
안드로이드 개인 정보 보호 정책
안드로이드 네비게이션
안드로이드 데이드림
안드로이드 디자인
안드로이드 방향탐색
안드로이드 보안
안드로이드 사용자 데이터
안드로이드 서버 백엔드
안드로이드 앱 품질
안드로이드 원격 제어
안드로이드 태블릿 디자인
안드로이드 현지화
안드로이드 화면 보호기
애드몹
애플리케이션 SD카드 설치
애플리케이션 개발 주민등록번호 사용 제한
애플리케이션 외부 저장 장치
앱 품질 체크리스트
오픈 소스
오픈소스 프로그램
웹 DMB
유튜브
유튜브 API
유튜브 API 3.0
유튜브 API 업데이트
유튜브 모바일
유튜브 안드로이드 플레이어 API
인앱 결제
인터넷상 주민등록번호 수집 이용 제한
주민등록번호 사용제한
추천이미지
출시
크롬브라우저
태블릿 디자인
태블릿용 앱
파워서치
한국 구글 개발자
한국 구글 개발자 사이트
핵심 앱 품질 가이드라인
핵심 태블릿 앱 품질 체크리스트
핵페어
핵페어 출품작
ブログ アーカイブ
2016
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
Google Code-in 2012 - 참가자수, 대한민국 8위!
Google Play에서 홍보 그래픽을 국가별로 현지화하세요.
간단하면서 더욱 강력해진 새로운 유튜브 Data API 출시!
GDE(Google Developers Expert) Summit 참가 후기
HackFair 출품작 소개 9탄! 언제 어디서든 우리는 개발한다, 구름 IDE
HackFair 출품작 소개 8탄!~ 멀티 플랫폼/모바일 환경의 약점을 극복한다, IRCT...
인앱 결제 (In-App Billing) 버전 3 출시!
HackFair 출품작 소개 7탄!~ 안드로이드 단말기를 PC로 제어한다, 리모트로이드~!
HackFair 출품작 소개 6탄!~ 웹에서 고화질 DMB를!!!, WebDMB!
HackFair 출품작 소개 5탄!~ 크롬 브라우저의 가능성을 열다, Cbox Console
HackFair 출품작 소개 4탄!~ 디지털 그림자 인형극
Google HackFair가 무사히 끝났습니다~
HackFair 출품작 소개 3탄!~ ash로 다양한 기기를 하나의 디바이스로 제어해 보세요!
HackFair 출품작 소개 2탄!~ 나만의 리듬 액션 게임 WimyLime!!
안드로이드로 구글 드라이브 앱 개발하기
HackFair 출품작 소개 1탄! - 스마트 브라우저
플레이 스토어(구 안드로이드 마켓) 추천 이미지 가이드라인
November
October
September
August
July
June
May
March
February
January
2011
December
November
Feed
No comments :
Post a Comment