Agora Web SDK의 경계 — WebRTC 표준과 SD-RTN
브라우저의 WebRTC API와 코덱 협상 범위, Agora Web SDK가 제공하는 채널·미디어 API, SD-RTN으로 설명되는 서비스 네트워크의 역할을 분리합니다. 네이티브 SDK의 비공개 내부 구현은 단정하지 않고, FEC와 retransmission 같은 손실 대응 기법도 표준과 공개 문서 범위에서 설명합니다.
목차(41개 항목)
- 0. 확인 가능한 범위 — 브라우저 API와 Agora 서비스 네트워크
1. WebRTC 기본기 — 브라우저가 강제하는 표준
2. 네이티브 SDK — 브라우저 밖에서 넓어지는 제어 범위
3. Web SDK — 절반은 표준, 절반은 Agora
4. SD-RTN — Software Defined Real-Time Network
5. "서버가 경로를 관리한다"의 의미
6. 글로벌 노드는 하나의 서버나 건물을 뜻하지 않는다
7. 데이터센터는 ISP와 어떻게 연결되나 — 멀티호밍
9. 실무 의사결정 — 언제 네이티브, 언제 Web?
- 10. 한 장 요약 — 암기 카드
- 11. 한 줄 결론
- 관련 글
- 참고 자료
"Agora는 자체 코덱을 써서 빠르다고 들었는데, 그럼 브라우저에서는 어떻게 동작하나요?". Agora 도입을 검토하는 자리에서 가장 자주 받는 질문 중 하나입니다. 답은 단순한 "예/아니오"가 아니라 레이어 분리 관점에서 풀어야 합니다 — 코덱 레이어와 네트워크 레이어를 따로 보면 네이티브와 Web의 차이가 자연스럽게 정리됩니다.
이 글은 브라우저 WebRTC의 제약과 Agora가 공개한 SD-RTN의 범위를 나눠 봅니다. 비공개 코덱·전송 프로토콜의 내부 동작은 추정하지 않습니다.
0. 확인 가능한 범위 — 브라우저 API와 Agora 서비스 네트워크
브라우저에서는 WebRTC가 노출하는 미디어·전송 API와 런타임 codec capability 안에서 동작한다. Agora Web SDK는 이 브라우저 연결을 Agora 서비스와 SD-RTN에 연결한다. 네이티브 SDK의 비공개 코덱·FEC·전송 구현은 공개 문서로 확인되는 범위만 기술해야 한다.
흔한 오해와 정정:
| 오해 | 정확한 이해 |
|---|---|
| Agora는 모든 환경에서 자체 코덱을 쓴다 | 공개 자료만으로 네이티브 codec pipeline의 전체 구성을 단정할 수 없음. 웹은 브라우저가 보고하는 지원 목록에서 협상 |
| Web SDK는 일반 WebRTC와 같다 | 브라우저 WebRTC API를 사용하지만 signaling·media service는 Agora가 제공 |
| "전용 회선"이라 항상 빠르다 | Agora가 최적화 네트워크로 설명하는 서비스이며, 실제 품질은 last mile·지역·접속망에 따라 달라짐 |
| FEC는 코덱의 기능이다 | 코덱과 별개 레이어입니다. 재전송 없이 패킷 손실을 미리 대비하는 채널 코딩입니다. |
| 글로벌·NAT 환경이면 항상 특정 SFU가 필요하다 | ICE는 P2P·TURN·SFU 연결 모두에서 후보 탐색과 연결성 확인에 쓰이며, 토폴로지는 제품 요구로 결정 |
1. WebRTC 기본기 — 브라우저가 강제하는 표준
브라우저(Chrome/Firefox/Safari)에는 WebRTC라는 표준이 내장되어 있습니다. 별도 플러그인 없이 getUserMedia() / RTCPeerConnection API로 카메라·마이크 캡처와 실시간 전송이 가능합니다.
브라우저가 결정하는 것들
| 항목 | 누가 결정하나 | 개발자가 바꿀 수 있나 |
|---|---|---|
| 코덱 | 브라우저 런타임과 offer/answer | 지원 목록 안에서 setCodecPreferences()로 우선순위를 정하거나 제외 가능 |
| 암호화 | DTLS-SRTP | 표준이 요구하는 보안 경로 |
| NAT 트래버설 | ICE 프레임워크 | STUN/TURN 서버는 서비스에서 지정 가능 |
| 혼잡 제어 | 브라우저 구현 | WebRTC 표준은 특정 알고리즘 하나를 의무화하지 않음 |
| 재전송/FEC | 협상된 RTP 기능과 브라우저 구현 | 지원 capability와 SDP 협상 결과에 따라 달라짐 |
일반 WebRTC의 한계 3가지
🔴 1. 코덱 제약
- 자체 최적화 코덱을 브라우저에 주입 불가
- 브라우저 벤더가 지원하는 코덱만 사용 가능
🔴 2. 네트워크 경로
- 공용 인터넷 P2P → ISP 비즈니스 계약에 따라 경로 결정
- 애플리케이션이 인터넷의 AS 경로를 직접 고르지는 못하며 지연·손실은 경로 상태에 따라 변동
🔴 3. 패킷 손실 대응 속도
- NACK/RTX는 재전송 왕복 시간이 필요할 수 있음
- 실제 추가 지연은 RTT, playout buffer, 복구 정책에 따라 달라짐
이 세 가지가 Agora 같은 RTC 서비스가 풀어야 할 문제입니다.
2. 네이티브 SDK — 브라우저 밖에서 넓어지는 제어 범위
네이티브 환경(iOS/Android/PC)에서는 Agora SDK를 앱에 직접 포함하므로 브라우저 API보다 캡처·인코더·네트워크 적응을 넓게 제어할 수 있습니다. 다만 Agora가 공개하지 않은 codec pipeline과 패킷 복구 알고리즘을 특정 방식으로 단정하지 않습니다.
패킷 손실 대응 — 공개 문서 범위에서 읽기
RTC 시스템은 NACK/RTX, FEC, concealment 같은 여러 기법을 조합할 수 있습니다. 아래 흐름은 일반 개념이며 Agora 내부 구현 설명이 아닙니다.
FEC(Forward Error Correction)란?
데이터를 보낼 때 복구용 여분 데이터(parity)를 미리 함께 보내는 채널 코딩 기술. 일부 패킷이 손실돼도 여분 데이터로 재전송 없이 즉시 복원 가능.
비유로 설명하면:
📦 택배 비유
책 10권을 보낼 때, 원본 10권 + 복구용 2권을 같이 보냄. 운송 중 2권 분실되어도 나머지 12권 중 10권으로 원본 재구성 가능 → 재배송 요청 불필요.
트레이드오프
FEC가 공짜는 아닙니다:
| 장점 | 단점 |
|---|---|
| 재전송 왕복을 피할 수 있음 | 패리티만큼 대역폭 증가 |
| 양방향 통신 불필요 (방송에 유리) | 손실률이 FEC 임계치 초과 시 무용 |
| 지연 예측 가능 | CPU 추가 사용 |
구체적인 FEC 코드와 비율 제어는 제품 구현에 달려 있습니다. Agora의 공개 제품 문서가 밝히지 않은 패킷 구조나 알고리즘은 여기서 가정하지 않습니다.
3. Web SDK — 절반은 표준, 절반은 Agora
여기가 핵심 문제 지점입니다.
RTCPeerConnection의 미디어 협상은 브라우저가 제공하는 코덱 capability 범위에서 이뤄집니다. 애플리케이션은 setCodecPreferences()로 순서를 조정할 수 있지만 임의의 코덱 구현을 이 경로에 직접 주입할 수는 없습니다. WebCodecs·WASM을 이용한 별도 미디어 처리 경로는 이 문장의 범위 밖입니다.
그래서 Agora Web SDK는 이렇게 설계되어 있습니다:
정리하면 — 레이어별 분업
| 레이어 | 네이티브 SDK | Web SDK |
|---|---|---|
| 캡처 | 자체 ADM/VDM | getUserMedia (브라우저) |
| 코덱 | SDK·기기 capability와 공식 지원표 확인 | 브라우저 capability와 협상 결과 |
| 암호화 | SDK 보안 문서의 지원 모드 확인 | WebRTC 보안 모델과 Agora 설정 적용 |
| 전송 스택 | 세부 구현은 공개 문서 범위에서 확인 | 브라우저 WebRTC 전송 사용 |
| 네트워크 경로 | SD-RTN | SD-RTN |
| 손실 복구 | SDK 공식 지원 범위 확인 | 브라우저가 협상한 RTP 기능과 서비스 정책에 따름 |
Web SDK의 가치는 네트워크 하나로만 환원되지 않습니다. signaling, media service, 운영 도구, 분석, 확장 기능을 함께 평가해야 합니다.
4. SD-RTN — Software Defined Real-Time Network
SD-RTN은 Agora가 실시간 미디어 전송을 위해 운영하는 소프트웨어 정의 네트워크의 제품명입니다. 공개 페이지의 수치와 설명은 Agora의 제품 주장으로 범위를 표시합니다.
물리 회선과 서비스 네트워크를 구분한다
Agora의 공개 문서는 SD-RTN을 자체 해저케이블로 설명하지 않는다. 여러 데이터센터·통신 경로 위에 품질 측정과 라우팅 정책을 적용하는 서비스로 이해해야 한다.
패킷이 인터넷을 이동하는 기본 메커니즘
각 라우터는 패킷을 받으면 라우팅 테이블을 보고 "다음 어디로 보낼지" 결정합니다. 이 테이블은 BGP(Border Gateway Protocol) 로 ISP들끼리 합의해 만듭니다.
BGP 경로 선택에는 사업자 정책뿐 아니라 local preference, AS path, MED 등 여러 속성이 관여한다. 애플리케이션이 이 경로를 직접 통제하지는 않는다.
일반 인터넷 경로 — 애플리케이션이 AS 경로를 직접 선택하지 않는다
- 경로 결정 주체: 각 라우터의 BGP 테이블 (분산 결정)
- 경로 변경: 네트워크 운영자와 라우팅 프로토콜이 수행
- 품질 관측: 종단 애플리케이션도 RTT·loss·jitter를 측정할 수 있음
Agora SD-RTN — 인터넷 위에 서비스 경로를 더한다
핵심은 두 가지:
① 가까운 진입점과 다중 경로 활용 사용자를 가까운 서비스 진입점에 연결하고 여러 후보 경로를 비교할 수 있습니다. hop 수 감소는 가능한 결과이지 보장값은 아닙니다.
② 각 구간의 다음 목적지를 Agora가 직접 선택
인터넷의 기반 라우팅은 계속 BGP에 의존하며, Agora는 그 위에서 서비스가 보유한 후보 경로를 선택합니다. 정확한 측정 주기와 전환 알고리즘은 공개되지 않았습니다.
차이를 정리하면
| 항목 | P2P WebRTC | Agora SD-RTN |
|---|---|---|
| 경로 결정 주체 | 인터넷 라우팅 + 종단 전송 | 인터넷 라우팅 위의 Agora 서비스 정책 |
| 경로 결정 기준 | BGP 속성·운영 정책 | 공개 자료상 품질 측정과 ML 기반 라우팅 |
| 경로 변경 | 운영자·라우팅 계층이 수행 | 서비스가 가진 후보 경로에서 정책 적용 |
| 품질 관측 | 종단·네트워크 계층별 관측 | 서비스 노드와 SDK telemetry 활용 가능 |
| 실제 hop·RTT | 경로마다 다름 | 경로마다 다르며 측정 필요 |
| 물리적 회선 | 인터넷·사업자 네트워크 | 인터넷·사업자 네트워크 위의 서비스 구성 |
개념 모델
🚗 공용 인터넷 = 네비 없이 외운 길로 운전
🛰️ Agora SD-RTN = 실시간 네비 + 거점별 직원
📮 택배 비유
| 일반 P2P | Agora SD-RTN |
|---|---|
| 일반 우체국에 맡김 | 내 직원을 중간중간 배치 |
| "규정상 대전 경유" | 대전직원이 "여기 막힘" 보고 |
| 대전 파업해도 나는 모름 | 본사가 "광주로 바꿔" 즉시 지시 |
| 경로를 앱이 직접 지정하기 어려움 | 서비스가 가진 후보 경로에서 전환 가능 |
공개 자료로 확인되는 동작 범위
Last Mile은 여전히 공용 인터넷
마지막 마일 주의: 사용자 단말과 서비스 진입점 사이의 Wi-Fi·모바일·ISP 품질은 SD-RTN만으로 제거할 수 없습니다.
현재 공개 범위
현재 Agora 공식 페이지는 SD-RTN이 200개가 넘는 국가와 지역을 지원하며 end-to-end latency를 400ms 이하로 제공한다고 주장합니다. 이는 측정 조건이 공개된 보편 법칙이 아니라 Agora의 제품 지표입니다. 과거 마케팅 자료의 거점·지연 수치를 현재 지표와 같은 기준으로 취급하지 않습니다.
- SDK가 Agora 서비스에 연결합니다.
- 서비스는 공개 설명상 네트워크 상태와 라우팅 정책을 이용합니다.
- 실제 경로와 품질은 지역·접속망·서비스 설정으로 측정합니다.
SD-RTN은 인터넷 라우팅을 없애는 기술이 아니라, 그 위에 Agora의 서비스 노드·telemetry·경로 정책을 더하는 구조입니다.
5. "서버가 경로를 관리한다"의 의미
추상적으로 "Agora가 경로를 제어한다"라고 말하면 와닿지 않습니다. 라우터와 Agora 서버의 차이를 코드 레벨에서 보면 직관이 잡힙니다.
일반 라우터 — 데이터 평면과 제어 평면
라우터에도 제어 평면, telemetry, 동적 라우팅과 장애 우회 기능이 있습니다. 애플리케이션 사업자가 인터넷 라우터를 직접 통제하지 못한다는 점과 라우터 자체가 측정·전환을 못 한다는 주장은 구분해야 합니다.
Agora 서버 — 소프트웨어가 도는 컴퓨터
이 코드는 개념 설명일 뿐 Agora의 실제 구현이 아닙니다.
라우터 vs Agora 서버
| 항목 | 일반 라우터 | Agora 서버 |
|---|---|---|
| 본질 | 데이터·제어 평면을 가진 네트워크 장비 | 애플리케이션·미디어 서비스 노드 |
| 경로 결정 | 라우팅 프로토콜과 운영 정책 | 인터넷 경로 위에서 서비스 후보 경로 선택 |
| 측정 | 네트워크 telemetry 지원 가능 | SDK·서비스 telemetry 활용 가능 |
| 전환 | 라우팅 정책과 수렴 시간에 따름 | 서비스 정책과 측정 결과에 따름 |
| 운영자 개입 | ISP 합의 필요 | Agora 단독 결정 |
서비스 오버레이는 인터넷 라우팅을 대체하지 않고, 그 위에서 측정 가능한 후보 경로와 운영 정책을 추가합니다.
6. 글로벌 노드는 하나의 서버나 건물을 뜻하지 않는다
"Agora 서버"의 정체
유저가 Agora 앱을 켜면:
이건 유튜브 서버에 접속하는 것과 똑같은 원리입니다. 특별한 마법은 없습니다.
데이터센터란?
데이터센터는 컴퓨팅·전력·냉각·네트워크 시설을 갖춘 물리적 장소지만, 제품의 edge나 point of presence가 곧 건물 하나 또는 서버 한 대를 뜻하지는 않습니다.
왜 많을수록 좋은가?
거점이 가까우면 last-mile RTT를 줄일 가능성이 있지만, 거점 수만으로 hop 수나 품질을 보장할 수는 없습니다.
거점 수는 커버리지 지표 중 하나입니다. 안정성은 피어링, 용량, 라우팅 정책, 장애 격리와 사용자의 접속망을 함께 측정해야 합니다.
7. 데이터센터는 ISP와 어떻게 연결되나 — 멀티호밍
여기 또 한 가지 SD-RTN을 빠르게 만드는 비밀이 있습니다 — 데이터센터의 ISP 연결 방식.
일반 유저 vs 데이터센터
🔴 일반 유저 = 단일 ISP 의존
가정/사무실은 보통 한 ISP에만 가입. 그 ISP가 느려지면 그대로 영향받습니다.
데이터센터의 멀티호밍 예시
멀티호밍은 여러 네트워크 연결을 사용하는 일반적 설계입니다. Agora의 특정 국내 통신사 계약과 회선 종류는 공개 출처가 없으므로 적지 않습니다.
멀티호밍이 만드는 차이
정리 — 공개 자료로 확인할 수 있는 범위
| 확인 항목 | 공개 자료가 설명하는 범위 |
|---|---|
| 지역 네트워크 | SD-RTN이 지역 간 경로를 최적화한다는 Agora의 제품 설명 |
| 실제 효과 | 대상 통신사·지역·시간대에서 RTT, loss, jitter로 측정 |
구체적인 백본 구성, ISP 계약과 회선 전환 정책은 공개 자료로 확인되지 않으므로 효과를 단정하지 않습니다.
8. 그래서 Web에서 Agora를 쓰는 이유는?
코덱은 어차피 브라우저 표준입니다. 그럼에도 Web SDK를 도입할 만한 이유는 명확합니다:
장점
| 이유 | 메커니즘 |
|---|---|
| 글로벌 안정성 | SD-RTN 백본으로 ISP 영향 최소화 |
| NAT 트래버설 운영 지원 | ICE/STUN/TURN·프록시 설정을 서비스 문서에 따라 구성 |
| 채널 확장 기능 | 제품별 참가자·호스트 제한과 과금표를 공식 문서에서 확인 |
| 품질 모니터링 | Agora Analytics로 RTT/Loss/Jitter 실시간 가시화 |
| 방화벽 우회 | Cloud Proxy로 기업 방화벽 통과 (#9 참고) |
| CDN과 동시 운용 | Media Push로 SD-RTN ↔ RTMP/HLS 변환 (#37 참고) |
한계
| 한계 | 영향 |
|---|---|
| 코덱은 브라우저 capability 범위 | 지원 목록 안에서 우선순위와 협상 정책을 조정 |
| 마지막 마일은 공용 인터넷 | 사용자 Wi-Fi 품질 저하는 서비스 네트워크만으로 제거할 수 없음 |
| WebRTC API 제약 | 인코더 파라미터 세부 조정 제한적 |
9. 실무 의사결정 — 언제 네이티브, 언제 Web?
같은 Agora SDK라도 환경마다 최적 구성이 다릅니다.
시나리오별 권장
| 시나리오 | 권장 | 이유 |
|---|---|---|
| 화상통화 앱 (모바일 우선) | 네이티브 + Web 병행 | 기기 제어와 설치 마찰을 함께 평가 |
| 웹 기반 화상회의 | Web SDK | 설치 마찰 제거가 우선 |
| 라이브 커머스 (방송) | Web SDK + Media Push | CDN 분기 필요 |
| AI 음성 에이전트 | 환경에 맞는 SDK | 네트워크 경로가 핵심 |
| 게임 보이스챗 | 네이티브 | 초저지연이 KPI |
10. 한 장 요약 — 암기 카드
| 개념 | 한 줄 요약 |
|---|---|
| WebRTC 표준 | 브라우저 내장, 코덱·암호화·NAT 처리 강제 |
| Agora 네이티브 SDK | 기기 capability와 SDK 공식 지원표에 따라 미디어 처리 |
| Agora Web SDK | 브라우저 WebRTC API를 Agora 서비스에 연결 |
| SD-RTN | Agora가 200+ 국가·지역, 400ms 이하 end-to-end latency로 설명하는 서비스 네트워크 |
| FEC | 패리티 데이터 미리 보내 재전송 없이 복원 |
| 마지막 마일 | SD-RTN도 사용자 Wi-Fi는 보장 못함 |
| Web SDK 평가 기준 | 네트워크·운영 도구·기능·비용을 함께 검증 |
11. 한 줄 결론
Web SDK는 브라우저가 제공하는 WebRTC capability 안에서 동작하고, Agora의 signaling·media service와 SD-RTN을 이용한다. 네이티브의 비공개 코덱·FEC·전송 내부와 정확한 경로 전환 수치는 공개 문서 없이 단정하지 않는다. 도입 판단은 대상 지역에서의 품질 측정, 운영 기능, 비용으로 한다.
관련 글
- #9 Agora의 기업 방화벽 우회 전략 — Cloud Proxy와 Firewall Whitelist — SD-RTN 위에 얹는 방화벽 통과 레이어
- #8 왜 P2P가 막히는가? — NAT, STUN, TURN 인터넷 구조 이해하기 — WebRTC P2P의 근본 제약
- #0 WebRTC란? ICE? STUN? NAT? TURN? — WebRTC 기본 구조
- #28 H.264 Profile·인코더 옵션·비트레이트의 현실 — 코덱 레이어 깊게 파보기
- #40 라이브 스트리밍 프로토콜 선택 — HLS / LL-HLS / WebRTC 의사결정 — 프로토콜별 비교
참고 자료
- Agora SD-RTN Overview — 현재 공개된 커버리지·지연·라우팅 설명
- Agora Web SDK Documentation — Web SDK 공식 문서
- WebRTC W3C Specification — 브라우저 표준 명세
- RFC 8834 — WebRTC Media Transport and Use of RTP — 혼잡 제어·RTP 사용 요구사항
- RFC 5109 — RTP Payload Format for Generic FEC — ULPFEC 표준
- RFC 8627 — RTP Payload Format for Flexible FEC — FlexFEC 페이로드 포맷 표준