Engineering

고확장성, 고가용성 SFU 미디어 서버 개발하기

실시간 미디어 통신 기술은 플링크의 모든 제품에 포함된 핵심 기술입니다. 플링크의 미디어 파트에서는 플링크의 제품을 위한 독자적인 자체 미디어 통신 서버를 개발하고 운영하고 있습니다. 관련한 자세한 내용을 소개 드립니다.

실시간 미디어 통신 기술은 플링크의 모든 제품에 포함된 핵심 기술입니다. 플링크의 미디어 파트에서는 플링크의 제품을 위한 독자적인 자체 미디어 통신 서버를 개발하고 운영하고 있습니다. 자체 개발을 통해 원가를 절감할 수 있고 인터페이스와 기능 구성을 플링크의 제품에 최적화된 형태로 활용할 수 있는 이점을 누리고 있습니다.

자체 알고리즘을 통한 스케일링

플링크에서는 SFU 방식의 미디어 서버를 개발하고 있습니다. MCU보다는 부하가 작은 방식이지만, SFU는 여전히 일반적인 API 서버보다 훨씬 더 많은 컴퓨팅 파워를 요구합니다. 연결되어있는 동안 끊임없이 데이터를 교환해야 하고, 이 때 교환되는 미디어 데이터는 문자열 데이터에 비해 크기가 매우 크기 때문입니다. 따라서 SFU는 접속량이 많지 않더라도 오토스케일링 구현이 필수적입니다.

그런데 SFU의 특징 때문에 클라우드 서비스들에서 제공하는 오토스케일링 서비스를 활용하는 것이 까다롭습니다. 먼저 SFU는 꽤 긴 유저의 접속 시간 동안 클라이언트와 서버 간 커넥션을 계속 유지해줘야 합니다. 이 때문에 오토스케일링 서비스가 서버에 매달려있는 커넥션에 대해서 알고 있어야 합니다. 또한 새로운 유저가 어떤 서버에게 배정될 것인지도 같은 방에 속한 기존 유저들의 배정된 위치에 따라 신중하게 결정되어야 하기 때문에 로드밸런서와 같은 기능을 사용할 수 없습니다. 이러한 이유들로 플링크에서는 직접 구현한 스케일링 알고리즘을 통해 미디어 서버를 운영하고 있습니다.  

모든 Usecase 를 제약없이 보장하는 배정 알고리즘

일반적으로 특정 서비스를 위한 SFU 미디어 서버는 목적에 따라서 브로드캐스팅만 가능하거나 일정 인원 이하의 그룹만 가능한 SFU인 경우가 많습니다. SaaS로서 미디어 통신 서비스를 제공하는 SFU의 경우에도 방을 만들기 전에 어떠한 형태의 usecase 인지 유저나 서비스를 사용하는 개발자가 입력해 주어야 하는 경우가 대부분입니다. 이렇게 하는 이유는 사용 형태에 따라서 Topology, 즉 서버들의 구성형태와 연결방식이 전혀 달라 usecase가 제약되지 않은 방에서 해당 방에 접속한 모든 사람들의 미디어를 교환하게 해주는 알고리즘을 만드는 것이 매우 어렵기 때문입니다.

network topology

그러나 유저 또는 미디어 통신 기능을 사용하는 개발자 입장에서 이는 분명히 불편함으로 느껴지는 부분입니다. 플링크의 미디어 파트는 지속적인 노력을 통해 이러한 단점이 존재하지 않는 알고리즘을 만들어냈고 usecase에 상관없이 자유롭게 방을 개설하고 미팅을 진행할 수 있습니다. 알고리즘의 일부를 살짝 소개해 드리겠습니다.

배정 알고리즘 엿보기

첫번째는 송출자로부터 여러 서버를 거쳐 미디어를 수신하는 알고리즘입니다. 작은 규모의 방은 하나의 서버 안에서 미디어 연결이 가능하지만 큰 규모의 방은 여러 서버가 동원되어야 합니다. 한편으로는 작은 규모의 방에 여러 서버가 동원되면 하나의 미디어 스트림에 여러 서버가 관여하게 되기 때문에 불필요하게 컴퓨팅 자원이 낭비됩니다. 따라서 방 규모에 맞게 적절히 유기적으로 미디어 스트림을 연결해 주는 알고리즘이 중요합니다.

network topology broadcasting

두번째는 예측부하를 활용하는 알고리즘 입니다. 예측부하가 필요한 이유를 설명드리기 위해 다음과 같은 상황을 가정해 보겠습니다.

1명의 호스트가 1000명의 게스트에게 방송을 하는 상황입니다. 이런.. 그런데 호스트가 지각을 했습니다. 호스트가 접속하기 전에는 송출을 하는 유저가 없어 서버에 어떤 부하도 없는 상황입니다. 호스트 없이는 부하가 없기 때문에 예측부하를 고려하지 않는다면 게스트 1000명은 하나의 미디어 서버에 배정될 것이며 스케일 아웃도 일어나지 않을 것 입니다.

network burden expectation

실제 부하만을 고려하는 것은 위에서 가정한 상황 뿐 아니라 다른 여러가지 상황에서도 문제가 될 수 있습니다. 그렇기에 각각의 상황에 맞게 예측부하를 잘 계산하여 스케일링 정책에 활용하는 것이 중요합니다.

network burden expectation graph

마지막으로

더욱 더 높은 가용성과 높은 확장성이 보장되는 미디어 서버를 개발하기 위해 새로운 기술들을 계속 연구하고 있습니다. 그 중 하나는 특정한 서버에 이미 배정된 유저를 미팅 중 불편함을 느끼지 않을 정도로 짧은 시간 안에 다른 서버로 옮기는 것입니다. 미디어 서버들의 부하 배분이 불균형한 상황을 쉽게 극복할 수 있고, 유연한 배정 정책이 가능해지게 되어 안정성이 높아지며, 높은 서버 가동률을 통해 서버 비용을 절감할 수 있게 됩니다.

플링크의 미디어 파트는 플링크의 제품들이 요구하는 스펙을 넘어서서 높은 눈높이를 가지고 최상의 완성도의 미디어 통신 기술을 개발하고 있습니다. 이는 단순히 제품들에 종속된 기술로만 바라보는 것이 아니라 자체적인 서비스화를 지향점으로 고려하고 있기 때문이기도 합니다. 이처럼 플링크에서는 장기적인 안목으로 핵심기술에 대한 노력을 지속적으로 기울이고 있습니다.

기술을 통한 온라인 커뮤니케이션의 진보를 꿈꾸신다면

플링크 팀은 멀티미디어를 활용한 온라인 커뮤니케이션 경험이 오프라인 커뮤니케이션 경험을 압도하는 순간을 만들어갑니다. 이 빠르고 도전적인 여정에 함께하실 새로운 동료분들을 기쁜 마음으로 찾습니다. 이 아티클을 읽고 플링크 팀이 더 흥미로워졌다면, 지금이 바로 우리가 만날 때입니다. 망설이지 마세요!