서보(엔진)
'''Servo'''
모질라 재단에서 개발하고 있는 웹 브라우저용 처리 엔진이다.
차세대 프로그래밍 언어인 Rust로 개발되었으며, 파이어폭스의 레이아웃 엔진인 Gecko를 완전히 대체하기 위하여 개발이 시작되었고 현재는 Gecko에 Servo의 핵심 구성요소 일부분을 탑재하여 사용되고 있다[1] . # # Servo를 탑재한 브라우저가 처음에는 Firefox Quantum이라는 별도의 이름으로 공개되었다가, Firefox에 포함되었다.#
Gecko 엔진은 넷스케이프와 인터넷 익스플로러가 싸우던 소위 브라우저 전쟁 시기에 만들어진 것으로, 이후 10년이 넘는 세월 동안 모질라 파이어폭스의 렌더링 엔진으로 쓰이면서 인터넷 익스플로러, 구글 크롬 등의 경쟁자들과 맞서는 데에 많은 역할을 해 왔다. 하지만 구글이나 애플 등의 거대 기술 기업들이 다방면으로 브라우저 시장을 압박함에 따라 비영리 재단인 모질라로서는 상황을 반전시킬 만한 카드가 필요했는데, 그 일환으로 Servo 프로젝트가 시작되게 되었다.
Servo의 가장 중요한 목표는 "멀티코어(Electrolysis)를 온전히 활용하는 병렬적인 웹 브라우저 엔진을 만드는 것"으로, 이미 중저가형 스마트폰에까지 멀티코어 프로세서가 널리 보급된 환경에서 확실하게 브라우저 성능에서 우위를 확보하겠다는 것이다. Gecko를 포함하여 대중적으로 쓰이는 브라우저 엔진들은 모두 멀티 코어가 대중화되기 전에 만들어진 탓에, 이제 와서 멀티 코어를 활용하도록 고쳐보기에는 곤란한 구조로 굳어버린 상태로, 구글 크롬조차 램을 희생해 페이지 별로 프로세스를 따로 쓰는 정도가 한계고 그나마도 실제로 화면에 페이지를 그리는 렌더러는 한 창에 하나뿐이라 여러 CPU 코어를 동시에 한 페이지의 렌더링에 동원하는 건 불가능한 상황이다. 만약 Servo가 성공하여 쿼드면 쿼드, 옥타면 옥타 전부를 한 페이지에 렌더링하는 브라우저를 만들어낼 수 있게 된다면 모질라 재단은 다음 10년 정도를 맘놓고 보낼 수 있을 것이다.
보통 이런 브라우저 엔진들은 수행 성능, 응답성[2] , 규모[3] 등 여러 사정들 때문에 주로 C++로 만들곤 했다.[4] 하지만 C++는 멀티코어를 잘 쓰기 위한 기능은 부족하고, 모태가 된 C언어처럼 메모리 안정성 따위는 쌈 싸먹은 언어라 버그 만들기 엄청나게 쉬운 언어다. C++ 같은 언어에서 메모리 오류는 보통 '''치명적인 보안 버그'''가 될 수 있다는 걸 생각하면 무시하기 힘든 문제다. 이런 탓에, C++로 멀티코어를 지원하는 프로젝트를 진행하는 것은 상대적으로 많은 인력과 시간이 필요하다. 게다가 웹 렌더링 엔진도 매우 크고 복잡한 소프트웨어이라 뛰어난 프로그래머가 '''많이 필요'''한데, 모질라는 기본적으로 비영리 재단이라 다른 브라우저 제조사들처럼 마냥 개발자를 고용하기도 힘들다.
이런 탓에, C++로는 도저히 Servo 프로젝트를 완성하기 힘들다는 판단 하에 C++보다 적은 노력으로, 메모리 오류를 피하기 쉬우면서, 큰 소프트웨어를 만들기 용이하며, 멀티코어 프로그래밍을 하기에 좋은 언어를 물색하게 되었다. 허나 결국 마땅한 언어를 찾을 수가 없었고, 그래서 Rust라는 새로운 프로그래밍 언어 개발 프로젝트를 동시에 진행하게 되었다.
Rust와 Servo 모두 모질라의 연구 프로젝트로서 현재 개발이 진행중이며, Rust는 2015년 5월 15일 1.0을 발표하고 Servo는 2016년 6월 Firefox nightly에 배포를 검토하는 등[출처] 두 프로젝트 모두 활발한 진행을 보여 주고 있다.
그리고 2016년 6월 30일, Servo의 Nightly 버전이 공개되었다! #
2016년 7월 2일, 현재 리눅스와 맥만 지원한다. 17년 4월 20일 윈도우용도 올라와 있다. 삼성전자와 현재 협력하여 개발 중인 상황이니 반드시 나올 것은 분명하다. 삼성전자는 삼성 갤럭시에 탑재될 삼성 인터넷의 새로운 브라우저 엔진으로서 사용할 수 있는 가능성을 믿고 개발에 참여한 것이기 때문이다.
사실 Servo가 언제 Nightly를 벗어날지, 설령 개발이 진척되어 정식 버전이 되더라도 윈도우용 파이어폭스에 정식으로 들어가는 게 언제일 지는 모른다. 파이어폭스의 64bit 베타는 최초의 크롬 베타버전보다 먼저 나왔지만, 윈도우용 정식 64bit 버전은 43에서야 나온 걸 감안하면[5] 이것도 엄청 기다려야 할 수도 있다. 대신, 17년 내내 성능관련 핵심 컴포넌트들을 기존 Gecko 엔진에 이식하는 퀀텀 프로젝트를 통해 파이어폭스의 성능향상을 꾀하고 있다.
17년 8월 55.0.2 버전에서는 프로젝트 퀀텀의 성과가 어느정도 누적된 개선결과에 자신감을 가졌는지, medium.com이라는 소셜 저널리즘[6] 사이트에 자랑 기사를 내놓았다. "극단적인 실험으로 1,691개 탭을 열었다 닫는 실험을 했는데, 기존 버전들은 시간도 엄청 걸리고, 안정성도 문제가 있었는데, 이번 55버전과 차기 56버전의 경우 기존에 새로 여는데(복원) 거의 6분~8분 걸리던게, 15초만에 열렸다고 합니다. (퀀텀 플로우 덕분?)" 출처 (6분 → 15초 기준으로 '''24배''' 향상이다.)
17년 11월 14일에는 퀀텀 프로젝트가 적용된 최초의 정식버전으로 57버전이 배포되었으며, 예상대로 성능에 대한 평이 매우 올라갔다., 파이어폭스 퀀텀 vs 크롬, #, #, #
19년부터는 GPU 가속 WebRender를 적용하고 있다. 공식 위키(영문)의 진행 상황 보고서를 보면 20년 중반 기준 PC 윈도우 10 한정으로 거의 완성되었고, 20년말 84버전에서 드디어 Mac 및 윈도우 한정으로 완성된 상황이나, 리눅스와 (특히) 안드로이드 지원이 극히 제한적이라는 건 뼈아픈 일이다.[7]
2020년 8월 11일 코로나19 판데믹으로 인해 모질라 재단의 재정이 악화되어 250명을 정리해고하는데 대상자가 주로 서보 팀과 보안 팀이라는 소식이 들려와 앞으로의 미래가 불투명하게 되었다. 특히 서보 팀은 이미 파이어폭스에 탑재된 Stylo, WebRender 등 일부분을 제외한 전원이 해고되어 모질라가 사실상 서보 개발에서 손을 뗌으로서 파이어폭스의 미래에 대한 투자를 대폭 축소한 것이 아니냐는 의구심이 커진 상황이다.
2020년 11월 17일 결국 서보 프로젝트의 관리주체가 모질라 재단에서 리눅스 재단으로 이관되었다는 소식이 들려왔다. 리눅스 재단이 웹에 주력하는 곳이 아닌 만큼 프로젝트가 지속적으로 진행될지 의문스러운 상황이다.
Servo는 특히 대용량 웹페이지에서 빛을 발하고 있다. 웹브라우저 버전이나 문서 버전에 따라 다를 수 있지만, 7이 페이지를 열어서 크롬과 직접 측정해보면 로딩 완료 시간이 파이어폭스가 월등히 빠르다는 것을 알 수 있다.
다만, 병렬화는 기본적으로 '''이상적인 상황에서조차 n개의 멀티코어는 n배의 속도를 내지 못하기''' 때문에 아무리 최적화를 해도 무진장 빨라지기는 어렵다.
1. 개요
모질라 재단에서 개발하고 있는 웹 브라우저용 처리 엔진이다.
차세대 프로그래밍 언어인 Rust로 개발되었으며, 파이어폭스의 레이아웃 엔진인 Gecko를 완전히 대체하기 위하여 개발이 시작되었고 현재는 Gecko에 Servo의 핵심 구성요소 일부분을 탑재하여 사용되고 있다[1] . # # Servo를 탑재한 브라우저가 처음에는 Firefox Quantum이라는 별도의 이름으로 공개되었다가, Firefox에 포함되었다.#
2. 개발 배경
Gecko 엔진은 넷스케이프와 인터넷 익스플로러가 싸우던 소위 브라우저 전쟁 시기에 만들어진 것으로, 이후 10년이 넘는 세월 동안 모질라 파이어폭스의 렌더링 엔진으로 쓰이면서 인터넷 익스플로러, 구글 크롬 등의 경쟁자들과 맞서는 데에 많은 역할을 해 왔다. 하지만 구글이나 애플 등의 거대 기술 기업들이 다방면으로 브라우저 시장을 압박함에 따라 비영리 재단인 모질라로서는 상황을 반전시킬 만한 카드가 필요했는데, 그 일환으로 Servo 프로젝트가 시작되게 되었다.
Servo의 가장 중요한 목표는 "멀티코어(Electrolysis)를 온전히 활용하는 병렬적인 웹 브라우저 엔진을 만드는 것"으로, 이미 중저가형 스마트폰에까지 멀티코어 프로세서가 널리 보급된 환경에서 확실하게 브라우저 성능에서 우위를 확보하겠다는 것이다. Gecko를 포함하여 대중적으로 쓰이는 브라우저 엔진들은 모두 멀티 코어가 대중화되기 전에 만들어진 탓에, 이제 와서 멀티 코어를 활용하도록 고쳐보기에는 곤란한 구조로 굳어버린 상태로, 구글 크롬조차 램을 희생해 페이지 별로 프로세스를 따로 쓰는 정도가 한계고 그나마도 실제로 화면에 페이지를 그리는 렌더러는 한 창에 하나뿐이라 여러 CPU 코어를 동시에 한 페이지의 렌더링에 동원하는 건 불가능한 상황이다. 만약 Servo가 성공하여 쿼드면 쿼드, 옥타면 옥타 전부를 한 페이지에 렌더링하는 브라우저를 만들어낼 수 있게 된다면 모질라 재단은 다음 10년 정도를 맘놓고 보낼 수 있을 것이다.
보통 이런 브라우저 엔진들은 수행 성능, 응답성[2] , 규모[3] 등 여러 사정들 때문에 주로 C++로 만들곤 했다.[4] 하지만 C++는 멀티코어를 잘 쓰기 위한 기능은 부족하고, 모태가 된 C언어처럼 메모리 안정성 따위는 쌈 싸먹은 언어라 버그 만들기 엄청나게 쉬운 언어다. C++ 같은 언어에서 메모리 오류는 보통 '''치명적인 보안 버그'''가 될 수 있다는 걸 생각하면 무시하기 힘든 문제다. 이런 탓에, C++로 멀티코어를 지원하는 프로젝트를 진행하는 것은 상대적으로 많은 인력과 시간이 필요하다. 게다가 웹 렌더링 엔진도 매우 크고 복잡한 소프트웨어이라 뛰어난 프로그래머가 '''많이 필요'''한데, 모질라는 기본적으로 비영리 재단이라 다른 브라우저 제조사들처럼 마냥 개발자를 고용하기도 힘들다.
이런 탓에, C++로는 도저히 Servo 프로젝트를 완성하기 힘들다는 판단 하에 C++보다 적은 노력으로, 메모리 오류를 피하기 쉬우면서, 큰 소프트웨어를 만들기 용이하며, 멀티코어 프로그래밍을 하기에 좋은 언어를 물색하게 되었다. 허나 결국 마땅한 언어를 찾을 수가 없었고, 그래서 Rust라는 새로운 프로그래밍 언어 개발 프로젝트를 동시에 진행하게 되었다.
3. 개발 현황
Rust와 Servo 모두 모질라의 연구 프로젝트로서 현재 개발이 진행중이며, Rust는 2015년 5월 15일 1.0을 발표하고 Servo는 2016년 6월 Firefox nightly에 배포를 검토하는 등[출처] 두 프로젝트 모두 활발한 진행을 보여 주고 있다.
그리고 2016년 6월 30일, Servo의 Nightly 버전이 공개되었다! #
2016년 7월 2일, 현재 리눅스와 맥만 지원한다. 17년 4월 20일 윈도우용도 올라와 있다. 삼성전자와 현재 협력하여 개발 중인 상황이니 반드시 나올 것은 분명하다. 삼성전자는 삼성 갤럭시에 탑재될 삼성 인터넷의 새로운 브라우저 엔진으로서 사용할 수 있는 가능성을 믿고 개발에 참여한 것이기 때문이다.
사실 Servo가 언제 Nightly를 벗어날지, 설령 개발이 진척되어 정식 버전이 되더라도 윈도우용 파이어폭스에 정식으로 들어가는 게 언제일 지는 모른다. 파이어폭스의 64bit 베타는 최초의 크롬 베타버전보다 먼저 나왔지만, 윈도우용 정식 64bit 버전은 43에서야 나온 걸 감안하면[5] 이것도 엄청 기다려야 할 수도 있다. 대신, 17년 내내 성능관련 핵심 컴포넌트들을 기존 Gecko 엔진에 이식하는 퀀텀 프로젝트를 통해 파이어폭스의 성능향상을 꾀하고 있다.
17년 8월 55.0.2 버전에서는 프로젝트 퀀텀의 성과가 어느정도 누적된 개선결과에 자신감을 가졌는지, medium.com이라는 소셜 저널리즘[6] 사이트에 자랑 기사를 내놓았다. "극단적인 실험으로 1,691개 탭을 열었다 닫는 실험을 했는데, 기존 버전들은 시간도 엄청 걸리고, 안정성도 문제가 있었는데, 이번 55버전과 차기 56버전의 경우 기존에 새로 여는데(복원) 거의 6분~8분 걸리던게, 15초만에 열렸다고 합니다. (퀀텀 플로우 덕분?)" 출처 (6분 → 15초 기준으로 '''24배''' 향상이다.)
17년 11월 14일에는 퀀텀 프로젝트가 적용된 최초의 정식버전으로 57버전이 배포되었으며, 예상대로 성능에 대한 평이 매우 올라갔다., 파이어폭스 퀀텀 vs 크롬, #, #, #
19년부터는 GPU 가속 WebRender를 적용하고 있다. 공식 위키(영문)의 진행 상황 보고서를 보면 20년 중반 기준 PC 윈도우 10 한정으로 거의 완성되었고, 20년말 84버전에서 드디어 Mac 및 윈도우 한정으로 완성된 상황이나, 리눅스와 (특히) 안드로이드 지원이 극히 제한적이라는 건 뼈아픈 일이다.[7]
2020년 8월 11일 코로나19 판데믹으로 인해 모질라 재단의 재정이 악화되어 250명을 정리해고하는데 대상자가 주로 서보 팀과 보안 팀이라는 소식이 들려와 앞으로의 미래가 불투명하게 되었다. 특히 서보 팀은 이미 파이어폭스에 탑재된 Stylo, WebRender 등 일부분을 제외한 전원이 해고되어 모질라가 사실상 서보 개발에서 손을 뗌으로서 파이어폭스의 미래에 대한 투자를 대폭 축소한 것이 아니냐는 의구심이 커진 상황이다.
2020년 11월 17일 결국 서보 프로젝트의 관리주체가 모질라 재단에서 리눅스 재단으로 이관되었다는 소식이 들려왔다. 리눅스 재단이 웹에 주력하는 곳이 아닌 만큼 프로젝트가 지속적으로 진행될지 의문스러운 상황이다.
4. 여담
Servo는 특히 대용량 웹페이지에서 빛을 발하고 있다. 웹브라우저 버전이나 문서 버전에 따라 다를 수 있지만, 7이 페이지를 열어서 크롬과 직접 측정해보면 로딩 완료 시간이 파이어폭스가 월등히 빠르다는 것을 알 수 있다.
다만, 병렬화는 기본적으로 '''이상적인 상황에서조차 n개의 멀티코어는 n배의 속도를 내지 못하기''' 때문에 아무리 최적화를 해도 무진장 빨라지기는 어렵다.
[1] 웹 브라우저 엔진은 OS만큼 복잡한 소프트웨어이기 때문에 한번에 새로운 엔진을 만들어서 기존 엔진을 대체하는 것은 현실적으로 어렵다. 대신 Servo의 모듈을 하나씩 Gecko에 심어서 호환성을 최대한 유지하면서 Gecko 코드를 조금씩 줄여나가다가 결국 100% Servo로 대체하는 것이 다. 현재는 Servo의 CSS 파서와 WebRender라고 불리는 GPU 기반의 렌더링 엔진이 파이어폭스에 심어져 있다.[2] HTML5, WebGL 등의 기술이 보급되면서 페이지를 한 번 그리면 끝이 아니라 실시간으로 JavaScript 코드를 돌리면서 페이지를 갱신해야 한다. 브라우저에서 초당 60프레임이 뽑히네 마네 하는 세상인지라...[3] W3C 표준이 워낙 방대하고 또 계속해서 새로운 기술이 갱신되는 탓에 C언어로는 도저히 복잡도를 감당할 수 없다. 브라우저 엔진 만드는 게 OS 커널보다 복잡해진 상황이 되었다.[4] 넷스케이프가 옛날에 Java로 브라우저를 만들려고 시도했었으나 망했다.[출처] Servo is planning to make its first alpha releases available in June.https://blog.servo.org/2016/03/14/twis-55/[5] 나이트리 채널을 포함한 최초의 64bit 파이어폭스는 구글 크롬 최초 배포버전보다도 앞서고, 리눅스용은 진작에 정식으로 나오고 있다. 영문 위키에 따르면 2012년 경엔 윈도우용 64bit 개발 자체를 포기하려던 적도 있었다. "In late 2012, Mozilla announced 64-bit Windows builds would be stopped but later reversed the decision." 자세한건 영문 위키의 해당 문장에 딸린 각주 참조.[6] 일종의 블로그 서비스로 보면 될 듯하다.[7] 최초 티저 영상 공개가 2016년이라는 점을 생각하면 e10s 진행 당시가 생각날 정도로 느린 진행이다. Microsoft Edge가 합류해서 개발에 가속을 받은 크로뮴 프로젝트에 어떻게 대항할지가 앞으로의 관건이 될 듯