2026년 4월 게시

랜덤 화상 채팅의 실제 작동 원리

미디어 서버 없이 낯선 사람을 매칭하고 HD 영상을 스트리밍하는 엔지니어링

"시작"을 클릭하면 무슨 일이 일어날까요?

랜덤 화상 채팅은 거의 동시에 일어나는 다섯 단계를 통해 두 낯선 사람을 몇 초 안에 연결합니다. 브라우저가 카메라 접근 권한을 얻고, 매칭 대기열이 귀하를 다른 사용자와 연결하며, 시그널링 서버가 연결 메타데이터를 교환하고, WebRTC가 직접 P2P 영상 스트림을 확립합니다 — 미디어 서버 없이.

01

브라우저가 카메라 및 마이크 요청

getUserMedia API
02

매칭 대기열 입장

Cloudflare Durable Objects
03

매칭 완료 — 시그널링으로 연결

WebSocket
04

WebRTC 피어 연결 확립

SDP 교환 + ICE 후보
05

브라우저 간 영상 스트리밍

P2P, 서버 없음

WebRTC란 무엇인가요?

WebRTC(Web Real-Time Communication)는 플러그인 없이 P2P 오디오, 영상, 데이터 전송을 가능하게 하는 모든 현대 브라우저에 내장된 오픈소스 프로토콜입니다. W3C와 IETF가 관리하며, 다운로드, Flash, Java 애플릿 없이 Chrome, Safari, Firefox, Edge에서 화상 채팅을 구동합니다.

getUserMedia

카메라와 마이크 접근을 요청합니다. 앱이 표시하거나 전송할 수 있는 MediaStream 객체를 반환합니다.

RTCPeerConnection

전체 P2P 연결 생명주기를 관리합니다 — SDP 협상, ICE 후보 교환, 미디어 전송.

RTCDataChannel

동일한 P2P 링크를 통해 브라우저 간에 임의 데이터(텍스트 채팅, 파일 전송, 게임 상태)를 직접 전송합니다.

핵심 사실: WebRTC는 독점 API가 아닌 오픈 W3C/IETF 표준입니다. 사양을 구현하는 모든 브라우저가 참여할 수 있으며, 이것이 랜덤 화상 채팅이 설치 없이 크로스 브라우저로 작동하는 이유입니다.

P2P 영상 작동 원리 (그리고 더 개인적인 이유)

P2P 영상은 카메라 피드가 귀하의 브라우저에서 상대방의 브라우저로 직접 전달됨을 의미합니다. 중앙 서버가 스트림을 디코딩, 검사, 저장하지 않습니다. 이 아키텍처는 SDP 시그널링, ICE 후보 수집, NAT 탐색을 위한 STUN/TURN 서버로 가능해지며 — P2P 화상 채팅을 서버 중계 대안보다 근본적으로 더 개인적으로 만듭니다.

SDP (세션 기술 프로토콜)

각 피어는 지원되는 코덱, 해상도, 암호화 키를 설명하는 SDP '제안' 또는 '응답'을 생성합니다. 이것들은 시그널링 서버(WebSocket 릴레이)를 통해 교환되지만 실제 미디어 데이터를 포함하지 않습니다.

ICE (인터랙티브 연결 확립)

ICE는 후보 네트워크 경로를 수집합니다 — 호스트 후보(로컬 IP), 서버 반사 후보(STUN을 통한 공인 IP), 릴레이 후보(TURN 폴백). ICE 에이전트는 각 경로를 테스트하고 최선의 직접 경로를 선택합니다.

STUN 서버 (NAT 탐색)

STUN(NAT를 위한 세션 탐색 유틸리티)은 브라우저가 공인 IP와 포트 매핑을 발견하도록 도와줍니다. 이를 통해 홈 라우터 뒤의 피어가 릴레이 없이 직접 연결할 수 있습니다.

TURN 서버 (폴백 릴레이)

직접 연결이 실패할 때(대칭 NAT, 엄격한 기업 방화벽), TURN은 피어 간 암호화된 미디어 패킷을 중계합니다. 실제 세션의 약 15%가 TURN을 필요로 합니다 — 미디어는 여전히 종단간 암호화됩니다.

개인정보 인사이트: 영상 데이터가 브라우저 간에 직접 흐르기 때문에 플랫폼 운영자는 귀하의 영상 스트림을 보거나, 처리하거나, 저장하지 않습니다. 시그널링 서버조차 픽셀이 아닌 가벼운 JSON 메타데이터만 처리합니다.

