구글의 브라우저 크롬을 소개합니다.
어제(9/1) 구글이 전격적으로 자신들의 브라우저 '크롬'을 발표하고 오늘(9/2) 베타버전를 100개 이상의 나라에서 공개하겠다고 했다. 아침에 이 뉴스를 보고 얼마나 놀랐던지...
이번 발표에서 구글은 크롬을 소개하기 위한 만화책을 함께 공개하는 센스를 발휘 했는데 아무리 만화라고 해도 내용이 내용인지라 휙휙 넘기며 보기는 어렵다. 일단 글자가 많다.
그래도 구글이 만든 브라우저이니 한번 찬찬히 읽어보기로 하고, 이왕 시간을 들이는 김에 그 내용을 정리해서 공유하기로 했다.
개발 동기 및 목표
현재 우리가 브라우저에서 보는 것은 단순 웹페이지가 아니라 채팅, 비디오, 게임과 같은 어플리케이션이다. 이러한 웹어플리케이션들은 브라우저가 처음 생길 때는 없던 것들이다.
따라서 브라우저도 이러한 어플리케이션에 맞게 새롭게 만들어진다면 좋지 않을까?
이렇게 시작된 구글 크롬의 개발에 있어서 주요 목표는 다음과 같다.
- 브라우저는 안정되고, 빠르고 보안성이 높아야 한다.
- UI는 깔끔하고 심플하고 효율적적이어야 한다.
- 오픈소스로 개발되어야 한다.
이제 상세한 기술 사항들을 살펴보자.
1장 안정성, 테스트 멀티 프로세스 구조
멀티 프로세스 구조
크롬 프로젝트 초기에 구글의 Gears팀은 브라우저들이 싱글 쓰레드로 동작하기 때문에 문제가 있다고 말했다. 예를들어, 자바스크립트가 수행되는 동안 브라우저는 다른 일을 전혀 할 수가 없다.
Gears팀은 이에 대한 해결책으로 멀티쓰레드로 동작하는 브라우저를 생각하고 있었다. 하지만, 크롬팀은 멀티 프로세스 방식을 생각했다.
이것은 브라우저의 각 탭마다 별도의 프로세스가 존재하는 방식이다. 따라서 어떤 탭의 자바스크립트가 굉장히 바쁘게 동작하고 있더라도 다른 탭에는 영향이 별로 없게 된다.
나아가서 한 개의 탭이 죽어버리더라도 전체 브라우저가 죽는 일은 없게된다.
메모리 관점에서 기존의 멀티쓰레드 방식은 처음에는 메모리를 덜 사용한다.
하지만 사용자가 오랫동안 많은 탭을 열고 닫고 하면, 하나의 프로세스 내에서 반복된 메모리 할당, 재할당 특히 프레그멘테이션 등이 계속 발생하게되어 결국 브라우저는 점점 더 많은 메모리를 필요로하게된다.
그러나, 크롬의 멀티프로세스 방식에서는 탭을 닫고 열때마다 프로세스가 깔끔하게 새로 시작하게된다. 따라서 초기에 필요로하는 메모리는 좀 더 많지만 오랫동안 사용하더라도 프레그멘테이션 등의 문제가 없다.
그리고 크롬의 Task manager를 사용하면, 특정 사이트를 표시하고 있는 탭의 프로세스가 지나치게 부하가 높거나 특정 탭에서 사용하는 플러그인에 문제가 있는 지를 알 수 있으며 그러한 탭을 닫아버릴 수있다.
테스트
구글 크롬은 구글의 거대한 컴퓨팅 자원을 이용하여 엄청나게 테스트를 하고 있다.
새로운 빌드가 만들어질 때마다, 20-30분 내에 수 만개의 서로 다른 페이지들에 대해서 테스트를 수행한다.
또 매주 '크롬봇'이 수백만개의 페이지를 테스트한다.
(세상에 널린 수십억개의 페이지들 중에서 수백만개의 페이지를 선택하는 것 역시 구글의 축적된 데이터를 이용한다. 즉, 페이지 링크등을 통해 가장 많은 사람들이 방문하는 사이트들을 우선적으로 테스트한다.)
이러한 방식으로 크롬 팀은 문제들을 더 빨리 발견하고 해결하고 있다.
이외에도 크롬 팀은 다양한 자동화 테스팅 기법들을 사용하여 더 튼튼하고 안전한 브라우저를 만들기 위해 노력하고 있다.
2장 속도 (웹킷과 V8)
구글 크롬은 렌더링을 위해서 오픈소스 인 WEBKIT 엔진을 사용한다.
이미 웹킷을 사용하고 있는 구글폰 안드로이드팀에 따르면 웹킷은 메모리를 효율적으로 사용하고 디바이스에 임베드하기에도 좋으며, 전체적으로 간결성을 유지하고 있어 새로운 부라우저 개발에서 베이스 코드로 사용하기에 적합하다고 한다.
자바스크립트를 위해서 크롬은 V8이라는 Virtual Machine을 사용한다. V8팀은 덴마크에 있으며 이들은 Virtual Machine 전문가 집단이다.
아래는 V8팀의 말이다.
버추얼머신은 안정정과 플랫폼 독립성을 제공한다. 과거에 자바스크립트를 위한 버추얼 머신들은 성능과 인터액티비티가 그리 중요하지 않던 때에 웹페이지를 위한 기본적이고 작은 프로그램 수행을 타겟으로 디자인되었다.
하지만, 현재 우리는 GMAIL과 같은 큰 규모의 많은 어플리케이션들을 사용하고 있으므로 기존의 단순한 방식은 더 이상 적당하지 않다.
그래서 우리는 정말 빠른 엔진을 만들기 위해 완전히 바닥부터 새로 만들기로 했다.
V8에서 빠른 속도를 위해 도입한 개념 중 하나는 'Hidden class transition'이다.
자바스크립트는 클래스라는 개념이 없고 모두가 오브젝트이다. 새로운 오브젝트에 동적으로 속성들을 추가해가는 방식으로 동작한다.
하지만 V8에서는 실행이 계속됨에 따라 동일한 속성들을 가진 오브젝트들이 숨겨진 공통의 클래스를 공유하게 하고, 이를 기반으로 최적화를 할 수 있다.
V8이 자랑하는 또 한 가지 특징은 'Dynamic Code Generation'(동적 코드 생성)이다.
일반적인 자바스크립트 엔진은 수행을 위해서 소스크드를 보고(파싱) 자신이 이해하고 수행할 수 있는 내부적인 표현으로 변환한다.
그리고 실제 실행은 이 내부표현을 이용해서 하게된다. 하지만 이 방식에서는
동일한 부분이 반복 수행될 때마 이 내부표현이 반복해서 이해되고(interpretation) 수행되어야 한다는 단점이 있다.
그러나 V8에서는 자바스크립트 코드에서 바로 머신코드를 생성하여 실행한다. 따라서 수행을 위해서 내부코드를 생성하고 반복적으로 이해하는 과정이 없게된다.
끝으로 기존 자바스크립트 엔진의 또 다른 문제는 'Garbage Collection'이다.
자바스크립트를 포함한 최근의 객체 지향 언어들은 메모리 관리를 자동으로 해준다.
기존의 Garbage collection 방식에서는 이를 위해서 프로그램의 실행스택에서 메모리 포인터 처럼 보이는 것들을 찾아내는 과정이 필요하다. 그런데 어떤 값들은 메모리 포인터인지 혹은 일반 정수값인지 정확히 판단할 수 없는 경우가 많다.
V8에서는 'Precise garabage collection'이라는 방식을 사용한다. 이 방식에서는 어디에 포인터가 있는지를 정확히 알고 있으며, 이를 통해서 여러가지 성능 개선이 가능하다.
이러한 성능 개선들을 통해서, V8엔진을 사용하면 웹 화면상에서 더 부드러운 드래그엔드랍과 같은 UI구현이 가능해진다.
V8은 구글 크롭을 위한 특정한 API들을 포함하고 있지만, 코어 부분은 특정 브라우저에 한정되어 있지 않다. 따라서 어떤 브라우저도 원한다면 V8을 사용할 수 있다.
(생각보다 길어지네요.
나머지는 "구글의 브라우저 크롬을 소개합니다.(2/2)"에 이어집니다.)
Comments
-
(ikspres) 역시 좋다는 얘기 일색이군요. 하지만 백문이불여일견이겠죠. 모든사람이 제한없이 다운받게 해주려나 모르겠군요. by ikspre
-
이미지가 안보이네요. 스프링노트에서도 공개해주셔야 첨부파일이 보이더라고요.
-
공개를 원해요~ 원해요~
-
아 그렇군요. ^^
-
IE8도 탭마다 독립된 프로세스가 동작하는 방식이라고 합니다. 단, 프로세스별 상태를 보여주는 task manager는 없는 것 같네요.
-
(ikspres) 깔끔하고 쉬운 정리 감사합니다. by Zefyr
-
어디서 다운받나요 만화책만 보이네요
-
한국 시간으로는 내일부터 다운이 가능할 것이라고 합니다.
-
잘 정리해주셔서 감사해요
-
(ikspres) 깔끔한 정리 감사합니다 by hardboil
-
(ikspres) 만화 내용 요약 감사합니다.제 블로그에도 링크 걸어놓을게요. 구글 코리아는 뭐 하는 곳인지 참.. by 김샐
-
(ikspres) 김샐님 블로그 타고 왔습니다. 왼쪽의 빨란라인이 인상적입니다. 삼성증권 펀드 브로셔 냄새가 나지만…깔끔하네요~~! ^^* by 임기사
-
只需10元,就能让你的广告遍布各个网站! 支持图片/超链发送!支持分类/地域网站发送! 10元,就可能换来意想不到的效果,为什么不尝试下呢! QQ:224549200(注明“广告”) by Tandy
-
I know some <a href=http://www.wowgoldshopping.com>wow gold</a> in wow,i love wow,love <a href=http://www.wowgold-shopping.com>wow gold</a>,love wowgoldshopping.com,too. by wow gold
-
All MMORPGs <a href=“http://www.gamegoods.de”>sell wow gold</a> require your<a href=“http://wowgoldbiz.com”>wow gold</a> players <a href=“http://wowgoldbiz.com”>wow gold kaufen</a> characters to <a href=“http://www.gamegoods.de”>buy cheap wow gold</a> level up to <a href=“http://wowgoldbiz.com/SiteWeb/gamesale/payment.aspx”>wow geld</a> help them <a href=“http://wowgoldbiz.com/WOW/WorldOfWarcraft-Power-Level/WOWPowerLevel-DE.aspx”>wow powerlevel</a> advance through <a href=“http://www.gamegoods.de”>buying wow gold</a> the game play. <a href=“http://www.funingame.com”>wow</a> In Vanguard:<a href=“http://www.funingame.com”>wow gold</a> Saga of Heroes, <a href=“http://www.gamegoods.de/WOW/WorldOfWarcraft-DE.aspx”>wow billig gold</a> leveling up is<a href=“http://www.funingame.com/SiteWeb/GameDoc/WOWGold4EuropeNews.aspx”>wow europe</a> highly recognized <a href=“http://www.wowgoldcc.cn”>wow power leveling</a> as a key <a href=“http://www.gamegoods.de/WOW/WorldOfWarcraft-DE.aspx”>wowgold</a> part in helping <a href=“http://www.wowgoldcc.cn”>wow powerleveling</a> you to go <a href=“http://www.wowgoldcc.cn”>mp3 players</a> forward and achieve <a href=“http://www.gamegoods.de/WOW/WorldOfWarcraft-Gold-EU/WOWGoldStore-DE.aspx”>günstig wow gold</a> your goals inb <a href=“http://www.wowgoldcc.cn”>mp3 player</a> your game play.<a href=“http://www.wowgoldcc.cn”>mp3 player</a> Leveling up always <a href=“http://www.wowgoldcc.cn”>mp3</a> heavily depends <a href=“http://www.wowgoldcc.cn”>mp4</a> on a combination of enegry <a href=“http://www.gamegoods.de/WOW/WoW-PowerlevelingService-FR.aspx”>wow power leveling</a> and time in doing <a href=“http://www.wowgoldcc.cn”>mp3 player</a> it. It means the <a href=“http://www.wowgoldcc.cn”>free online games</a> more time you invest, the faster you level up! by fwef
-
All MMORPGs [url=http://www.gamegoods.de]sell wow gold[/url] require your[url=http://wowgoldbiz.com]wow gold[/url] players [url=http://wowgoldbiz.com]wow gold kaufen[/url] characters to [url=http://www.gamegoods.de]buy cheap wow gold[/url] level up to [url=http://wowgoldbiz.com/SiteWeb/gamesale/payment.aspx]wow geld[/url] help them <a href=“http://wowgoldbiz.com/WOW/WorldOfWarcraft-Power-Level/WOWPowerLevel-DE.aspx]wow powerlevel[/url] advance through <a href=”http://www.gamegoods.de]buying wow gold[/url] the game play. [url=http://www.funingame.com]wow[/url] In Vanguard:<a href=“http://www.funingame.com]wow gold[/url] Saga of Heroes, [url=http://www.gamegoods.de/WOW/WorldOfWarcraft-DE.aspx]wow billig gold[/url] leveling up is[url=http://www.funingame.com/SiteWeb/GameDoc/WOWGold4EuropeNews.aspx]wow europe[/url] highly recognized [url=http://www.wowgoldcc.cn]wow power leveling[/url] as a key <a href=”http://www.gamegoods.de/WOW/WorldOfWarcraft-DE.aspx]wowgold[/url] part in helping [url=http://www.wowgoldcc.cn]wow powerleveling[/url] you to go [url=http://www.wowgoldcc.cn]mp3 players[/url] forward and achieve <a href=“http://www.gamegoods.de/WOW/WorldOfWarcraft-Gold-EU/WOWGoldStore-DE.aspx]günstig wow gold[/url] your goals inb <a href=”http://www.wowgoldcc.cn]mp3 player[/url] your game play.[url=http://www.wowgoldcc.cn]mp3 player[/url] Leveling up always [url=http://www.wowgoldcc.cn]mp3[/url] heavily depends [url=http://www.wowgoldcc.cn]mp4[/url] on a combination of enegry [url=http://www.gamegoods.de/WOW/WoW-PowerlevelingService-FR.aspx]wow power leveling[/url] and time in doing <a href="http://www.wowgoldcc.cn]mp3 player[/url] it. It means the [url=http://www.wowgoldcc.cn]free online games[/url] more time you invest, the faster you level up! by fwef