드미트리의 여정은 이제 기술의 깊이를 파고드는 것을 넘어, 시간과 공간의 경계를 허무는 방향으로 나아가고 있었다. 그 마지막 퍼즐 조각은, 그가 오랫동안 잊고 있었던, 가장 근본적인 문제의식에서 다시 시작되었다.
“웹은 왜 네이티브를 따라가지 못하는가?”
WebGPU는 그 격차를 거의 없앴다. 하지만 여전히, 넘을 수 없는 마지막 벽이 하나 남아 있었다. 그것은 바로 ‘배포(Deployment)’와 ‘실행’의 경계였다.
사용자는 웹 애플리케이션을 사용하기 위해 브라우저를 열어야만 했다.
개발자는 네이티브 앱을 만들기 위해 여전히 Xcode나 안드로이드 스튜디오 같은 별도의 도구를 사용해야 했다.
이 마지막 경계를 허물려는 시도는, 크롬의 또 다른 팀, ‘프로그레시브 웹 앱(Progressive Web App, PWA)’ 팀과의 우연한 만남에서 시작되었다.
PWA 팀의 목표는, 웹사이트를 마치 네이티브 앱처럼 사용자의 컴퓨터나 스마트폰에 ‘설치’하고, 오프라인에서도 동작하게 만드는 것이었다. 그들은 이미 많은 성공을 거두었지만, 여전히 해결하지 못한 문제가 있었다.
PWA 팀의 리더, ‘아디’가 드미트리에게 말했다.
“저희 PWA는 데스크톱에서 독립적인 창으로 실행될 수 있습니다. 하지만 그 창은 여전히 브라우저의 샌드박스 안에 갇혀 있습니다. 저희는 사용자의 파일 시스템에 직접 접근하거나, 운영체제의 네이티브 UI 요소를 사용하는 것과 같은, 진정한 네이티브 앱의 능력을 가질 수 없습니다.”
바로 그 순간, 드미트리의 머릿속에서 두 개의 다른 세계가 충돌하며 새로운 아이디어가 폭발했다.
WebGPU는 브라우저의 경계를 넘어 네이티브 생태계로 확장되고 있었다. (deno-webgpu, wgpu-py 등)
PWA는 웹 기술을 네이티브 애플리케이션의 영역으로 끌어오려 하고 있었다.
“만약… 우리가 이 두 흐름을 하나로 합친다면?”
드미트리가 나지막이 말했다.
그는 새로운 개념의 아키텍처를 그리기 시작했다.
그것은 ‘프로젝트 아이언(Project Iron)’이라고 명명되었다.
아이언의 핵심은, WebGPU 구현체인 Dawn과, PWA의 기반 기술인 크로미움 임베디드 프레임워크(CEF)를 결합하여, 웹 기술로 네이티브 애플리케이션을 구축할 수 있는 완전히 새로운 종류의 ‘런타임(Runtime)’을 만드는 것이었다.
이 런타임 위에서 동작하는 애플리케이션은, 겉보기에는 평범한 웹사이트와 같다. HTML, CSS, 그리고 자바스크립트로 만들어진다.
하지만 그 이면에서는, 브라우저의 샌드박스를 벗어나, 운영체제의 모든 능력에 접근할 수 있었다.
- 자바스크립트 코드에서,
await fs.readFile('/path/to/file')
과 같은 코드로 로컬 파일 시스템을 직접 읽고 쓸 수 있다. - WebGPU 렌더링 결과물을, 브라우저 캔버스가 아닌, 운영체제가 제공하는 네이티브 윈도우에 직접 출력할 수 있다.
- 웹 워커가 아닌, 운영체제 레벨의 네이티브 스레드를 생성하여 진정한 병렬 처리를 할 수 있다.
이것은 일렉트론(Electron)과 같은 기존의 기술과 유사해 보였지만, 근본적인 차이가 있었다. 아이언은 처음부터 WebGPU와 같은 고성능 그래픽 및 계산 작업을 염두에 두고 설계되었다.
드미트리와 아디, 그리고 두 팀의 엔지니어들은 이 담대한 비전을 실현하기 위한 비밀 프로젝트에 착수했다.
그들은 Dawn 엔진을 수정하여, 브라우저 컨텍스트 없이도 네이티브 윈도우 핸들(Window Handle)에 직접 렌더링할 수 있는 기능을 추가했다.
그들은 자바스크립트와 네이티브 운영체제 API를 잇는 안전하고 효율적인 브릿지(Bridge)를 설계했다.
몇 달 후, 그들은 첫 번째 프로토타입을 만들어냈다.
그것은 겉보기에는 평범한 데스크톱용 이미지 편집기였다.
하지만 그 애플리케이션의 모든 UI는 HTML과 CSS로 만들어졌고, 모든 로직은 자바스크립트로 작성되었으며, 모든 이미지 처리 필터는 WGSL 컴퓨트 셰이더를 통해 WebGPU 위에서 실행되고 있었다.
사용자는 이 애플리케이션을 웹사이트 링크를 통해 즉시 실행할 수도 있고, 아이콘을 클릭하여 자신의 데스크톱에 ‘설치’할 수도 있었다.
웹과 네이티브의 경계가, 마침내 완벽하게 소멸하는 순간이었다.
드미트리는 이 프로토타입을 보며, 자신이 10여 년 전에 던졌던 첫 번째 질문에 대한 궁극적인 답을 찾았음을 깨달았다.
“웹은 왜 네이티브를 따라가지 못하는가?”
그 답은, ‘따라가는 것’이 아니었다.
그 답은, 웹이 네이티브를 ‘흡수’하고 ‘포용’하여, 그 경계 자체를 무의미하게 만드는 것이었다.
WebGPU는 그 거대한 융합을 가능하게 한 촉매제였다.
그것은 단순히 그래픽을 그리는 API를 넘어, 웹이라는 가상의 운영체제가, 현실 세계의 하드웨어와 운영체제의 모든 힘을 직접적으로 제어할 수 있게 만든, 가장 중요한 다리였던 것이다.
그의 여정은 이제 막, 또 다른 새로운 지평선을 열고 있었다.
웹이 브라우저라는 창문을 넘어, 우리의 모든 디지털 경험을 지배하는, 보편적인 애플리케이션 플랫폼이 되는 미래.
그 미래의 중심에, 그가 쏘아 올린 작은 신호탄이 빛나고 있었다.