매칭 시스템은 어떻게 작동하나요?

매칭은 50밀리초 이내에 전역 대기열에서 두 낯선 사람을 연결합니다. Nightcap은 Cloudflare Durable Objects — 전역 분산 상태 컴퓨팅 기본 요소 — 를 사용하여 공유 관심사, 지리적 선호도, 성별 필터로 사용자를 점수화하고 가장 높은 점수의 쌍을 매칭하는 일관된 단일 대기열을 유지합니다.

관심사 기반 점수화

"음악, 코딩, 애니메이션" 같은 관심사를 입력하면 매처가 대기열의 다른 사용자에 대해 Jaccard 유사도 점수를 계산하고 최적의 겹침을 우선시합니다.

국가 및 성별 필터

선택적 필터로 특정 국가나 성별의 사용자를 선호할 수 있습니다. 대기열은 1초 미만의 매칭 시간을 유지하면서 후보를 적절히 분류합니다.

Durable Object 아키텍처

단일 Cloudflare Durable Object가 강력한 일관성으로 전역 매칭 대기열을 메모리에 유지합니다. 전 세계 모든 엣지 위치가 동일한 상태에 연결되어 경쟁 조건을 제거합니다.

Boost: 우선 대기열 배치

유료 Boost 사용자는 대기열 앞에 배치됩니다. 이는 매칭 알고리즘 자체를 변경하지 않고 더 빠른 매칭과 더 높은 품질의 매칭을 의미합니다.

브라우저에서 실시간 영상 효과는 어떻게 작동하나요?

Nightcap은 GPU 가속 MediaPipe 모델을 사용하여 AI 기반 영상 효과를 브라우저 내에서 완전히 실행합니다. 배경 블러, 컬러 필터, 뷰티 모드는 모두 귀하의 MediaStream 에 로컬로 적용된 후 피어에게 전송됩니다 — 플랫폼은 어떤 서버에서도 원본 또는 처리된 영상을 수신하지 않습니다.

배경 블러 (AI 세그멘테이션)

MediaPipe의 셀피 세그멘테이션 모델이 GPU에서 실행되어 30fps로 사람과 배경을 식별합니다. 사람 마스크 외부의 모든 것이 조절 가능한 강도(1-20)로 블러 처리됩니다. 세그멘트된 출력이 원본 스트림을 대체합니다.

6가지 컬러 필터

웜, 쿨, 빈티지, 흑백, 비비드, 소프트 필터가 숨겨진 캔버스 요소에 CSS 필터 변환으로 적용됩니다. 필터링된 프레임이 새 MediaStream으로 캡처되어 RTCPeerConnection에 공급됩니다.

뷰티 모드

제어된 가우시안 블러 오버레이가 영상 프레임 위에 합성되어 미묘한 피부 보정을 만듭니다. 효과는 15% 불투명도로 혼합된 3px 블러를 사용하여 불자연스러운 외모를 피하면서 피부 텍스처를 부드럽게 합니다.

모든 채팅을 지켜보지 않고 모더레이션은 어떻게 작동하나요?

AI 모더레이션 시스템은 사람이 대화를 지켜보지 않고도 실시간으로 텍스트 메시지와 주기적인 영상 프레임을 분석합니다. Nightcap은 모든 채팅 메시지를 OpenAI의 무료 Moderation API를 통해 전송하고 AWS Rekognition을 통해 콘텐츠 분석을 위한 영상 프레임을 주기적으로 샘플링합니다 — 대량 감시 없이 자동화된 집행을 가능하게 합니다.

텍스트 모더레이션

모든 메시지는 전달 전 OpenAI의 Moderation API에 대해 검사됩니다. API는 혐오 발언, 괴롭힘, 자해, 성적 콘텐츠, 폭력을 밀리초 만에 표시합니다 — 무료로 호출 가능합니다.

영상 프레임 샘플링

주기적인 프레임 캡처가 콘텐츠 분석을 위해 AWS Rekognition에 전송됩니다. 시스템은 명시적이거나 안전하지 않은 콘텐츠를 표시하고 영상 스트림을 녹화하거나 저장하지 않고 자동 집행을 트리거합니다.

원클릭 신고

사용자는 즉시 매칭을 신고할 수 있습니다. 신고는 즉각적인 검토를 트리거하며, 확인된 위반은 심각도와 반복 위반 이력에 따라 임시 또는 영구 차단으로 이어집니다.

