https://developer.chrome.com/blog/inside-browser-part1/
최신 웹브라우저 들여다보기 (1부) | Blog | Chrome for Developers
브라우저가 코드를 개략적인 아키텍처에서 구체적인 렌더링 파이프라인에 이르기까지 제대로 작동하는 웹사이트로 변환하는 방법을 알아보세요.
developer.chrome.com
Glossary
- CPU
- GPU
- Process
- applicaton’s executing program
- Thread
- lives inside of process
- execute any part of its program
- IPC (InterProcess Communication)
브라우저 아키텍처
- Browser process
- 여러 프로세스들의 조율자
- 주소창, 북마크, 네트워크 요청, 파일 접근 등 ‘크롬’의 역할 수행
- Renderer process
- 우리 눈에 보이는 웹사이트
- 최소 탭별로 1개의 프로세스
- iframe 등이 있을 경우 사이트마다 1개의 프로세스를 주도록 노력함
- Plugin process
- flash 등 플러그인 하나를 관리
- GPU process
- GPU는 크롬뿐이 아니라 다른 여러 프로그램의 요청들을 다 수행함
- Extension process
- Utility process
크롬의 멀티프로세스 아키텍처
장점
- 안정성
- 탭별로 렌더러 프로세스가 있음 → 한 탭이 고장나도 나머지는 멀쩡
- 보안이 좋음
- OS에서 프로세스의 권한을 조종하는 기능 제공
- 브라우저가 프로세스별로 특정 기능을 허용하거나 제한할 수 있음 (파일접근 등)
단점
- 메모리 이슈
- 프로세스별로 고유 저장소를 지님 → V8 같은 common 값들은 프로세스마다 중복되어 저장
- 해결: 최대 프로세스 개수에 제약
- 해결: 최대치 도달 시 같은 사이트의 탭은 하나의 프로세스로 통합시킴
Servicification
정의
The transformation or encapsulation of existing processes or systems into one or more discrete services
장점: 메모리 절약
- 고성능 기기
네트워크, 브라우저, UI, 스토리지, … 등 여러 개의 프로세스로 나누어 안정성 UP - 저성능 기기
이런 프로세스들을 브라우저 프로세스 하나로 합쳐서 메모리 절약
Site Isolation
- 2018
- runs a separate renderer process for each cross-site iframe
- 다른 사이트는 다른 프로세스에서 돌림으로써 Same Origin Policy를 지켜주기 위함