|
삼성의 '공유 경험 플랫폼(Sharing Experience Platform)'은 다양한 디바이스 간 연결을 통해 사용자에게 새로운 차원의 공유 경험을 제공합니다. 이 플랫폼은 다양한 애플리케이션을 개발할 수 있는 SDK를 제공하여 혁신적인 의사소통을 가능케 합니다. 본 포스팅에서는 해당 플랫폼이 제공하는 기능과 SDK로 해당 플랫폼을 활용해 애플리케이션을 개발하는 방법을 소개합니다. |
들어가며
COVID-19로 인한 언택트 환경 속에서, 많은 사람이 디지털 기기를 활용한 소통에 익숙해졌습니다. 이러한 소통의 경험은 단순한 음성 및 영상 통화를 넘어 원격지에서 기기 간 연결을 통한 다양한 사용자 서비스로 진화하고 있습니다. 함께 즐기는 콘텐츠, 함께 운동하거나 게임을 하는 등의 경험들이 이에 속합니다.
서비스의 사용자 경험을 더 향상하기 위해서는 서비스 특성과 사용자 환경에 맞춰 다양한 기기에서 자유롭게 서비스에 참여할 수 있도록 하는 것이 중요합니다. 가령, 친구와 함께 집에서 각자의 디지털 기기로 영화 등의 콘텐츠를 감상할 수 있는 원격 콘텐츠 공유 경험 서비스를 제공한다면, TV, 스마트폰, PC 등 사용자가 콘텐츠에 손쉽게 접근할 수 있는 기기를 선택하여 서비스에 참여할 수 있도록 하는 것이 중요할 것입니다.
이번 기술 블로그 포스팅에서는 다양한 기기에서 영상 통화, 메시징, 계정 연동을 통한 사용자 간 연락처 구성, 사용자 그룹 생성 및 관리 등을 지원하여 사용자 간 연결을 기반으로 한 다양한 서비스 개발이 용이하도록 도와주는 '공유 경험 플랫폼(Sharing Experience Platform, SEP)'을 소개하려 합니다(그림 1).
이 플랫폼은 실시간 영상 통화와 메시징 서비스를 이용할 수 있는 다양한 디바이스에 인프라를 제공하며, 계정 서비스와 연동하여 사용자 간 연락 관리, 그룹 생성, 히스토리 관리 등의 기능을 지원합니다. 서비스 제공자들은 이 플랫폼이 제공하는 기능을 활용하여 각 디바이스에서 손쉽게 원격 케어, 실시간 콘텐츠 공유, 강화된 몰입형 서비스 등 다양한 경험을 제공할 수 있습니다.
사용자 친화적이면서도 세밀한 서비스로 더욱 특별해질 디지털 세계 속 연결 경험, 더욱 자세히 알아볼까요?
공유 경험 플랫폼(sharing experience platform
먼저, 공유 경험 플랫폼의 구성에 대해 자세히 살펴보겠습니다. 아래의 그림 2에서 볼 수 있듯이, 다자간 영상통화 및 다양한 공유 서비스를 위해 사용자 프로필 관리, 디바이스 연락처 관리 컴포넌트, 기기 간 연결을 지원하는 신호 서비스 컴포넌트, 그리고 사용자 영상, 음성, 그리고 콘텐츠 공유를 위한 오디오/비디오/데이터 전송 중계 서버 등이 필요한 중앙 플랫폼이 있습니다.
공유 경험 플랫폼은 공유 서비스에 필수적인 기능을 제공하기 위해 클라우드 기반의 서비스 플랫폼을 운영하고 있습니다. 클라우드를 통해 제공되는 모든 기능은 배포되는 SDK를 통해 디바이스에 쉽게 적용할 수 있습니다.
SDK는 주로 스마트 단말에서 지원하는 WebRTC라는 표준 기술을 기반으로 하며, 실시간 영상 및 음성 공유를 위한 API는 JavaScript 언어로 구현되어 있어 크로스 플랫폼 지원이 가능합니다. 그 덕분에 대상 단말에서 SEP SDK를 활용하여 애플리케이션을 개발하는 경우 별도의 플러그인 설치 등이 필요하지 않으며, Tizen, Android, iOS, 그리고 일반 사용자 PC 등 다양한 플랫폼에서 호환성을 확보할 수 있습니다.
공유 경험 플랫폼의 각 구성요소는 그림 2의 블록도와 같습니다. 이를 통해 시각적으로 구성 요소들을 파악할 수 있습니다.
그림 2: 공유 경험 플랫폼 블록도
이제 각 기능에 적용된 플랫폼의 독특한 기술적 요소에 대해 자세히 살펴보겠습니다.
먼저, 영상 및 음성 정보의 실시간 공유를 위한 기기 간 연결 채널 구성 방법에 대해 알아보겠습니다. 기기 간 실시간 오디오/비디오 스트리밍을 위해 레이턴시(latency)와 비용(cost) 측면에서 가장 효율적인 방법은 대상 기기 간 직접 Peer-to-Peer(P2P) 연결을 수립하여 전송하는 것입니다. 그러나 Local Area Network(LAN)가 아닌 원격지와의 연결에서는 각 기기가 연결된 네트워크 구성(NAT) 등의 이유로 P2P 연결이 어려울 수 있습니다. 일반적인 Home to Home(H2H) 환경에서는 통계적으로 약 30% 이내의 확률로 P2P 연결이 불가능한 경우가 있습니다. 따라서 많은 영상통화 서비스가 기본적으로 실시간 영상 및 음성 정보를 서버를 통해 중계하고 있습니다.
하지만 레이턴시를 최소화하고 운영 비용을 절감하기 위해서는 서버 중계를 최소화해야 합니다. 공유 경험 플랫폼은 클라우드 서버에서 기기별 네트워크 연결 구성 정보를 수집하고 가능한 P2P 연결을 고려하여 기기 간 연결 채널을 생성할 방법을 제공합니다. 특히 두 기기 간 P2P 연결이 불가능한 경우에도 device relay 기법을 활용하여 서버를 경유하지 않는 기기 간 데이터 전송을 극대화합니다.
그림 3에서 볼 수 있듯이, 기기 간 직접 연결이 어려운 경우 다른 연결 가능한 디바이스로 우회하여 서버의 직접 중계 없이 데이터를 전송합니다. 이러한 일련의 과정은 애플리케이션에서의 개입 없이 플랫폼 내에서 처리되며, 사용자가 부가적인 노력을 기울이지 않아도 됩니다. 이는 사용자 친화적이고 편리한 경험을 제공합니다.
그림 3: 공유 경험 플랫폼의 기기 간 연결 구성
다음으로, 플랫폼이 사용자 개인정보 보호 강화를 위해 지원하는 End-to-End Encryption(E2EE) 기능을 소개합니다. 사용자의 카메라 영상 및 음성 정보가 다른 기기와 공유될 때는 개인정보 보호에 대한 고려가 필수입니다. 일반적으로 P2P 연결의 경우 IP 통신 레이어에서 DTLS 보안 기법이 적용되어 영상과 음성이 외부에 노출되지 않고 안전하게 전송될 수 있습니다. 그러나 서버 중계가 발생하면, 서버 내에서 DTLS 암호화가 해제되는 구간이 생기며, 이에 따라 사용자 정보가 노출될 위험이 있습니다.
이러한 위험을 방지하기 위해 플랫폼에서는 미디어 스트림에 별도의 암호화를 적용하는 E2EE 기능을 제공하고 있습니다. 이를 위해 플랫폼은 보안키 관리 서버를 구축하여 인증된 사용자 간에 암호화 키를 안전하게 공유할 방법을 제공합니다. 그러나 이러한 추가적인 보안 시스템은 다자간 통화 연결 시 하나의 단말에서 복수의 미디어 스트림에 대한 복호화 연산이 필요하게 됩니다. 이에 따라 레이턴시가 추가적으로 발생할 수 있습니다.
이러한 문제를 고려하여, SDK에서는 스레드 풀(thread pool)에 기반한 병렬 복호화 프로세싱 환경을 지원하고 있습니다. 이를 통해 E2EE에 따른 지연을 최소화하고 사용자 경험을 최적화하고 있습니다(표 1).
표1: (위) P2P를 통한 다자간 통화 연결
(가운데) E2EE 기능이 비활성화된 상태에서 Media Server를 통한 다자간 통화 연결
(아래) E2EE 기능이 활성화된 상태에서 Media Sever를 통한 다자간 통화 연결
다음은 플랫폼에서 제공하는 Multi Device 연계 서비스 지원 기능에 대해 알아보겠습니다. 공유 경험 플랫폼은 SDK의 인터페이스를 통해 주변의 기기를 손쉽게 검색하고, 발견한 기기에 현재의 세션을 매끄럽게 캐스팅하는 기능을 제공합니다. 이를 활용하여 애플리케이션은 아래의 그림 4와 같은 시나리오를 구성할 수 있습니다.
사용자가 휴대 전화로 생성된 세션에 참여하여 상대방과 영상통화 중인 경우, 주변에 동일한 사용자 계정으로 로그인된 TV가 있는지 검색하고 현재 세션을 해당 TV로 캐스팅하여 더 큰 화면에서 영상통화를 계속할 수 있습니다. 또한 사용자가 애플리케이션을 실행하는 TV에 카메라가 연결되어 있지 않은 경우에도, 주변에 카메라가 있는 모바일 폰을 자동으로 검색하고 모바일 폰의 카메라를 TV의 장치처럼 오프로딩(offloading)하여 카메라가 없는 TV에서도 영상통화를 이어갈 수 있습니다.
이러한 Multi Device 연계 기능을 활용하면 애플리케이션은 사용자에게 더 풍부한 서비스 경험을 제공할 수 있습니다.
그림 4: 공유 경험 플랫폼의 Multi Device 연계 시나리오
마지막으로, 저사양 단말에서도 다자간 음성 및 영상을 원활하게 공유할 수 있도록 플랫폼에서 지원하는 Video Mixer 기능에 대해 알아보겠습니다. 공유 경험 플랫폼은 다양한 단말에서 일관된 QoS 및 사용자 경험을 제공하는 것을 목표로 합니다.
여러 종류의 단말이 호스트에 의해 생성된 그룹에 참여하여 영상통화 서비스를 이용할 때, 일부 저사양 기기에서는 여러 개의 실시간 영상을 동시에 디코딩하고 재생하는 것이 어려울 수 있습니다. 이러한 상황에서 플랫폼은 저사양 기기에서도 원활한 서비스를 제공하기 위해, 생성된 세션 내에서 고사양 단말이 참여하고 있는 경우, 참여자들의 영상을 믹싱하여 단일 스트림으로 저사양 단말에 전달하는 Edge MCU 기능을 지원합니다.
Edge MCU 기능이 활성화되면 플랫폼은 연결 수립 과정에서 세션에 참여한 각 기기의 HW 구성 정보를 수집하고, MCU 기능을 제공할 사업자(provider) 단말과 합성된 영상을 전송받을 저사양 소비자(consumer) 단말을 동적으로 선정합니다. 또한 Edge MCU 서비스의 사업자와 소비자로 선정된 단말 정보를 고려하여, 그룹에 참여한 전체 단말 간에 미디어 스트림의 전송 경로를 동적으로 구성합니다. 예를 들어, 아래 그림 5에서와 같이 A, B, C, D, M의 5개 단말이 세션에 참여한 상황에서 M이 MCU 사업자로, D가 소비자로 선정되면 플랫폼은 단말 D의 A, B, C, M 영상 수신 경로를 모두 디바이스 M으로부터 받도록 연결 그래프를 생성하여 D 단말에 전달합니다(그림5).
그림 5: EdgeMCU 동작의 예
이러한 절차는 플랫폼 내에서 자동으로 처리되므로, 각 애플리케이션에서 별도의 부가적인 로직을 추가할 필요가 없습니다. Edge MCU를 활용한 다중 영상 송수신 서비스는 옵션을 활성화함으로써 간편하게 제공될 수 있습니다.
다음은 애플리케이션에서 영상통화 기능을 구현하기 위해 SDK의 API를 사용하는 예시입니다. 기기 간 연결 수립 및 AV 전송을 위한 복잡한 시퀀스들은 SDK 내에서 추상화되어 있으며, 아래의 샘플 코드처럼 (1)SDK Client를 생성하고 (2)플랫폼 클라우드에 접속한 후, (3)미팅을 생성하고 조인(join)하여 (4)간단한 API 호출만으로 단말에서 영상 통화를 시작할 수 있습니다.
예시 1
두 번째 예시는 SDK에서 제공되는 인터페이스를 사용하여 기기 간 세션 캐스팅을 수행하는 예입니다. 영상통화 중인 세션을 캐스팅하기 위해 근처 단말을 검색하고 선택한 단말에 현재 참여 중인 세션의 정보를 전달하여, 새로운 단말에서 전달된 세션 정보로 기존 세션에 참여하도록 하는 기능을 아래와 같은 절차로 API를 호출하여 간단히 구현할 수 있습니다.
예시 2
이렇게 하여 애플리케이션은 간편한 API 호출로 영상 통화 및 세션 캐스팅을 쉽게 구현할 수 있습니다.
현재 공유 경험 플랫폼은 2023년 초에 완성된 1.0 버전이 릴리즈되었으며, 이를 기반으로 삼성 스마트 TV 및 스마트폰을 대상으로 하는 자체 영상통화 서비스 ‘ConnecTime’이 5월에 최초로 출시되어 운영 중입니다. 스마트폰용 ConnecTime 서비스는 플레이스토어에서 손쉽게 설치할 수 있습니다. 또한, 앞으로 해당 서비스를 TV 및 스마트폰뿐만 아니라 패밀리 허브와 같은 다양한 삼성 단말에서 이용할 수 있도록 확장할 계획입니다.
아울러 공유 경험 플랫폼을 기반으로 한 서비스는 영상통화 기능 뿐만 아니라 Fitness, Watch Together와 같은 다양한 기능을 통합하여 제공될 예정입니다. 이를 통해 사용자들에게 더 풍부하고 향상된 경험을 제공하는 플랫폼으로 발전시킬 계획입니다. 삼성은 지속적인 혁신으로 사용자들에게 더욱 멋진 디지털 경험을 선사하기 위해 노력하고 있습니다. 삼성이 그려가는 미래를 기대해 주세요.
Samsung Research Platform 팀의 남궁은이었습니다. 감사합니다.
|
출처 |
|
|
