릴리스 트레인(The Release Train)

252025년 08월 15일4

메이슨의 ‘LGTM’ 회신은 축포가 아니었다. 그것은 새로운 경주를 알리는 출발 신호 총성이었다. 드미트리와 팀은 안도의 한숨을 내쉴 틈도 없이, 곧바로 다음 단계의 현실과 마주해야 했다. 바로 크롬의 ‘릴리스 트레인’에 올라타는 것이었다.

릴리스 트레인은 최종 안정(Stable) 버전으로 출시되기 전, 코드가 거쳐가야 하는 여러 단계의 테스트 채널을 의미했다.

첫 번째 역은 카나리(Canary) 채널이었다.
가장 먼저 최신 코드가 배포되는, 극소수의 개발자와 얼리 어답터를 위한 불안정한 버전. 매일 밤 자동으로 업데이트되며, 탄광 속 카나리아처럼 가장 먼저 위험을 감지하는 역할을 했다.

두 번째 역은 개발자(Dev) 채널.
카나리에서 일주일 정도 검증된 코드가 넘어오는 곳. 조금 더 넓은 개발자 커뮤니티가 사용하며, 숨겨진 문제점들을 찾아낸다.

세 번째 역은 베타(Beta) 채널.
수백만 명의 일반 사용자가 참여하는, 최종 리허설 무대. 여기서 문제가 발생하면 대규모 장애로 이어질 수 있다.

그리고 마지막 종착역이 바로 모든 사용자가 쓰는 안정(Stable) 채널이었다.

WebGPU가 포함된 크롬 113은 이제 막 카나리 역에 도착한 셈이었다. 팀의 역할은 기능 동결 전과 완전히 달라졌다. 이제 그들은 코드를 추가하는 창조자가 아니라, 릴리스 트레인에 올라탄 자신들의 코드가 종착역까지 무사히 도착하도록 지켜내는 수호자였다.

카나리 채널 배포 후 며칠이 지났을 때, 첫 번째 비상벨이 울렸다.
깃허브 이슈 트래커에 기묘한 버그 리포트가 올라왔다.

“WebGPU 데모 페이지를 열면 화면이 검게 변합니다. 그런데 특정 스크린 녹화 확장 프로그램을 비활성화하면 정상적으로 작동합니다.”

드미트리는 미간을 짚었다. 또 다른 종류의 괴물이 나타난 것이다. Dawn의 문제도, 드라이버의 문제도 아닌, 다른 ‘확장 프로그램’과의 충돌. 웹 생태계의 복잡성이 낳은 예측 불가능한 변수였다.

“도대체 스크린 녹화 프로그램이 WebGPU와 무슨 상관이 있다는 거지?”
벤이 투덜거리며 해당 확장 프로그램을 설치했다. 그의 말대로, 확장 프로그램을 켜자 WebGPU 캔버스가 먹통이 되었다.

팀은 즉시 디버깅에 착수했다. 문제는 예상보다 훨씬 교묘했다.
그 확장 프로그램은 화면을 녹화하기 위해, 브라우저의 내부 그래픽 상태 일부를 미세하게 변경하고 있었다. WebGL 환경에서는 문제가 되지 않던 작은 변경이었다. 하지만 WebGPU의 Dawn 엔진은 보안과 성능을 위해 매우 엄격한 상태 관리를 가정하고 설계되었다. 외부 요인에 의해 이 가정이 깨지자, Dawn은 잠재적인 보안 위협으로 간주하고 스스로 렌더링을 중단해버린 것이다.

“이건 우리 잘못이 아니잖습니까. 확장 프로그램이 규칙을 어긴 거죠.”
한 엔지니어의 항변에 드미트리가 고개를 저었다.

“사용자는 그렇게 생각하지 않아. 사용자에겐 그냥 ‘크롬에서 안 된다’일 뿐이지. 우리의 책임은 우리의 코드가 어떤 환경에서도 최대한 견고하게 동작하도록 만드는 거야. 다른 프로그램의 버그로부터 우리 자신을 방어해야 해.”

그들은 확장 프로그램이 어떤 상태를 변경하는지 정확히 역추적했고, Dawn의 초기화 코드에 해당 상태를 강제로 원래대로 되돌리는 방어 로직을 추가했다. 다른 사람이 어지럽힌 방을, 매번 들어갈 때마다 스스로 청소하고 시작하는 것과 같은 방식이었다. 비효율적이지만, 안정성을 위해서는 불가피한 선택이었다.

패치가 완료되고, 카나리 채널에 다시 배포되었다. 며칠 후, 버그를 리포트했던 개발자로부터 감사 메시지가 도착했다.
“이제 확장 프로그램을 켜도 완벽하게 작동합니다. 감사합니다!”

첫 번째 위기를 넘겼다. 일주일 후, 크롬 113은 카나리 역을 떠나 개발자 채널이라는 다음 역으로 이동했다. 이제 수십만 명의 개발자들이 WebGPU를 사용하기 시작할 것이다.

드미트리는 릴리스 대시보드를 바라보았다. 카나리 패널의 녹색불이 꺼지고, 개발자 패널에 주황색 불이 들어왔다. 아직 갈 길은 멀었다. 더 넓은 세상으로 나아갈수록, 더 예측하기 힘든 문제들이 그들을 기다리고 있을 터였다. 그는 조용히 다음 전투를 준비하기 시작했다.