[SwiftBeam #17] "웹(Web)에서도 가능할까?" - 설치 없이 전송하는 브라우저의 한계와 도전

2026. 6. 29. 20:50AI Product Building/SwiftBeam

반응형
SwiftBeam Series #17

"설치조차 귀찮을 때"
웹(Web)의 한계와 도전

브라우저라는 좁은 문을 통과하는 방법

🌐 ⚡ 🔗 📦

"앱 설치 안 하고 그냥 브라우저에서 바로 보낼 수는 없나요?" SwiftBeam을 개발하며 가장 많이 들었던 질문 중 하나입니다. 앱스토어에 들어가서 앱을 검색하고 설치하는 과정조차 사치로 느껴질 때가 있죠. 특히 일회성 전송을 원하는 유저에게 '웹(Web)'은 최고의 접근성을 제공합니다. 하지만 파일 전송 앱에게 브라우저는 생각보다 훨씬 더 좁고 험난한 문이었습니다. 오늘은 SwiftBeam이 웹이라는 환경과 싸우며 마주한 한계와 이를 극복하기 위한 시도들을 공유합니다.

1. 브라우저라는 강력한 감옥

웹 브라우저의 최우선 가치는 '보안'입니다. 사용자가 웹사이트를 방문했다는 이유만으로 내 컴퓨터의 파일을 뒤적거리거나 로컬 네트워크를 헤집고 다닌다면 큰일이니까요. 이 보안 철학은 SwiftBeam의 핵심 기능인 '로컬 디스커버리(mDNS/UDP)'를 원천적으로 차단합니다.

웹 환경에서는 로컬 소켓에 직접 접근할 수 없으므로, 주변 기기가 "나 여기 있어!"라고 외쳐도 브라우저는 그 목소리를 들을 수 없습니다. 또한, 브라우저는 메모리 관리와 파일 시스템 접근에도 매우 엄격한 제약을 둡니다. 대용량 파일을 전송하는 데 필요한 '스트림 전송' 역시 브라우저의 종류와 버전마다 지원 여부가 천차만별인 상황이었죠.

2. WebRTC와 PWA: 웹의 한계를 넘는 열쇠

하지만 불가능은 없습니다. SwiftBeam 웹 버전은 두 가지 핵심 기술을 통해 돌파구를 찾았습니다.

  • WebRTC (Web Real-Time Communication): 서버 없이 브라우저 간에 직접 데이터를 주고받을 수 있는 기술입니다. 탐색(Discovery) 단계에서는 아주 가벼운 시그널링 서버를 잠시 이용하되, 실제 파일 전송은 P2P로 처리하여 SwiftBeam의 철학인 '빠르고 안전한 전송'을 계승했습니다.
  • PWA (Progressive Web App): 웹사이트를 마치 설치된 앱처럼 동작하게 만드는 기술입니다. 오프라인에서도 작동하고, 홈 화면에 아이콘을 추가할 수 있어 설치형 앱과 웹의 경계를 허물어줍니다.
  • File System Access API: 최신 브라우저가 지원하는 이 API를 통해 사용자의 명시적인 허락 하에 파일을 직접 읽고 쓰는 기능을 구현했습니다.

3. Flutter Web: 화면 공유의 마법

14편에서 다룬 것처럼, SwiftBeam은 Flutter로 작성되었습니다. Flutter Web 덕분에 모바일과 데스크탑에서 구현한 그 유려한 전송 애니메이션과 복잡한 큐 관리 로직을 웹에서도 거의 그대로 재사용할 수 있었습니다.

비록 저수준의 네트워크 코드(C++ 소켓 등)는 웹용으로 다시 짜야 했지만, 사용자가 마주하는 'UI'와 '비즈니스 로직'은 동일하게 유지되었습니다. 이는 1인 개발자에게 웹 버전 출시라는 큰 산을 넘게 해 준 결정적인 동력이었습니다. "하나의 소스로 모든 곳에"라는 약속이 실현되는 순간이었죠.

4. "웹은 가장 가벼운 보조 도구입니다"

솔직히 말씀드리면, 웹 버전은 네이티브 앱만큼의 성능과 편의성을 100% 제공하지는 못합니다. 대용량 파일을 전송할 때의 안정성이나, 배경 상태에서의 전송 대기 등은 브라우저의 한계로 인해 제약이 많습니다.

그래서 SwiftBeam 웹 버전의 정체성을 '임시 수신 모드'에 맞췄습니다. 파일을 보낼 사람은 앱이 설치된 네이티브 환경(아이폰, 갤럭시, PC)에서 쏘고, 받을 사람만 웹 브라우저를 통해 링크나 QR 코드로 접속하여 즉시 다운로드하는 시나리오입니다. 이는 가장 현실적이면서도 사용자의 페인 포인트(Pain Point)를 정확히 찌르는 전략이었습니다.

5. 경계 없는 연결을 향한 마지막 조각

웹 버전 개발은 기술적으로 가장 고통스러웠지만, 동시에 가장 짜릿한 도전이었습니다. 브라우저라는 가장 대중적인 플랫폼을 포섭함으로써 SwiftBeam은 비로소 "어디서나(Anywhere)"라는 타이틀을 얻을 수 있게 되었습니다.

이제 플랫폼 확장에 대한 이야기는 충분히 나눈 것 같습니다. 하지만 앱의 완성도는 보이지 않는 엔진만큼이나 '보이는 부분'에서도 결정됩니다. 다음 편에서는 전송이라는 지루한 과정을 즐거운 경험으로 바꿔주는 '전송 속도 시각화와 진행률 표시'에 담긴 UX 디테일에 대해 알아보겠습니다.

다음 편 예고: [SwiftBeam #18] "느린 건 못 참아" - 전송 속도 시각화와 진행률 표시의 UX 미학

웹 브라우저의 한계를 넘는 Team M2Y의 기술 도전은 계속됩니다.
설치 없이도 강력한 기능을 제공하는 저희의 다양한 웹 기반 서비스들을 지금 확인해 보세요!

Team M2Y 웹 프로덕트 살펴보기 →
TAGS: FlutterWeb, 플러터웹, WebRTC, PWA, 웹앱개발, SwiftBeam, 브라우저성능, 크로스플랫폼, 앱개발, 기술블로그, 개발일지, 1인개발
반응형