길잡이를 위한 지도

362025년 08월 20일5

드미트리가 개발자 포럼에 남긴 답변은 간결했지만 깊이가 있었다. 그는 단순히 해결책 코드만 던져주는 대신, 버퍼를 업데이트하는 여러 가지 방법(mapAsync, writeBuffer)의 차이점과 각각의 방식이 어떤 시나리오에 더 적합한지를 설명했다. 그리고 그가 왜 그런 선택을 했는지, 그 이면에 있는 GPU 메모리 아키텍처에 대한 기본적인 개념까지 덧붙였다.

질문자는 곧 감사의 댓글을 남겼다.
“단순히 물고기를 잡아주신 게 아니라, 낚시하는 법을 알려주셨군요. 정말 감사합니다!”

그 댓글을 보며 드미트리는 희미한 만족감을 느꼈다. 하지만 그는 곧바로 더 큰 문제를 직시했다. 이 질문은 이곳 포럼뿐만 아니라, 스택 오버플로우, 레딧, 그리고 Dawn 프로젝트의 깃허브 이슈 트래커에서도 조금씩 다른 형태로 반복적으로 올라오고 있었다.

그는 마치 가뭄으로 고통받는 마을에 우물을 파주는 대신, 목마른 사람 한 명 한 명에게 물 한 잔씩을 떠다 주고 있는 기분이 들었다. 임시방편일 뿐, 근본적인 해결책이 아니었다.

다음 날 아침, 팀 미팅.
드미트리는 새로운 안건을 제시했다.
“우리는 새로운 프로젝트를 시작해야 합니다. 코드를 짜는 프로젝트가 아니라, 지식을 구축하는 프로젝트입니다.”

팀원들은 의아한 표정으로 그를 바라보았다.

“지금 커뮤니티에는 수많은 질문들이 떠다니고 있습니다. 하지만 그들이 참고할 만한 ‘공인된 정답’이 없습니다. 블로그 포스트들은 각자의 관점에서 쓰여 있고, 공식 사양 문서는 초보자가 읽기엔 너무 건조하고 어렵습니다. 우리는 길 잃은 개발자들을 위한 공식적인 등대가 필요합니다.”

그는 화이트보드에 프로젝트의 이름을 썼다.
WebGPU Samples

“우리가 직접, WebGPU의 모든 핵심 기능을 보여주는 가장 모범적인 예제 코드들을 만드는 겁니다. 그리고 그 코드들은 단순히 동작하는 것을 넘어, 코드 자체가 가장 훌륭한 문서가 되어야 합니다.”

벤이 반문했다.
“좋은 아이디어입니다만… 드미트리, 그건 보통 개발자 관계(DevRel) 팀의 업무 아닌가요? 우리는 엔진 개발자이지, 기술 작가나 교육자는 아니잖습니까.”

그의 말에는 일리가 있었다. 핵심 엔진 개발팀이 공식 예제를 만드는 것은 흔한 일은 아니었다.

하지만 드미트리의 생각은 달랐다.
“아니, 벤. 이건 우리가 해야만 하는 일이야. 왜냐하면 세상에서 WebGPU의 철학과 내부 동작을 가장 깊이 이해하고 있는 사람들이 바로 우리이기 때문이지. 우리는 ‘왜’ 이 API가 이렇게 설계되었는지 설명해 줄 수 있는 유일한 사람들이다.”

그는 말을 이었다.
“우리가 만들 샘플은 단순한 데모가 아니야. 그것은 WebGPU로 만들 수 있는 ‘최초의, 그리고 최고의 애플리케이션’이 되어야 해. 코드의 모든 줄에는 왜 그렇게 작성했는지에 대한 상세한 주석이 달려야 하고, 성능을 고려한 최적의 패턴을 제시해야 한다. 이 샘플들이 바로 다른 모든 개발자들이 참고할 ‘표준 설계도’가 되는 거야.”

그의 설득에 팀원들의 눈빛이 바뀌기 시작했다. 이것은 더 이상 부차적인 업무가 아니었다. 자신들이 만든 창조물의 올바른 사용법을 세상에 전파하는, 프로젝트의 마지막 화룡점정이었다.

그날 오후부터, Dawn 팀의 연구실에서는 새로운 종류의 코딩이 시작되었다.
그들은 Hello, Triangle 부터 시작하지 않았다. 대신, 회전하는 큐브에 실시간으로 조명이 적용되는, 조금 더 현실적인 예제를 첫 번째 목표로 삼았다.

카이는 정점 버퍼와 인덱스 버퍼를 생성하는 코드 옆에 상세한 주석을 달았다.
// 정점 데이터를 위한 GPU 버퍼를 생성합니다.
// usage 플래그에 COPY_DST를 추가하여, 나중에 writeBuffer를 통해 데이터를 쓸 수 있도록 합니다.

벤은 렌더 파이프라인을 설정하는 코드에 다음과 같은 설명을 덧붙였다.
// 깊이 버퍼를 사용하기 위해 depthStencil 상태를 설정합니다.
// 이 설정을 통해 큐브의 앞면이 뒷면을 제대로 가릴 수 있게 됩니다.

그들이 작성하는 것은 더 이상 기계를 위한 명령어가 아니었다. 그것은 미래의 동료 개발자들에게 보내는 친절한 편지였다.

얼마 후, 첫 번째 샘플이 완성되어 공식 깃허브 저장소에 올라갔다. 그리고 구글의 개발자 사이트인 web.dev에 이 샘플을 해설하는 상세한 튜토리얼이 함께 게시되었다.

반응은 폭발적이었다.
“이 샘플이야말로 내가 찾던 것이다!”
“공식 팀이 직접 만든 코드라니, 신뢰도가 다르다.”
“주석만 읽어도 API의 절반은 이해되는 기분이다.”

개발자 포럼에 올라오던 수많은 기초적인 질문들이 눈에 띄게 줄어들기 시작했다. 대신, 사람들은 이제 이 공식 샘플을 기반으로 더 깊이 있는 질문을 던지기 시작했다.

드미트리는 깨달았다. 그는 혼자서 모든 질문에 답할 수 없었다. 하지만 그는 모든 질문에 스스로 답을 찾을 수 있도록 돕는, 가장 정확하고 친절한 지도를 만들어 줄 수는 있었다. 그 지도 제작이야말로, 그가 맡아야 할 새로운 시대의 리더십이었다.