프라이빗 모드

양측 사용자가 독립적으로 동의하면 NSFW 콘텐츠 필터가 해제됩니다. 그러나 아동 성착취물 감지와 위협 모니터링은 항상 활성 상태입니다 — 모드에 관계없이 절대 비활성화되지 않습니다.

왜 P2P가 1대1 영상에서 미디어 서버보다 우월한가요?

1대1 화상 채팅에서 P2P WebRTC는 서버 대역폭 비용이 없고, 가능한 가장 낮은 지연 시간(직접 네트워크 경로)을 제공하며, 플랫폼이 영상을 처리하지 않도록 보장합니다. SFU와 MCU 같은 서버 기반 아키텍처는 그룹 통화에서만 의미 있는 비용, 지연 시간, 개인정보 트레이드오프를 추가합니다.

아키텍처대역폭 비용개인정보
P2P (Nightcap)영상 대역폭 비용 $0영상이 서버에 없음
SFU높음 — 서버가 모든 스트림 중계서버가 모든 영상 확인
MCU최고 — 서버가 디코딩 및 재인코딩서버가 영상 완전 처리

한눈에 보는 아키텍처

Nightcap의 아키텍처는 네 가지 플레인으로 구분됩니다: 시그널링 (WebSocket을 통한 Cloudflare Workers), 매칭 (Durable Objects), 미디어 (순수 P2P WebRTC), 애플리케이션 로직 (결제, 모더레이션, 신고를 위한 Next.js API 라우트). 미디어 플레인은 영상이 서버를 거치지 않기 때문에 서버 대역폭 비용이 없습니다.

브라우저←→Cloudflare Worker(WebSocket 시그널링 — SDP + ICE 중계)
브라우저←→Durable Object(매칭 대기열 — 관심사 점수화)
브라우저←→브라우저(P2P WebRTC — 미디어 서버 비용 없음)
브라우저Next.js API(Stripe 부스트, 모더레이션, 신고)

자주 묻는 질문

WebRTC 화상 채팅은 정말 P2P인가요?

네. WebRTC 연결이 설정되면 영상과 오디오 데이터가 두 브라우저 간에 직접 흐릅니다. 시그널링 서버는 연결 메타데이터(SDP 제안 및 ICE 후보) 교환에만 사용되며 실제 미디어 스트림을 처리하지 않습니다.

화상 채팅 플랫폼이 내 영상을 보거나 녹화할 수 있나요?

Nightcap 같은 P2P 플랫폼에서 영상 스트림은 브라우저 간에 직접 전달되어 중앙 서버를 통과하지 않습니다. 플랫폼은 귀하의 영상을 보거나, 차단하거나, 녹화할 수 없습니다. 이것이 서버 중계 아키텍처에 비해 P2P WebRTC의 근본적인 아키텍처적 이점입니다.

직접 P2P 연결이 실패하면 어떻게 되나요?

STUN 지원 직접 연결과 호스트 후보 모두 실패하면(주로 엄격한 기업 NAT 또는 대칭 방화벽으로 인해) WebRTC는 자동으로 TURN 릴레이 서버로 폴백합니다. TURN 서버는 피어 간 암호화된 미디어 패킷을 전달합니다. 약 15%의 세션이 TURN 릴레이를 필요로 합니다.

Nightcap은 플러그인이나 다운로드가 필요한가요?

아니요. Nightcap은 Chrome, Safari, Firefox, Edge에 기본으로 내장된 WebRTC를 사용합니다. 플러그인, Flash, Java 애플릿, 앱 다운로드가 필요 없습니다. 웹사이트를 열면 브라우저가 모든 것을 처리합니다.

랜덤 화상 채팅에서 매칭은 어떻게 작동하나요?

시작을 클릭하면 매칭 대기열에 들어갑니다. Nightcap은 Cloudflare Durable Objects를 사용하여 50ms 미만의 매칭으로 전역 대기열을 유지합니다. 시스템은 귀하의 관심사, 국가 설정, 성별 필터를 고려하여 최적의 매칭을 찾습니다. 유료 Boost 사용자는 대기열에서 우선순위를 받습니다.

Nightcap 더 보기

기술을 직접 경험하세요 — Nightcap 무료 체험

계정 없음. 다운로드 없음. 미디어 서버 없음. 사이트를 열고 몇 초 안에 진짜 대화를 시작하세요.

무료 채팅 시작 →