LINE 원정대: 사우디아라비아로 현장 테스트를 다녀왔습니다

저는 지난 4월 초에 사우디아라비아로 현장 테스트를 다녀왔습니다. LINE은 작년에 중동에서 LIVE 개인방송 애플리케이션을 론칭하여 서비스하고 있습니다. 이번 현장 테스트의 목적은 현재 서비스하고 있는 LINE LIVE MENA(Middle East and North Africa)를 더욱 발전시키기 위해 서비스 영상의 품질과 경쟁사 앱과 비교한 장점과 개선점을 파악하고, 현재 사용하고 있는 RTMP(Real Time Messaging Protocol)가 아닌 다른 전송 프로토콜을 사용한다면 어떤 결과가 나타나는지 알아보는 것이었습니다. 

 

LINE 원정대: 원정대 결성

아랍어를 못하는 세 명의 개발자가 사우디에 간다? 이 말만 들으면 어딘가 모르게 불안한 느낌을 지울 수가 없는데요. 다행히 현장 테스트에는 개발자뿐 아니라 LINE의 중동 전문가들도 함께 참여했습니다. 중동 출장을 여러 번 다녀온 중동 사업팀 두 분, 한국에서 10년 넘게 살아 한국어 패치가 완벽하게 적용된 사우디아라비아인 한 분, 그리고 LINE 개발자 셋. 이렇게 여섯 명이 이번 LINE 원정대로 결성됐습니다(선배 LINE 원정대의 이야기가 궁금하신 분은 여기를 참고하세요). 떠나기 전 사전 회의를 통해 팀별로 현지에서 어떤 일을 진행할지와 각 팀의 상황에 맞게 출장 일정과 이동 경로를 정했습니다. 또한 회의에서는 현장 테스트를 여러 도시에서 진행하기 보다는 한 곳에 집중해서 진행하자는 결론이 나왔고, 그에 따라 사우디아라비아의 수도인 리야드(Riyadh)에서만 현장 테스트를 진행하게 됐습니다.

 

여정의 시작

출발 전 긴 비행시간을 걱정하셨던 분들이 많았는데요. LINE에서는 출장 제도를 잘 활용하면 누구나 비즈니스 클래스를 타고 출장갈 수 있습니다! 덕분에 10시간이 넘는 비행시간에도 불구하고 하늘 위 호텔에 몸을 맡긴 채 편안히 비행을 마치고 리야드에 도착할 수 있었습니다.

리야드에 도착했을 때 저희를 반겨준 건 ‘Welcome LINERs!’라고 적혀진 플래카드를 들고 환영하는 인파!… 였다고 말씀드리고 싶지만, 실제로 마중 나온 건 푹푹 찌는 더위였습니다. 저희가 4월 초에 출장 갔는데요. 4월은 여름에 비하면 준수한 편이라고는 했지만 벌써 기온이 30도까지 올라가 있었습니다. 날씨부터 이번 출장이 호락호락하진 않을 거라고 말하고 있는 것 같았습니다. 날씨뿐 아니라 생소한 문화에 적응하는데도 시간이 필요했는데요. 날마다 정해져있는 기도 시간 때문에 갑자기 카페 영업이 일시적으로 중단되거나, single(남성)과 family(남성과 여성 동반) 공간이 분리된 장소를 잘못 들어가기를 몇 번씩 경험하면서 저희가 완전히 다른 문화권의 나라에 출장 왔다는 사실을 실감할 수 있었습니다.

 

‘It’s Mine… My Precious…’

