처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.04.26 35

브라우저에서 바로 윈도우 원격 데스크톱? Go + WebAssembly로 만든 grdpwasm

Hacker News 원문 보기
브라우저에서 바로 윈도우 원격 데스크톱? Go + WebAssembly로 만든 grdpwasm

도입: RDP를 브라우저에서 연다는 발상

원격 근무가 일상이 되면서 RDP(Remote Desktop Protocol), 그러니까 윈도우의 원격 데스크톱 프로토콜을 쓸 일이 부쩍 늘었어요. 그런데 보통은 전용 클라이언트를 깔거나, 회사 VPN에 붙은 다음에 mstsc.exe를 띄워야 하잖아요. 맥이면 Microsoft Remote Desktop 앱을 깔고, 모바일이면 또 별도 앱이 필요하고요. 이게 은근히 귀찮거든요.

그래서 등장한 게 이번에 공개된 grdpwasm이라는 프로젝트예요. 이름 그대로 Go로 짠 RDP 클라이언트(grdp)를 WebAssembly로 컴파일해서 브라우저에서 바로 돌아가게 만든 오픈소스예요. 설치 없이 URL 하나 열면 윈도우 원격 데스크톱이 브라우저 안에 뜨는 거죠.

어떻게 동작하나요

구조를 풀어볼게요. 먼저 알아야 할 게 두 가지예요. 첫째, grdp는 Go로 작성된 RDP 프로토콜 구현체예요. RDP는 마이크로소프트가 정의한 꽤 복잡한 바이너리 프로토콜인데, 화면 비트맵 압축, 입력 이벤트, 가상 채널, 보안 협상 같은 걸 다 포함해요. grdp는 이걸 Go로 다시 짠 라이브러리고요. 둘째, WebAssembly(WASM)는 브라우저 안에서 거의 네이티브 속도로 돌아가는 바이너리 포맷이에요. C/C++/Rust뿐 아니라 Go도 GOOS=js GOARCH=wasm 옵션으로 컴파일해서 WASM을 만들 수 있어요.

grdpwasm은 이 둘을 합쳐요. Go 코드를 WASM으로 빌드해서 브라우저로 보내고, 브라우저는 그걸 로드해서 RDP 프로토콜을 직접 말해요. 화면 출력은 HTML5 Canvas에 비트맵을 그리는 방식이고, 키보드와 마우스 이벤트는 자바스크립트에서 받아서 WASM 모듈로 넘겨줍니다.

그런데 여기서 한 가지 제약이 있어요. 브라우저는 보안상 임의의 TCP 소켓을 열 수 없어요. RDP 서버는 보통 3389 포트에서 raw TCP를 쓰는데, 이걸 브라우저에서 직접 못 찌릅니다. 그래서 grdpwasm은 WebSocket 게이트웨이를 중간에 둬요. 브라우저는 WebSocket으로 게이트웨이에 붙고, 게이트웨이가 그걸 RDP 서버로 TCP 프록시해주는 거죠. 흔히 'Guacamole' 같은 솔루션이 쓰던 패턴과 비슷해요.

비슷한 솔루션들과 비교

웹 기반 원격 데스크톱이 처음은 아니에요. 가장 유명한 건 Apache Guacamole이에요. 다만 Guacamole은 Java 기반의 백엔드 서버(guacd)가 RDP/VNC/SSH를 다 끝내고, 브라우저에는 자체 프로토콜로 화면 픽셀만 흘려주는 구조예요. 즉, 무거운 일은 서버가 다 해요.

반면 grdpwasm은 RDP 프로토콜 처리 자체를 클라이언트(브라우저) 안에서 해요. 이게 의미가 큰데요, 게이트웨이는 그냥 TCP-WebSocket 변환만 해주면 되니까 서버 자원이 훨씬 가벼워요. 또 클라이언트 안에서 직접 협상하니까 엔드투엔드 암호화도 자연스럽게 챙길 수 있고요. Microsoft 자체 솔루션인 RDP Web ClientAzure Virtual Desktop의 웹 클라이언트도 비슷한 철학이지만 폐쇄형이고, grdpwasm은 오픈소스라는 점에서 자체 호스팅하려는 팀에 매력적이에요.

또 하나 흥미로운 건 Go + WASM 조합의 가능성을 보여준 사례라는 점이에요. 보통 브라우저용 WASM은 Rust나 C++로 짜야 한다는 인식이 강한데, Go도 충분히 실용적이라는 걸 증명하는 셈이거든요. 다만 Go의 WASM 출력은 사이즈가 크고, 가비지 컬렉터가 같이 들어와서 시작 시간이 느린 편이에요. 이건 아직 약점이에요.

한국 개발자에게는

당장 활용 가치가 꽤 있어요. 첫째, 사내 관리자 도구예요. 사내 윈도우 서버에 접속해야 하는데 외주 개발자나 협력사에 RDP 클라이언트 깔게 시키는 거 번거롭잖아요. WebSocket 게이트웨이만 ZTNA(제로 트러스트 네트워크 액세스) 정책으로 보호해두면, 권한 있는 사람만 브라우저에서 바로 접속하는 흐름을 만들 수 있어요. 둘째, 교육·실습 환경이에요. 보안 실습이나 개발자 온보딩에서 윈도우 VM에 접속해야 할 때 클릭 한 번으로 끝낼 수 있죠.

다만 프로덕션에 바로 올리기 전에 챙겨야 할 게 있어요. 인증과 감사 로깅이 따로 안 들어 있다면 게이트웨이 앞단에 OIDC 같은 SSO를 붙이고, 세션 녹화·접근 로그를 남길 수 있도록 설계하셔야 해요. RDP 자체는 NLA(Network Level Authentication)를 강제하는 게 안전하고요.

마무리

핵심은 "무거운 프로토콜도 이제는 브라우저 안에서 끝낼 수 있다"는 거예요. WebAssembly가 단순한 실험을 넘어 인프라 도구로 진입하고 있다는 신호이기도 하고요. 여러분이라면 사내 RDP 접근, Guacamole 같은 기존 게이트웨이, grdpwasm 같은 클라이언트 사이드 WASM 방식 중 어떤 걸 선택하실 것 같으세요?


🔗 출처: Hacker News

이 뉴스가 유용했나요?

TTJ 코딩클래스 정규반

월급 외 수입,
코딩으로 만들 수 있습니다

17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.

144+실전 강의
17개수익 모델
4.9수강생 평점
정규반 자세히 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.