투케이2K

177. (TWOK/WORK) [업무 이슈] AWS WebRTC 실시간 비디오 재생 시 Client 클라이언트 연결 접속 및 해제 상태 확인 이슈 본문

투케이2K 업무정리

177. (TWOK/WORK) [업무 이슈] AWS WebRTC 실시간 비디오 재생 시 Client 클라이언트 연결 접속 및 해제 상태 확인 이슈

투케이2K 2025. 8. 11. 18:49
728x90

[제 목]

[업무 이슈] AWS WebRTC 실시간 비디오 재생 시 Client 클라이언트 연결 접속 및 해제 상태 확인 이슈

 

[내 용]

------------------------------------------------------------------------------
[개발 및 테스트 환경]
------------------------------------------------------------------------------

- 제목 : [업무 이슈] AWS WebRTC 실시간 비디오 재생 시 Client 클라이언트 연결 접속 및 해제 상태 확인 이슈


- 테스트 환경 : AWS / KVS / WebRTC / Client Conenction


- 사전) AWS Kvs WebRTC 실시간 영상 재생 설명 : 

  >> WebRTC 란 웹, 애플리케이션, 디바이스 간 중간자 없이 오디오나 영상 미디어를 포착하고 실시간 스트림할 뿐 아니라, 임의의 데이터도 교환할 수 있도록 하는 기술입니다

  >> WebRTC 는 간단한 API 를 통해 웹 브라우저, 모바일 애플리케이션 및 커넥티드 디바이스 간에 실시간 통신을 활성화할 수 있습니다


- 사전) AWS Kvs WebRTC 주요 용어 설명 : 

  >> SDP (Session Description Protocol) : 오디오/비디오 코덱, 해상도, 포트 등 스트리밍 정보를 담은 텍스트 포맷

  >> Offer / Answer	: 통신 연결을 협상하기 위한 SDP 메시지 (초기 연결 설정)
  
  >> ICE (Interactive Connectivity Establishment) : NAT/P2P 환경에서도 연결 가능한 경로(IP, 포트 등)를 찾기 위한 기술
  
  >> Candidate : 가능한 연결 경로 (IP + Port 조합)


- 사전) WebRTC STUN 및 TURN 서버 설명 : 

  >> (같은 와이파이 망) STUN 서버는 HOST 를 거쳐 >> Server Reflexive Address 만을 응답하지만,
     (릴레이서버 사용) TURN 서버는 Relayed Address와 Server Reflexive Address 를 모두 응답한다

  >> STUN, TURN 서버를 이용해 SDP Answer IP주소 를 취득 >> RTCPeerConnection Remote 연결 수행

------------------------------------------------------------------------------





------------------------------------------------------------------------------
[이슈 사항]
------------------------------------------------------------------------------

1. AWS Kvs WebRTC 실시간 비디오 재생 수행 시 클라이언트 접속 및 해제에 따른 상태 관리가 필요해

   WebRTC 연결 및 IOT Core Shadow 통신으로 사용자 접속 관리 로직 추가 개발 필요 이슈


2. 사전) 디바이스 AWS 연동 상태 정리

  >> 디바이스는 AWS IOT Core 에 등록 된 사물로 MQTT Shadow 통신을 수행 중 인 상태

  >> 디바이스는 AWS Kvs WebRTC 실시간 신호 채널 생성 후 스트리밍 영상을 송출하고 있는 상태

    - 뷰어가 접속해서 디바이스가 송출 중 인 영상을 실시간으로 확인 가능

------------------------------------------------------------------------------





------------------------------------------------------------------------------
[원인 파악 및 증상 재현]
------------------------------------------------------------------------------

1. 디바이스 IOT Core Shadow MQTT 이벤트로 실시간 비디오 재생 명령 확인 (Server To Device)


2. 디바이스는 AWS Kvs WebRTC 실시간 신호 채널 생성 수행


3. 신호 채널 생성 완료 후 디바이스는 실시간 영상 송출 수행


4. 특정 뷰어는 WebRTC 연결 수행 후 송출 중 인 실시간 영상 확인 수행


5. 특정 뷰어는 실시간 영상 재생을 중지 하고 WebRTC 연결 종료 수행


6. 디바이스는 실시간으로 뷰어 연결 상태를 관리 하지 않아 지속적으로 신호채널에 스트리밍 영상을 송출하고 있는 상태 확인

------------------------------------------------------------------------------





------------------------------------------------------------------------------
[조치 내용]
------------------------------------------------------------------------------