‘It’s Mine… My Precious…’는 영화 ‘반지의 제왕: 반지 원정대‘에 등장하는 골룸이 자신이 소중하게 생각하던 반지를 표현한 대사입니다. 아마 영화를 보신 분들이라면 집에서 몰래 한 번쯤 이 대사를 따라해 보셨을 것 같은데요. 골룸에게 절대 반지가 소중했던 것 만큼이나 저희에게 현지 유심(usim)칩이 소중했습니다. 사우디아라비에서 외국인은 일 인당 한 개의 유심칩밖에는 구입하지 못합니다. 사우디아라비아에는 세 개의 주요 통신사(STC, Mobily, Zain)가 있는데요. 같은 통신사끼리 교차로 테스트해 보기 위해서는 적어도 한 통신사당 두 개의 유심칩이 필요합니다. 다행히 저희 멤버가 여섯 명이라 유심칩을 한 통신사당 두 개씩 살 수는 있었지만, 그것만으론 테스트를 원활하게 진행할 수 없었습니다. 유심칩이 없으면 테스트를 할 수 없다 보니 그럴 땐 그저 누군가의 테스트가 끝나기를 기다려야 했고, 제가 유심칩을 받아 테스트를 진행하면 또 다른 누군가는 또 기다리고. 이런 과정이 무한 반복되었습니다.

역시 돌이켜 생각해봐도 이번 출장에서 가장 소중했던 것은 바로 유심칩이었습니다. ‘My precious…’

 

LINE 원정대: 두 개의 PoP

PoP는 ‘Point of Presence’의 준말로, 네트워크 상호간 또는 개별 네트워크에 대한 접속점 또는 접근점을 의미합니다.

지금부터는 사우디에서 진행된 테스트 내용을 살펴보겠습니다. 테스트 장소는 현지인들이 많이 찾는 백화점, 현지 와이파이 상태를 경험할 수 있는 카페, 호텔 주변, 이동 시 차 안과 같은 곳이었는데요. 쉽게 말해, 발이 닿는 모든 곳이 저희 테스트 장소였습니다. 특별히 현지인 집에도 방문할 기회가 생겨 실제 서비스 이용자 환경과 유사한 곳에서도 테스트해 볼 수 있었습니다.

현지 카페에서 테스트를 진행하는 모습
현지 전통 식당에서 테스트를 진행하는 모습
현지 가정집에 방문해 테스트를 진행하는 모습

 

테스트 진행

현장에서 다음 두 가지 테스트를 진행했습니다.

  • 서비스 중인 PoP 상태를 체크하기 위한 RTMP 송출 및 ping 테스트
  • WebRTC 적용 검토 테스트

첫 번째 테스트에서는 현재 LINE LIVE에 사용하고 있는 PoP의 상태를 확인하고자 했는데요. LIVE 서비스에서는 모든 사용자의 송출 영상과 음성 데이터(비디오와 오디오 전송률, 이용 가능한 대역폭(bandwidth), RTT 등)를 서버에 기록해서 분석하고 있습니다. 이번 테스트에서도 그와 동일하게 기록된 데이터를 시각화하여 분석했고, ping 테스트로 RTT값을 비교해 보면서 PoP 망의 상태를 확인했습니다.

통신사 ‘B’의 PoP ping 테스트 결과

다음 테스트 항목은 WebRTC 적용 검토 테스트였는데요. 현재 LINE LIVE 스트리밍은 방송하는 사람(BJ)이 RTMP와 TCP를 사용하여 송출하면 이를 시청자가 서버 연계(relay)와 트랜스코딩(transcoding)을 통해 RTMP 혹은 HLS(HTTP Live Streaming)로 수신하는 방식을 사용합니다.

실시간 스트리밍 서비스는 저희가 보통 ‘latency’라고 표현하는, 송출자와 시청자 사이에서 발생하는 지연의 정도와 시청자의 기기에 첫 번째 프레임이 표시되는 시간인 ‘first frame delay’를 최소화하는 게 중요한데요. HLS는 무조건 서버의 트랜스코딩과 CDN(content delivery network)에 TS파일 형태로 저장하는 과정을 거쳐야 하기 때문에 사실상 송출자와 시청자 간에 지연이 발생할 수 밖에 없습니다. 이런 형태의 지연은 실시간 스포츠 중계를 즐겨 보시는 분이라면 한번쯤 간접적으로 경험해 보셨을 겁니다. TV를 시청하는 사람들은 환호하고 있는데 인터넷 스트리밍으로 시청하는 나는 아직 화면에서 보지 못했고, 뭔가 일이 일어난 것 같기는 한데 뭔지 모르겠고, 왠지 모르게 스포일러를 당한 것 같은 느낌. 다 이와 관련있는 경험입니다. HLS가 아닌 RTMP로 연계된 영상을 수신하더라도 프로토콜 자체의 오버헤드 때문에 실시간으로 표시하는 데는 어려움이 있습니다. 이렇게 실시간으로 표시하기 어려울 때 저희는 보통 ‘latency가 크다’라고 표현합니다.

