본문 바로가기
PRODUCT MANGER STUDY/CODESTATES_PMB_DAILY_HW

LINE LIVE의 채팅 기능 시스템아키텍쳐 | 코드스테이츠 PMB 14기 | W6D1

by 소소여니 2022. 9. 28.
728x90
LINE LIVE의 채팅 기능 시스템아키텍쳐


https://www.giosg.com/blog/how-to-choose-live-chat-software

 

간만에 개발 내용을 들으니까 반갑기도하고 또 지끈하기도한 로봇학도....🦾🤖(삐그덕)

오랜만에 클라이언트 서버 데이터 베이스 내용을 들으니 떠오르는건 채팅 프로그램 !

처음 클라이언트 서버 구조를 배우면서 채팅 프로그램으로 예시를 많이 드는데 

오늘 자료조사 하다가 운좋게 라인의 기술 블로그를 발견해서 오늘은 라인으로 과제를 풀어볼까한다

요즘 여기 저기 기술블로그 보는데 참 재밌다 다들 참 열심히 살아

 

아모튼

LINE LIVE의 채팅은 어떤 시스템으로 작동되고있을까?


🐻 LINE LIVE 채팅  

LINE LIVE 앱에서는 라이브 방송 중인 동영상을 시청하면서 실시간으로 코맨트를 보낼 수 있는 채팅 기능을 제공하고 있다. 이 기능의 역할은 시청자들이 서로 대화를 즐기는 것에만 국한되지 않고 동영상 송출자가 시청자가 보낸 코멘트에 답변하면서 송출자와 시청자 사이의 접점이 되기도한다. 이런 실시간 채팅 기능은 티빙, 유튜브, 아프리카, 트위치 등에서 도 제공하고 있는 기능이다. 이러한 기능은 어떻게 작동되고있을까?

 

🐻 LINE USER FLOW  

현재 라인에서는 수많은 기능들을 제공하고있지만,

오늘 과제에서는 라인 기술 블로그에 기술되어있는 라인의 "라이브채팅" 기능에만 집중해보자. 

사용자 행동 흐름을 간단히 정리하였다. 

이런 간단한 유저 플로우 뒤에 어떤 개발 백그라운드가 뒷받침 되고있을까 생각해보자 

 

🐻 LINE  Chatting System Architecture  

LINE 의 기술 블로그에 따르면 채팅 시스템 아키텍쳐는 다음과 같고, 이해하기 쉽게 단순화한 차트도 추가하였다. 

여기서의 클라이언트는 같이 영상을 보고있는 시청자 1, 시청자 2라고 할 수 있다. 

위의 차트의 플로우를 따라 메시지가 어떻게 전송되고, 화면에 표시되는지 생각해보자.

 

 

#1 _ 메시지 전송 -  [ 클리이언트-> 서버 ]

시청자 1 (클라이언트 1)이 방송을 보며 메시지를 전송한다. 이 메시지는 클라이언트1과 연결된 채팅 서버1로 넘어간다.

#2 _ 메시지 처리 - [ 서버 ]

채팅 서버에서는 받은 메시지를 메시지 핸들러, AKKa Actors들을 통해 메시지를 처리한다. 

#3 _ 메시지 데이터 전달 - [ 서버 -> 서버클러스터 ]

메시지 처리과정을 거친 메시지 데이터는 서버의 마스터 역할을 하는 서버 클러스터로 publish 된다. 

#4 _ 메시지 publish - [ 서버 클러스터 -> 서버 ]

그 정보는 다시 서버 클러스터가 publish 하여 서버 클러스터를 subscribe 하고있는 다른 서버로 publish 된다.

그럼 다른 서버에 접속한 시청자2[클라이언트2]도 시청자1이 보낸 메시지를 받아볼수있게된다. 

이 메시지 데이터를 받아 각 클라이언트의 화면에 메시지 내용이 뜨게 된다.

#5_ 메시지 데이터 저장 - [ 서버 클러스터 -> 데이터 베이스 ]

이렇게 생성된 메시지 데이터 내용은 데이터 베이스에 저장된다. 

 

 

여기서 서버 클러스터는 각기 다른 서버를 하나로 묶어서 하나의 시스템같이 동작하게함으로써, 클라이언트들에게 고가용성의 서비스를 제공하는 것을 말한다. 쉽게 말해 분리된 채팅 서버1, 채팅서버2 을 하나로 묶어 하나의 시스템으로 작동하도록하는 역할을한다. 일시적인 데이터 저장과 Pub/Sub에 의한 서버 간 코멘트 정보 동기화를 위해 사용한다.

 

채팅 서버 내에는 메시지 핸들러, 채팅룸, 유저액터, 채팅슈버바이저같은 다양한 장치들이 배치되어있다. 이부분에 대해선 자세히 설명하지 않겠다. 

 

라인 라이브는 한번에 많은 양의 메시지 양을 처리하기 위해 채팅룸분할, 채팅 서버 분할 방식을 채택하였다. 


💭W6D1 회고💭

W6 엄청 겁먹고 시작했는데 대학살이 4년동안 한게있어서 그런가 꽤나 순탄했따. 

맨날 공대기반 데이터베이스(내 머리)에 문과st내용만 강제 주입하다가 오랜만에 개발 내용 주입하니까 숨통이 트인다. 

간만에 기술블로그에서 프로덕트 관련내용이 아닌 기술관련 내용 보니까 새롭고 재밌고 그르타 ㅋㅋ 간만에 시스템 아키텍쳐도 보니까 바람 제안서 만들던 기억이 새록새록... 크하 PM의 관점에서 보는 개발 새롭고 재밌고나~ 조타~

뼛속부터 공대피플인 난 사실 지난주,지지난주가 지옥같았는데 그렇다면 이런 나에게 이번주는 조금은 해피타임이길 바라며... 


__Reference__

https://live.line.me/

 

LINE LIVE(ラインライブ)| 夢を叶えるライブ配信サービス

いつでも、どこでも、無料でライブ配信&視聴可能!リアルタイムにメッセージやハートを送って、人気タレントやアーティストとのコミュニケーションを楽しもう。

live.line.me

https://allpartner.tistory.com/11

 

클러스터란 , 서버클러스터 정의하기

아무리 바빠도 한달에 한번이상은 자료를 업데이트 하려고했으나, 따로 준비하는게 생기면 하나올리기도 힘드네요.. ㅠㅠ 간만에 업데이트하는 내용은 클러스터로 했습니다. 많은 분들이 클러

allpartner.tistory.com

https://engineering.linecorp.com/ko/blog/the-architecture-behind-chatting-on-line-live/

 

LINE LIVE 채팅 기능의 기반이 되는 아키텍처

2022-LINE-engineering-site

engineering.linecorp.com

 

728x90