얼마 전 MS 엣지 브라우저에 Brotli가 도입되어 20% 이상 빨라질 거라는 엄청난 기사가 떴다.


아니, 대체 저 기술은 얼마나 엄청나기에 브라우저가 20%나 빨라지는가?

그보다 근본적으로 그렇게나 더 빨라질만한 여지가 있기는 한가?


결론부터 말하자면, 내용을 제대로 이해하지 못한 글쓴이가 원문을 과장해서 오독한 것이다.



0. 들어가기 전에…


디스크의 용량이 기하급수적으로 늘어나는 현재에도 데이터 압축은 무척 중요한 기술이다.

서버의 네트워크 전송 부하를 줄이기 위해서 조금이라도 더 작은 파일을 만들어야 하기 때문이다.


이를 위해 모질라는 mozjpeg이라는 프로젝트를 통해 jpeg 파일의 크기를 줄이고 있기도 하다.



1. Zopfli


Brotli를 얘기하려면 그 전에 Zopfli를 먼저 얘기해야 한다.


7-zip, rar 등 다양한 압축 포맷이 사용되고 있지만, 여전히 압축 세상의 거목은 zip이다.


Windows를 포함한 각종 OS에 기본으로 장착되어 있으며, 안드로이드 apk나 오피스 문서 포맷도 zip[각주:1]이다.

또한, HTTP 전송시에도 이 기술을 사용해서 전송 부하를 줄이고 있다.


하지만, zip의 한계는 신형 포맷들에 비해 압축률이 떨어진다는 점이다.


Zopfli는 바로 이 zip(deflate)의 압축률을 향상시키는 알고리즘이다.

비록 속도가 좀 느리기는 하지만, 여전히 zip 포맷은 살아있으며, 향상될 여지가 있다는 것을 보여준다.


Zopfli라는 이름은 스위스 등에서 먹는 빵인 Zopf에서 왔다고 한다.


스위스, 오스트리아 및 바바리아 지방의 빵 Zopf



2. Brotli


Zopfli는 기존 zip과의 호환성을 유지하기 위해 성능을 희생한 알고리즘이다.

따라서 HTTP 압축과 같이 실시간성이 보장되어야 하는 환경에서는 적용하기 힘들다.


이 문제를 해결하기 위해 새롭게 개발된 알고리즘이 Brotli다.


이 방식은 기존에 사용되던 압축 포맷들과는 전혀 호환성이 없다.

기술적으로는 deflate와 꽤 연관이 있기는 하지만[각주:2], 별도의 포맷이다.


이 방식은 기존 deflate에 비해 더 빠르면서도 압축률이 높은 것이 특징이다.

기 정의된 사전을 활용하기 때문에 텍스트 문서의 경우 20%까지도 압축률이 높기도 한다.


즉, HTTP 압축과 같이 실시간성이 보장되어야 하는 환경에서 deflate를 대체할만한 능력이 있는 것이다.

이러한 특징이 있기 때문에 이미 크롬[각주:3], 파이어폭스를 비롯해서 오페라도 지원하고 있었다.


그리고, 얼마 전 MS에서도 엣지 브라우저에서 도입하겠다고 발표한 것이다.


참고로, 이 이름 역시 스위스에서 먹는 빵인 Spanisch Brötli에서 왔다.


스위스 빵 Spanisch Brötli


3. 결론


HTTP 압축시 기존 deflate/gzip에 비해 압축률이 향상되어 전송 시간이 줄어드는 것은 사실이다.

하지만, 최대 20%까지 향상될 수도 있을 뿐 그 이상의 효율을 기대할 수는 없다.

또한, 전송시간만 줄어드는 것일 뿐 그 외의 분야에는 영향이 없다는 점도 생각해야 한다.



  1. 정확히는 zip은 압축 컨테이너이고, 다양한 압축 방식을 사용하고 있는데, 지금 사용되는 건 사실상 deflate 하나 뿐임. 이하 zip은 deflate를 의미함 [본문으로]
  2. deflate와 유사하게 LZ77과 허프만 코딩을 혼합해서 사용함 [본문으로]
  3. 물론 크롬은 이러한 특징때문에 지원했다기 보다는 홍보하기 위해서 먼저 구현했겠지… [본문으로]
신고

+ Recent posts