스크립트 로딩시 Brotli를 사용하면 어떻겠냐는 조언을 받아 적용해보았습니다. 스스로 찾아냈다면 더 좋았을텐데 그래도 늦게나마 적용할 수 있어 다행입니다.
전송 속도와 대역폭 이용을 개선하기 위한 기술입니다. 서버와 브라우저간에 압축된 파일을 전송함으로써 브라우저 로딩을 빠르게 도와줍니다. (압축을 푸는 것이 네트워크 요청보다 더 빠르므로)
서버는 브라우저에게 보낼 Response를 압축 하기 때문에 네트워크 비용도 줄일 수 있습니다.
이러한 압축 알고리즘으로 가장 널리 알려져 있는 것이 gzip입니다. 최대 70%까지 사이즈를 줄여주는 가장 보편적인 압축 알고리즘 입니다. 파일의 중복코드나 띄어쓰기의 양을 줄여서 동작한다고 하는군요.
Brotli는 구글이 2013년에 공개한 압축 알고리즘으로 gzip에 비해 최대 15-20% 더 적은 용량으로 압축이 가능하다고 합니다. 압축 알고리즘까지 이해할 수는 없을 테니 그렇구나 하고 넘어갔습니다. Brotli는 ie에서 지원하지 않으므로 ie에서는 gzip을 사용해야 합니다.
AWS CloudFront에서 기능을 지원하고 있기에 사용하실 수 있습니다.
브라우저가 두 형식을 모두 지원하는 경우, CloudFront는 Brotli를 사용합니다.자사 js 파일을 가지고 비교해 보았습니다. 미세하지만 Brotli가 더 압축률이 높았습니다. 파일마다 압축률이 다르긴 하지만 이 외에 다른 js나 cs 파일 모두 Brotli가 압축률이 높았습니다. 드라마틱한 변화가 있는건 아니지만 분명 비용개선에 도움이 될 것입니다. 다음달 비용을 확인해보면 얼마나 줄어들었는지 알 수 있겠네요.
모든 파일에 적용되는건 아니고 html, xml, js, css, json 파일 등을 압축시킬 수 있습니다 (추가로 확인중). jpg나 png 파일도 용량 줄일 수 있겠다고 좋아했는데 알고보니 jpg나 png는 이미 압축된 파일이라 지원이 안되더군요. 이렇게 또 알아갑니다..
https://blog.hanlee.io/2021/brotli
https://yceffort.kr/2021/01/brotli-better-html-compression
https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html