이러한 이유로 RTMP가 아닌 WebRTC가 저희 서비스에 더 적합한지 확인하고자 했습니다. 검증하기 위해서 기본적으로 P2P(peer-to-peer) 연결에 문제가 없는지, 전체적인 송출 품질은 어떤지, latency와 first frame delay가 어느 정도 인지를 중점적으로 살펴봤는데요. 송출과 수신 품질을 확인하기 위해서 WebRTC Stats Report를 이용해 필요한 데이터(bitrate, RTT, packetReceived, packetsLost, bytesReceived 등)를 추출하고 서버에 저장, 분석했습니다.

WebRTC를 도입할 땐 앞서 말씀드린 latency나 first frame delay가 중요하기 때문에 이 두 가지 지표는 별도로 테스트를 진행했는데요. WebRTC를 사용하면 RTMP로 송출하고 RTMP로 시청했을 때보다 latency는 전체적으로 더 작았고, first frame delay도 비슷하거나 더 낮은 수준이라서 몇 가지 튜닝을 한다면 서비스에 적용시킬 수 있겠다는 긍정적인 결과를 얻었습니다.

 

LINE 원정대: 귀환

사실 7일 간의 테스트 기간(실제 테스트 기간은 약 4~5일 정도)만으로 네트워크 환경이 정확하게 어떤 상태라고 결론 내리기는 쉽지 않았습니다. 네트워크 환경은 시간대마다 속도 차가 있을 수도 있고, 사람이 많이 몰리는 곳인지 아닌지에 따라 다를 수도 있으며, 지역과 위치에 따라서도 충분히 차이가 발생할 수 있습니다. 따라서 이번 테스트 결과를 생각할 때 매시간 연속적으로 테스트를 하지 않았고, 모든 지역을 커버할 수 없었다는 한계를 참작할 필요가 있을 것 같은데요. 이를 고려하더라도 누군가 저를 포함한 개발자 모두에게 현지 네트워크 환경의 상태를 물어본다면, 하나같이 서비스하기에 ‘좋다’라고 대답할 겁니다. 네트워크 환경이 좋아서인지 현지 사람들은 대부분 휴대폰으로 비디오 영상을 시청하고 있었고, 심지어 운전하면서도 계속 휴대폰 영상을 보는가 하면 실시간 영상통화까지 즐기는 모습도 보였습니다. 덕분에 저희는 차를 탈 때마다 안전벨트를 착용하고도 마음을 졸여야 했습니다.

영화 ‘반지의 제왕’의 주인공인 프로도는 절대 반지를 없애기 위해 여정을 떠나는데요. 영화를 보면 그 여정에서 반지를 없앤다는 목적과는 별도로 또 다른 삶의 소중한 가치를 발견하고 새로운 깨달음을 얻는 것을 볼 수 있습니다. 그와 마찬가지로 이번 출장의 목적은 현지 네트워크 환경 조사였지만, 돌이켜보면 이번 여정을 통해 얻은 것은 그 이상이었습니다. 제가 개발한 서비스를 실제 환경에서 사용할 땐 어떤 느낌인지 체감할 수 있어서 개발자와 실제 사용자 간의 온도 차이를 줄일 수 있었고, 서비스의 어떤 점이 좋고 어떤 점을 개선해야 할지 깨달을 수 있었습니다. 또한 함께 출장간 동료들과 끊어질 듯, 끊어질 듯 하면서 계속 이어지는 토론을 벌이고 대화를 나눴는데요. 이를 통해 아마 사무실에만 계속 앉아 있었다면 결코 얻지 못했을 인사이트를 얻을 수 있었습니다. 

끝으로 원정대에 합류하여 함께 원정 다녀온 모든 분께 감사드리며, 이번 테스트를 발판으로 LINE LIVE 서비스가 더 크게 성장하기를 희망합니다.