들어가며
최근 대학교 동문 개발자들끼리 네트워킹을 한 적이 있었다. 다양한 포지션의 개발자분들이 모여서 이런저런 이야기를 나누었는 데, 가장 흥미로웠던 주제는 아이폰에서의 safari 및 chrome이 프론트엔드 개발자의 골칫덩어리라는 것이다. 결론부터 말하면 아이폰에서는 우리가 흔하게 아는 chromium이라는 웹 브라우저 엔진이 아니라 WebKit이라는 엔진을 통해서 웹사이트를 렌더링 하기 때문에 자질구레한 에러들이 많이 발생하게 된다.
웹 서핑을 하는 도중 문득 위 이야기가 생각이 났다. 대체 웹 브라우저에 어떠한 역사가 있었기에 그러한 일이 일어나는 것일까? 간단하게 나마 한 번 살펴보자고 하였는데, 생각보다 방대한 양에 조금 놀랐다. 관련해서 흥미로운 것들을 많이 확인할 수 있었는데, 내가 정리했던 내용들을 공유할 수 있으면 좋을 것 같다고 생각해 블로그로 포스팅하게 되었다.
아래의 레퍼런스는 인터넷 브라우저의 역사에 대해서 개괄적으로 설명되어있는 게시글이다. 관심이 있다면 한 번 읽어보면 좋을 것 같다. 아래의 내용을 기반으로 조금 더 리서치를 하여 포스팅을 하였고, 브라우저의 엔진에 관련해서까지 서술한 포스팅이다.
본론
1955년생 전설의 IT 3인방
먼저, 컴퓨터 세상의 전설의 1955년생 세 명이 있다. 마이크로소프트의 빌 게이츠, 애플의 스티브 잡스, 구글의 슈릭 에미트가 가장 유명하다. 몇몇 사람들은 WWW(World Wide Web)의 창시자인 팀 버너스 리를 뽑기도 한다. 이쯤 되면 1955년생은 뭔가 있나보다 하는 생각이 든다.
팀 버너스 리는 1989년 스위스 제네바에 위치한 유럽 입자 물리 연구실(CERN)에서 근무하던 도중 한 가지 문제를 해결하려고 했다. 그것은 바로 논문 관련된 정보를 레퍼런스 하기가 너무 힘들다는 점이다. 특정 논문을 참조에 적어둘 때, 오늘날과는 다르게 굉장히 힘들게 하나하나씩 논문을 직접 찾았어야 하는 시대였다는 것이다.
이러한 문제점을 해결하기 위해서 WWW라는 것을 개발한다. 최초의 목적은 논문에서 다른 논문을 참조할 때, 하이퍼링크를 통해서 다른 논문으로 바로 연결될 수 있게 하기 위함이였다. 이러한 개념이 발전되어 웹이라고 하는 개념이 생기기 시작했다. 최초의 웹 화면은 아래와 같은 구조로 이루어진다.
물리학 연구실에서 나왔던 작품 답게 초창기에는 HTML(하이퍼텍스트 마크업 언어), HTTP(하이퍼텍스트 전송 프로토콜) 그리고 URL(통합 자원 식별자) 등을 개발하였다. 이를 통해 논문을 작성하게 되면서 논문의 레퍼런스를 손쉽게 달 수 있게 됐다. 위와 같은 모습이 초창기의 WWW였는데, 이러한 기술을 팀 버너스 리는 이 웹과 자신의 모든 IT 기술들을 특허도 내지 않고 그냥 무료로 풀어버린다. 이를 시작으로 위와 같은 정적 콘텐츠인 웹을 손쉽게 확인할 수 있게 되는 웹 브라우저가 탄생하게 되었고, 웹 브라우저의 전쟁이 시작되게 되었다.
사람들은 모두 이 신기술에 열광되었고, 웹 브라우저가 빠르게 생겨나기 시작하였다. 1990년대 그 당시에는 Netscape Navigator와 Internet Explorer가 가장 유명한 웹 브라우저로써 대부분의 점유율을 꽉 잡고 있었고, 두 브라우저 사이에 치열한 전쟁이 일어나기 시작했다.
브라우저 전쟁 : Netscape Navigator vs Internet Explorer(IE)
1990년대 중반부터 2000년대 초반까지, Netscape Navigator와 Microsoft Internet Explorer(IE)는 웹 브라우저의 점유율을 놓고서 매섭게 싸우고 있는 시대였다. 이 기간은 브라우저 전쟁이라고 개발자들 사이에서 불리며, 인터넷의 발전과 웹 기술의 진화를 가속화한 시기였다. 사진을 보면 알겠지만 이 당시에는 IE가 Netscape Navigator를 쓰러뜨렸다.
맨 처음에는 1994년 Netscape Communications에서 Netscape Navigator(이하 넷스케이프)를 출시하여 웹 브라우저 시장을 완전히 점령하기 시작했다. 이 때 당시 컴퓨터의 보급이 빠르게 일어나고 있었는 데, 이 시기와 맞물려 많은 사용자들을 모으고 있었다. 1995년까지 약 1년 동안 80%의 점유율을 확보하여 거의 독점적인 지위를 확보하게 되었다.
하지만, 인터넷의 잠재력을 깨달은 Microsoft는 1995년, Windows 95의 출시와 함께 Internet Explorer 1.0을 선보였다. 우리가 아는 그 윈도우 운영체제의 시작과 함께 넷스케이프의 점유율을 빼앗기 위해 강력하게 정책을 펼쳤다. 넷스케이프가 유료로 브라우저를 판매하던 것과 달리, IE는 무료로 제공되었으며 윈도우즈에 통합되어 같이 제공하였다. 역시 플랫폼 장사가 무섭다는 것은 역사적으로도 알 수 있다.
운영 체제 레벨에서 IE를 쓰도록 하였으니 넷스케이프가 버틸 수 있을까. 넷스케이프에서도 이를 맞 받아치기 위해서 다양한 방법을 사용했다. 넷스케이프 네비게이터를 무료 배포로 전환하고 브라우저에 다양한 기능을 넣었지만 결국 위와 같은 마이크로소프트의 판매 전략을 이기지 못하고 처참하게 쓰러지게 되었다.
결국 1997년 이후, IE의 시장 점유율은 급격히 상승하여 1998년에는 50%를 넘어가고, 2000년대 초반에는 90% 이상의 점유율을 확보하게 된다. 이로 인해 2000년대 초반은 IE의 황금기를 누리게 된다. 하지만... 넷스케이프가 죽기 직전 최후의 한 발을 날리게 된다.
브라우저 전쟁의 끝 그리고 넷스케이프의 최후의 한 발
IE의 막강한 점유율을 더 이상 이길 수 없다는 것을 판단하고, Netscape는 1998년, 브라우저의 소스 코드를 공개하기로 결정하게 된다. 이렇게 웹 브라우저의 오픈 소스가 풀리게 되었고, Mozilla 재단이 이를 이어받아. 웹 브라주어를 만드는 Mozilla 프로젝트가 시작하게 되었다.
Mozilla 프로젝트를 통해 개발된 브라우저 중 하나가 Mozilla Firefox이다. 2002년에는 Phoenix라는 이름으로 개발하기 시작하였다가 Firebird를 거쳐 최종적으로 2004년 Firefox라는 이름으로 1.0 버전이 출시되었다. Firefox는 오래되고 느린 IE와는 다르게 편리함과 광범위한 기능 덕분에 빠르게 사용자를 확보했다.
최근 닫은 탭 열기, 세션 복구, 피싱 필터, 오디오 및 비디오에 대한 기본 제공 지원 등 지금 생각보해면 당연한 편리함에 해당하는 혁신적인 기술들이지만, 그 당시에는 없었다. 마이크로소프트는 늦었다고 생각할 때가 빠르다고 생각했겠지만, 다양한 혁신적인 기능들을 추가하지만 너무 늦었다. 점유율은 이미 많이 빼앗겼고, Apple에서는 Safari라는 웹 브라우저가 태동하기 시작했다.
결정적으로 구글에서 나온 google chrome으로 인해 IE는 강하게 타격을 입었다. 브라우저 엔진 중에서 가장 무겁고 느린 웹 브라우저가 되었으며 이를 풍자하는 글도 많이 보였다. 예전 그림이지만 인터넷 브라우저에 대해서 풍자한 그림으로 아래와 같은 그림도 있다.
결국 인터넷 익스플로러는 역사의 뒤안길로 사라지게 된다. 대한민국의 한 개발자분이 IE의 장례식을 치르는 짤을 올린 것이 전 세계적으로 유명해지기도 했다. 결국 마이크로소프트는 2022년 6월 15일에 인터넷 익스플로러를 특정 운영 체제에 대한 지원을 종료했다. 이 발표는 많은 개발자들을 놀라게 했다. 뒤쳐지는 웹 브라우저가 쓰이지 않는 것은 당연한 IT 세계의 이치이지만, 그래도 한 때 엄청난 인기를 풍미했던 인터넷 익스플로러가 과거의 영광과 함께 사라졌다는 것이다.
2022년 6월 15일을 기점으로 인터넷 익스플로러는 지원이 중단되었고 마이크로소프트의 메인 웹 브라우저는 Edge로 넘어가기 시작했다. 인터넷 익스플로러 지원 중단을 가지고 대한민국의 한 개발자가 관련된 사진으로 익스플로러의 장례식을 치러주는 사진을 인터넷에 올려 순식간에 전 세계로 퍼져 이 짤 또한 개발자들의 밈이 되고 말았다.
묘비에 쓰인 내용은 그는 다른 브라우저를 다운로드하기에 좋은 브라우저였습니다...
아무튼 이렇게 IE의 역사는 끝나고, 현재는 다양한 웹 브라우저가 공존하고 있다. 그 중에서 최고는 역시 chrome이겠지만, 사용자들의 선호에 따라 다양한 웹 브라우저를 사용하고 있다.
브라우저의 대항해시대 : 원피스를 찾아서
앞서 설명하지는 않았지만, Blink 엔진을 사용하는 Opera까지 하여 다양한 웹 브라우저가 존재한다. 이제는 각각의 웹 브라우저가 사용하는 엔진에 대해서 살펴보자.
웹 브라우저는 우리가 인터넷을 통해 웹 페이지를 볼 수 있게 해주는 소프트웨어이다. 이 브라우저 내부에는 렌더링 엔진이라는 것이 탑재되어 있다. HTML 및 CSS 그리고 Javascript 등을 렌더링 해서 시각적인 요소로 보여줄 수 있게 해주는 것이다.
즉, 우리가 개발하는 HTML+CSS+Javascript는 단순한 코드, 어떻게 보면 그저 데이터 쪼가리이다. 이를 해석할 수 있는 것들이 렌더링 엔진 및 자바스크립트 엔진이 될텐데, 그에 대해서 자세히 살펴보자.
렌더링 엔진의 역사
위 사진은 순서대로 gecko, chromium, webkit이다. 먼저 렌더링 엔진의 시초인 webkit은 2001년 Apple에서 KHTML과 KJS 엔진을 기반으로 개발하기 시작한 것이다. 중간에 나온 크롬이 사용하는 chromium은 2013년 google이 Webkit을 포크하여 개발하기 시작한 것이다. 따라서 크로미움 또한 webkit을 시초로 두고 있지만 2013년을 기점으로 하여 다양한 기능을 지원하게 바뀌었다. 그리고 자바스크립트 엔진으로는 V8 엔진을 지원하여 높은 Javascript 성능을 제공하고 있다. 이러한 크로미움이 사용하고 있는 렌더링 엔진이 Blink가 된다.
Webkit은 꾸준하게 Apple에서 개발되어왔다. Safari나 IOS용 모든 브라우저는 애플의 정책상 webkit을 써야 한다. 맨 처음에 이야기 나왔던 프론트엔드 개발자들이 IOS 환경에서 속을 썩이는 이유가 바로 이 webkit 렌더링 엔진의 특수성 때문에 몇몇 페이지가 제대로 렌더링이 안 될 수 있다는 점이다. 심지어 아이폰에서 실행하는 safari가 아니라 chrome도 역시 크로미움처럼 보이겠지만 사실은 webkit을 써서 렌더링을 진행한다. 이러한 webkit의 장점은 성능 최적화 및 모바일 환경에 강점을 두었다는 점이다.
Gecko는 Apple의 webkit 기반을 시초로 둔 것과 달리 Netscape가 개발을 시작한 후 소스를 공유한 것을 Mozilla 재단에서 이어받음으로써, 오픈 소스 프로젝트로 개발되고 있다. 강력한 웹 표준 지원과 보안 기능을 특징으로 하고 있다.
렌더링 엔진? 자바스크립트 엔진? 어지러워요..
간단하게 표로 나타내면 위와 같다. 우리가 아는 크롬과 사파리 파이어폭스에서 쓰는 렌더링 엔진과 자바스크립트 엔진을 포함하여 표로 나타내면 각각 위와 같은 요소를 써서 구현되어 있다. 여기서 계속 말하는 chromium은 blink+v8을 의미한다.
이 외에도 많은 웹 브라우저가 있지만 현대의 웹 브라우저는 대강 위와 같은 구조로 이루어져 있으며, 많은 웹 브라우저가 위에서 봤다싶이 한 다양한 오픈소스를 사용하는 경우가 있다.
최근에 Ark라는 재미있는 웹 브라우저를 봤는데, 어떤 엔진을 탑재했는 지 확인하여 보니 Blink + V8 엔진을 사용하고 있고, IOS는 WebKit으로 동작하도록 구현되어 있는 것을 확인할 수 있었다. 이는 F&A 탭에서 크로미움을 사용했다는 것을 보면 확인할 수 있는 부분이다.
브라우저의 렌더링 부분에 대해서 좀 더 살펴보면 좋을 듯 싶으나 이번 포스팅에서는 이렇게 브라우저의 역사를 다루는 것으로 포스팅을 마무리한다.
마치며
팀 버너스 리는 월드 와이드 웹 컨소시엄(W3C)의 소장으로 재직 중이며, 그는 WWW라는 기술을 그대로 무료로 풀어버린 점을 생각하면 굉장히 오픈소스에 대해 적극적인 마인드를 가지고 있는 편인 것 같다. 실제로 나중에는 거대 IT 기업들이 인터넷 정보를 독점하여 막대한 이익을 취하지만 책임은 제대로 지지 않으며, IT 기술의 발전에 이바지하는 모습을 보며 많은 실망을 하였다고 한다.
실리콘밸리 IT 기업들이 개인정보를 통해서 보다 막대한 부를 축적하면서 정작 제대로 된 책임을 지지 않는 모습에 대해서 크게 비판하곤 한다.
그리고 브라우저 전쟁에서 IE가 이긴 것을 보니까 역시 소프트웨어 기술의 플랫폼이 되는 기술이 중요한 것 같다. 아무리 웹 브라우저를 키워봤자 OS단에서 제한해 버리면 뭔가를 할 수 없듯이, 지금은 AI 기술이 아무리 엄청나다고 하더라도 엔비디아의 발전이 없으면 뭔가 하기 힘든 것처럼 토대가 중요한 것 같다.
참고
- [maybe.works] 브라우저 전쟁 : 브라우저의 역사와 크로미움의 승리 :https://maybe.works/blogs/browser-wars-the-history-of-browsers-and-chromium-victory
- [chromium] blink : https://www.chromium.org/blink/
- [ark] Q&A : https://arc.net/faq
감사합니다.
'Language > Javascript' 카테고리의 다른 글
자바스크립트의 기묘한 작동 원리 (0) | 2023.12.29 |
---|