1. 뷰어가 WebRTC Connection 시 지정하는 Remote Client 아이디 값과 서버에서 내려온 AWS Shadow MQTT 사용자 id 값 확인 로직을 사용해

   디바이스는 실시간 현재 연결 중 인 뷰어 상태 관리 신규 로직 구현

  >> 지속적으로 신호 채널에 스트리밍을 송출하는 이슈 해결 (비용 및 부하)

  >> 다중 뷰어가 연결 되어 있을 시 최대 접속 제한 관리 가능

  >> App 및 Web 클라이언트가 예기치 못하게 종료 된 경우 로그 및 이력 관리 가능


2. 디바이스 실시간 현재 연결 중 인 뷰어 상태 관리 간단 로직 정리 :

  >> App 화면에서 특정 디바이스 실시간 영상 확인 [버튼] 클릭 이벤트 발생

    - App 내부에서 특정 사용자 id 값 저장 관리

    - 디바이스에게 IOT Core MQTT 비디오 재생 START REQUEST 명령 전달

  >> 디바이스는 송출 중 인 신호 채널이 없는 경우 신호 채널 생성 후 실시간 영상 송출 및 START RESPONSE 명령 응답

    - 이미 만들어진 신호 채널이 있는 경우 즉시, START RESPONSE 명령 응답

    - START RESPONSE 에는 비디오 재생을 수행 할 수 있는 채널 ARN 정보 전달

  >> AWS 룰엔진에서는 해당 MQTT 이벤트를 감지해 특정 App 클라이언트에게 영상 재생 ARN 정보 전달

    - WebSocket , AppSync , Push 방법 등으로 Server To App 이벤트 전달

  >> 특정 App 은 뷰어 역할로 WebRTC 연결 수행 및 Remote Client 정보에 사용자 id 값 지정 후 접속 시도

  >> 뷰어의 WebRTC 연결이 완료 된 경우 사용자 관리 API 를 호출해 접속 완료 된 정보를 백엔드에 데이터 저장 및 디바이스에게 IOT Core MQTT 명령으로 접속 User 정보 전달 수행

  >> 디바이스는 뷰어 접속 시 전달 받은 Remote Client 값을 별도로 저장 관리하며, Server 에서 내려온 IOT Core MQTT 접속 User 정보 값을 동시 비교해 실제로 연결 중 인 사용자 필터링 수행

    - 실제로 연결 중 인 사용자 정보는 뷰어의 접속 시도로 전달 받은 데이터를 우선 설정

  >> 디바이스는 필터링 된 사용자 정보를 IOT Core MQTT User 정보 응답으로 수행

  >> 백엔드에서는 디바이스가 응답한 User 정보 기준으로 최신 현재 연결 된 사용자 수 정보 업데이트 수행

------------------------------------------------------------------------------





------------------------------------------------------------------------------
[참고 사이트]
------------------------------------------------------------------------------

[Aws KVS 비디오 스트림 , 신호 전송 채널 차이점 설명 정리]

https://blog.naver.com/kkh0977/223854439046


[Aws Kvs WebRTC 실시간 영상 재생 관련 학습 정리]

https://blog.naver.com/kkh0977/223855985471


[Aws] 자바스크립트 Aws Kvs WebRTC Master 생산자 실시간 양방향 음성 통화 교환 로직 - getUserMedia audio

https://blog.naver.com/kkh0977/223865672197?trackingCode=blog_bloghome_searchlist


[Aws] 자바스크립트 Aws Kvs WebRTC Viewer 소비자 실시간 양방향 음성 통화 교환 로직 - getUserMedia audio

https://blog.naver.com/kkh0977/223865675133?


자바스크립트 AWS Kvs WebRTC 디바이스 역할 (master) 뷰어 다중 연결 접속 처리 - RTCPeerConnection

https://blog.naver.com/kkh0977/223898851222?trackingCode=blog_bloghome_searchlist


[기능 개선] 자바스크립트 aws kvs webRtc 디바이스 마스터 영상 송출 시 뷰어 다중 접속 설정 - Multi PeerConnection

https://blog.naver.com/kkh0977/223898870074?trackingCode=blog_bloghome_searchlist


[Aws KVS WebRTC 신호 채널 당 최대 연결 마스터, 뷰어 제한 정리]

https://blog.naver.com/kkh0977/223898374278?trackingCode=blog_bloghome_searchlist

------------------------------------------------------------------------------
 
728x90
반응형
Comments