서버 저장 없이 브라우저끼리 대용량 파일을 주고받게 만든 이야기 (WebRTC P2P)
이메일·클라우드 업로드는 용량 제한이 있고, 서버에 파일을 올리면 개인정보가 걱정입니다. "지금 이 큰 파일 좀 보내줘"라는 요청을 해결하기 위해, 서버 저장 없이 브라우저끼리 직접 파일을 주고받는 WebRTC P2P 전송 서비스(PonsWarp)를 만들었습니다.
핵심 설계
- WebRTC DataChannel 파이프라인: 청크 단위 전송 + ACK/재개(resume)
- Rust 기반 시그널링 서버: SDP/ICE 교환만 담당, 파일은 서버를 거치지 않음
- TURN 폴백: 엄격한 NAT 환경에서도 연결 성공
- 사용자 앱(warp) + 엔진/대시보드(grid) 구성
운영에서 만난 것들
- STUN/TURN 서버(coturn) 구성과 방화벽·NAT 조합별 디버깅이 실전의 대부분
- 재개(resume)가 없으면 2GB 전송은 실패하기 마련 — ACK 기반 청크 재전송이 안정성의 핵심
- 시그널링은 가벼워야 하므로 Rust로 분리, 메인 앱은 TypeScript 모노레포로 관리
AI 데모가 아니라 "동작하는 제품"을 만들고 싶다면, 통신·네트워크처럼 실패 모드가 분명한 도메인을 골라보세요. 데모 영상이 아니라 운영 중인 URL이 가장 강한 포트폴리오입니다.
라이브: https://warp.ponslink.com (전송 앱) / https://grid.ponslink.com (엔진 대시보드)
같이 만든 다른 라이브 서비스: https://ponslink.com (실시간 AI 회의·통역) 외 20여 개
댓글
로그인 후 댓글을 남길 수 있습니다.
대용량 전송에서 ‘서버를 거치지 않는다’보다 재개 가능성과 TURN 폴백을 먼저 운영 요건으로 둔 점이 인상적입니다. 실제 서비스에서는 전송 실패 후 어디서 이어지는지와 브라우저를 닫았을 때 복구 범위를 사용자에게 어떻게 설명하셨는지도 궁금합니다.