Polymor!

Tiktok 스트리밍 서비스 앱 본문

Web

Tiktok 스트리밍 서비스 앱

Megan Kim 2020. 6. 7. 17:29

중국의 ByteDance 사의 소셜 미디어 앱으로 유저들의 뜨거운 관심을 받고 , 엄청난 Lock-in 효과로 화제가 된 Tiktok.

 

앱 다운로드 수 15억을 넘으며 페이스북, 인스타그램을 뛰어넘은 틱톡.. 도대체 뭐길래? 

틱톡- Douyin, 'Vibrating Sound'라는 의미를 가진 이 앱이 가진 특별한 점은 무료로 다양한 음원을 지원한다는 점이다. 거기에 더불어 1분이내의 영상을 업로드하여 라이브 혹은 VoD 방식으로 전 세계 유저들과 공유할 수있다. 

스트리밍 기반의 미디어 앱, Tiktok 은 어떤 기술스택을 가지고 있는 앱일까? 

(reddit 의 한 기술자의 잘 정리된 페이지 일부를 공유했다.)

Tech Stack Behind TikTok Like App

  • Real-Time Analytics: Azure Stream Analytics, Spark Streaming, Apache Flink

  • Cloud Environment: AWS

  • Database: MailChimp Integration, Postgres, Cassandra, HBase, MongoDB

  • Universal Operating System: Debian

  • For emails: Mandrill

  • For Database Management: Datastax

  • For Powerful programming: GWT

  • Payments: Paypal and Braintree, e-Wallet, Stripe

  • Phone, Voice & SMS Verification: Twilio, Nexmo

  • Push Notifications: Push.io, Twilio

Tiktok 자사만의 보유 기술들도 물론 있겠지만, 많은 기술들은 이미 잘 알려진 벤더 기술들을 잘 활용했을 거라 예상한다. 

가장 많이 신경쓴거는 latency 낮추기 위해 데이터를 최소화, 메모리 효율성 등에 많은 기술자를 투입했다고 인터뷰영상에서 본기억이.. 그런게 인스타,페북을 영상 스트리밍영역에선 가볍게 따돌릴 수 있는 강인한 힘이아닐까 생각된다.

 

* Streaming Server ?

Media Server 로도 통칭되듯, 각종 영상, 미디어 데이터들을 전송하는 서버를 의미한다. 

우리가 흔히 알고 있는 웹 서버라 함은 http 프로토콜 기반의 텍스트, 이미지 등을 클라이언트의 요청에 따라 전송해주는 서버를 의미한다. 그런데 이 http 기반의 네트워크로는 영상을 주고 받는건 큰 부하와 매우 느린 처리 속도로 전송 될 것이다. 

 

한 픽셀(화소)의 RGB 정보를 각 1바이트, 총 3바이트로 표현한다 생각했을때, 전체 화면에 대한 정보를 보내려면 화면 크기만큼 화소의 색깔 정보가 있어야 한다. 해상도가 640X480인 영상의 경우에는 30만 7천2백 개의 화소가 있으므로 한 프레임의 데이터는 총 921,600바이트가 된다. 보통 초당 30개의 프레임을 가지니, 1분 정도의 영상은 1,658,880,000바이트가 된다. 

물론 영상 압축 과정이 있겠지만, 기존의 텍스트,이미지 등의 정적 데이터 처리양과는 차원이 다르다는걸 느낌적으로 느낄수 있다. 

 

그래서 이러한 영상을 처리하는 서버는 http 웹 프로토콜이 아닌 RTSP (Real Time Streaming Protocol) 프로토콜과 같은 다른 규약을 따른다. 물론 Apple 사의 HLS (Http Live Streaming) 과 같은 복잡한 미디어 서버를 간소화하자는 정신에서 HTTP 기반 미디어 서버도 존재하고 빠르게 발전하고 있지만, 여전히 Facebook, Youtube, Tiktok 등 대기업들의 선택은 전통적인 미디어 서버 RTMP/RTSP를 택하고 있다. 라이브 스트리밍 서비스에서 실시간으로 동영상이 끊어지지 않고 재생되기 위해서는 대역폭을 늘리는 것보다  Latency를 낮추는 것이 기술의 핵심이라고 할 수 있다.

 

  • Latency - 파이프로 물이 통과하는데 걸리는 총 시간
  • Bandwidth - 파이프의 
  • Throughput - 파이프를 통해 흐른 물의 총량

 

Comments