WGSL 모듈 시스템 개발이 한창이던 어느 날, 드미트리는 크롬 브라우저의 사용자 경험(UX) 팀으로부터 뜻밖의 회의 초대를 받았다. UX 팀은 보통 UI 디자인이나 사용 편의성을 다루는 곳이었다. 그들이 저수준 그래픽스 API 팀을 찾는 것은 매우 이례적인 일이었다.
회의실에 들어서자, UX 팀의 리더인 에밀리가 심각한 표정으로 그를 맞았다.
“드미트리, 저희는 지금 웹의 ‘투명성’에 대한 중요한 고민에 빠져 있습니다. 그리고 그 중심에 WebGPU가 있습니다.”
에밀리는 화면에 두 개의 웹사이트를 나란히 띄웠다.
왼쪽은 평범한 뉴스 기사 페이지였다.
오른쪽은 WebGPU를 사용해 화려한 3D 배경 효과를 보여주는 포트폴리오 사이트였다.
“사용자의 입장에서 이 두 사이트의 차이점은 무엇일까요? 겉보기에는 오른쪽이 더 멋지다는 것 외에는 없습니다. 하지만 보이지 않는 곳에서는 엄청난 차이가 벌어지고 있죠.”
그녀는 작업 관리자를 띄웠다. 뉴스 기사 탭의 CPU와 GPU 사용률은 거의 0에 가까웠다. 하지만 3D 포트폴리오 사이트 탭은 GPU 자원을 맹렬하게 사용하고 있었다.
“사용자는 자신이 방문한 웹사이트가 자신의 컴퓨터 자원, 특히 GPU와 배터리를 얼마나 사용하고 있는지 전혀 알지 못합니다. 웹사이트가 사용자의 카메라나 마이크를 사용하려고 하면, 브라우저는 명시적으로 권한을 묻는 팝업을 띄웁니다. 이것은 웹의 중요한 보안 및 개인정보 보호 원칙이죠. 하지만 GPU 사용에 대해서는 아무런 알림도, 제어도 없습니다.”
그녀의 지적은 날카로웠다.
“WebGPU는 웹사이트에 거의 네이티브 수준의 강력한 힘을 주었습니다. 하지만 강력한 힘에는 그에 상응하는 ‘투명성’과 ‘사용자 제어권’이 따라야 합니다. 지금의 모델은 사용자에게 너무 불친절하고 불투명합니다.”
드미트리는 이 문제가 언젠가 공론화될 것이라고 예상은 했지만, 이렇게 빨리 UX 팀에서 직접 문제를 제기할 줄은 몰랐다.
에밀리는 구체적인 제안을 내놓았다.
“저희는 두 가지 아이디어를 생각하고 있습니다.”
“첫째, ‘권한 요청 모델(Permission Model)’의 도입입니다. 웹사이트가 WebGPU 디바이스를 요청(requestDevice
)하는 순간, 브라우저는 사용자에게 ‘이 사이트가 당신의 그래픽 카드를 사용하여 고성능 그래픽을 표시하려고 합니다. 허용하시겠습니까?’ 와 같은 권한 요청 팝업을 띄우는 겁니다.”
그 제안에 드미트리는 즉시 심각한 문제점을 느꼈다.
“에밀리, 그건… WebGPU 생태계를 파괴할 수도 있는 위험한 발상입니다. 모든 사용자가 모든 WebGPU 사이트에 접속할 때마다 이 팝업을 보게 된다면, 대부분은 귀찮거나 두려워서 ‘차단’을 누를 겁니다. 권한 요청은 카메라나 위치 정보처럼 정말로 민감한 정보에만 제한적으로 사용되어야 합니다.”
에밀리도 그의 우려를 이해한다는 듯 고개를 끄덕였다.
“알고 있습니다. 그래서 두 번째 아이디어가 있습니다. 권한 요청 대신, ‘수동적 알림(Passive Notification)’ 모델입니다.”
그녀는 브라우저 주소창의 디자인 목업(Mock-up)을 보여주었다.
WebGPU를 활발하게 사용하는 사이트에서는, 주소창 옆에 작은 GPU 모양의 아이콘이 표시되는 디자인이었다. 사용자가 그 아이콘을 클릭하면, ‘이 사이트는 고성능 그래픽 기능을 사용 중입니다’ 라는 설명과 함께, 해당 사이트의 WebGPU 사용을 일시적으로 중단시킬 수 있는 토글 스위치가 나타나는 방식이었다.
“이 방식은 사용자 경험을 방해하지 않으면서도, 무슨 일이 일어나고 있는지에 대한 투명성을 제공합니다. 그리고 사용자에게 원치 않는 자원 사용을 중단할 수 있는 최소한의 제어권을 돌려주죠.”
드미트리는 두 번째 제안이 훨씬 합리적이라고 생각했다. 하지만 이것 역시 기술적으로는 간단치 않은 문제였다.
‘WebGPU 사용을 일시적으로 중단시킨다’는 것은, 현재 실행 중인 모든 GPU 작업을 강제로 멈추고, GPUDevice
를 잃어버린(lost) 상태로 만들어야 한다는 의미였다. 이는 애플리케이션에 치명적인 에러를 유발할 수 있었다. 개발자들은 이제 사용자가 언제든지 자신들의 GPU 디바이스를 빼앗아 갈 수 있다는 새로운 예외 상황에 대비해야 했다.
이 회의는 드미트리에게 WebGPU가 직면한 새로운 차원의 ‘대가’를 깨닫게 해주었다.
성능의 대가는 배터리 소모였다.
힘의 대가는 투명성이었다.
그는 이제 단순히 API를 만드는 것을 넘어, 이 API가 웹이라는 거대한 사회 안에서 다른 구성원들(사용자, 다른 웹 기술)과 어떻게 조화롭게 공존해야 하는지에 대한 ‘사회적 계약’을 고민해야 했다.
그는 UX 팀과 협력하여, 개발자들에게 GPUDevice
의 ‘상실(lost)’ 상태를 우아하게 처리하는 방법에 대한 가이드라인을 만들기로 약속했다. 그리고 W3C 커뮤니티에, ‘GPU 사용에 대한 사용자 가시성(User-facing visibility for GPU usage)’이라는 새로운 주제를 상정했다.
기술의 진보는 언제나 새로운 사회적 질문을 낳는다. 드미트리는 이제 그 질문에 답해야 하는, 기술자를 넘어선 철학자의 역할까지 떠맡게 된 것이다.