해결책
2017년 무렵 파이어폭스에는 속도 문제가 있었고 모두가 이를 알고 있었다. 크롬은 모질라가 보았던 것과 같은 하드웨어 추세를 읽고 브라우저 시장에 진입한 뒤 이를 활용했다. 멀티코어 CPU 덕분에 크롬은 탭을 별도 프로세스로 분리할 수 있었고, 그래서 바쁜 백그라운드 탭이 포그라운드 탭을 막을 수 없었다. 파이어폭스의 오래된 코드베이스에서는 같은 거친 단위의 아키텍처를 도입하기까지 시간이 오래 걸렸고, 사용자들은 떠나고 있었다.
당연해 보이는 해결책에는 각각 한계가 있었다. 기존의 단일 스레드 C++ 엔진을 짜내는 것으로는 유휴 코어를 활용할 수 없었다. 크롬의 탭당 프로세스 설계를 그대로 베끼는 것은 여러 페이지가 열려 있을 때만 도움이 되었는데, 새 페이지 하나를 불러오는 작업은 여전히 단일 코어에서 실행되었기 때문이다. 그리고 브라우저 전체를 처음부터 다시 작성하는 것은 그 과정에서 제품을 망가뜨릴 수 있는 다년간의 도박이었다.
모질라의 답은 급진적인 아키텍처를 먼저 별도의 연구소에서 지원하는 것이었다. 모질라는 데이터 경쟁(data race)이 없는 언어인 Rust와, 세밀한 병렬 처리를 기반으로 한 연구용 브라우저 엔진 Servo를 만들었고, 이를 통해 병렬 렌더링이 더 적은 버그로 더 빨라진다는 것을 입증했다. 그다음 Quantum은 Servo의 컴포넌트를 하나씩 파이어폭스에 이식했다. CSS 엔진 Stylo는 작업 훔치기(work stealing)를 통해 스타일 계산을 모든 코어에 병렬화하여 선형적인 속도 향상을 이루었고, 컴포지터는 자체 프로세스로 옮겨졌으며, Quantum DOM은 메인 스레드 작업의 우선순위를 정했고, Quantum Flow 전담팀은 느린 소셜 피드 같은 사례를 추적했다.
컴포넌트 단위로 진행하는 경로 덕분에 파이어폭스는 교체 사이에도 계속 작동했고, 모든 이식은 측정 가능한 성과를 냈다. 첫 Quantum 릴리스인 파이어폭스 57은 2017년 11월 14일에 나왔으며, 멀티프로세스 브라우징은 2017년 중반부터 이미 모든 사용자에게 기본값이었다. 사람들은 파이어폭스가 다시 빨라졌다는 것을 알아차렸고, 출시일의 댓글들은 크롬에서 돌아오는 사용자들을 묘사하며, 발표는 해커 뉴스에서 2,180점의 토론을 불러일으켰다.
이룬 것
급진적인 엔진을 연구 프로젝트에서 입증한 뒤, 경쟁 조건이 없는 그 컴포넌트들을 출시 제품에 하나씩 이식했다
Rust는 데이터 경쟁 부류의 버그를 제거했고, 이는 세밀한 공유 메모리 병렬 처리를 브라우저에 걸 만큼 실용적으로 만들었다.
Servo는 통합 전에 각 컴포넌트의 아키텍처를 입증했으므로, Gecko로의 모든 Quantum 이식은 출시 제품 내부의 실험이 아니라 검증된 연구의 이식이었다.
하위 시스템을 하나씩 교체한 것은 재작성의 절벽을 피했다. 브라우저는 계속 출시되었고, 스타일 계산이 코어 수에 따라 시간을 나누는 것처럼 각 조각은 측정 가능한 이득을 냈다.
사용 사례에 집중한 Quantum Flow 전담팀은 사용자가 실제로 느끼는 느려짐을 고쳤고, 이후 CI 테스트, 텔레메트리, 회귀 추적에 뒷받침된 상시 워크플로가 되었다.
경쟁자에게 필요한 아키텍처가 있다면 제품 전체를 다시 작성하지 말고, 새 아키텍처를 별도로 구축하고 입증한 뒤 하위 시스템을 점진적으로 교체하여 각 교체가 측정 가능한 이득을 내도록 하라
그 후
파이어폭스 Quantum(버전 57)은 2017년 11월 14일에 출시되었다. 출시 설명 글은 해커 뉴스에서 2,180점과 687개의 댓글을 얻었고, 기사에 달린 댓글들은 크롬으로 떠났던 사용자들이 돌아오는 것을 묘사한다. 모질라는 GPU 렌더링 컴포넌트인 WebRender가 2018년 중에 적용될 것이며 그 사이를 Advanced Layers가 메울 것이라고 밝혔고, 전담팀 프로세스가 정규 도구와 추적으로 자리 잡아 회귀가 자동으로 잡히게 될 것이라고 밝혔다. 이 릴리스는 또한 레거시 XUL 부가 기능에 대한 지원을 종료했는데, 일부 댓글 작성자들은 이로 인해 자신이 의존하던 확장 기능을 잃었다고 말했다.
근거 확인하기
출처
- Entering the Quantum Era — How Firefox got fast again and where it's going to get faster Mozilla Hacks · hacks.mozilla.org ·
- Hacker News discussion: Entering the Quantum Era — How Firefox got fast again Hacker News · news.ycombinator.com ·