개발/TIL

단 한 줄로 spring boot 애플리케이션 성능 올리기 - gzip

ebang 2025. 2. 21. 22:40

GZIP (Content-Encoding: gzip)

gzip은 웹에서 데이터 전송 시 사용되는 압축 방식으로, 응답 데이터를 압축해 전송함으로써 전송 속도를 높이고 대역폭을 절약한다.

텍스트 데이터 혹은 json 과 같은 웹 응답 데이터를 압축하면 성능을 올리는데 도움이 된다. 

주로 HTTP 응답에서 사용되며, Content-Encoding 헤더에 명시된다. 

 

1.  요청 헤더 (클라이언트 → 서버)

GET /index.html HTTP/1.1 Host: example.com Accept-Encoding: gzip, deflate
  • gzip: GZIP 압축을 지원함
  • deflate: DEFLATE 압축을 지원함.

 

2. 응답 헤더 (서버 → 클라이언트)

HTTP/1.1 200 OK Content-Encoding: gzip Content-Type: text/html; charset=UTF-8
  • Content-Encoding: gzip → 서버가 콘텐츠를 GZIP 방식으로 압축했음을 의미함. 

 

동작 원리

  1. 클라이언트가 Accept-Encoding: gzip을 요청 헤더에 포함.
  2. 서버가 이를 인식하고, 콘텐츠를 GZIP 방식으로 압축해 전송.
  3. 클라이언트는 해당 압축을 해제하여 원래의 콘텐츠를 표시.

 

 

gzip 이 효과적인 경우

  • 텍스트 기반 파일: HTML, CSS, JavaScript, JSON, XML, SVG 등
  • 웹 API 응답 데이터 (특히 JSON, XML)

 

spring boot 애플리케이션에 적용하기

application.yaml 파일에 다음과 같은 설정을 통해서 gzip 을 이용해서 응답할 수 있다. 

 

# GZIP Compression 활성화
server.compression.enabled=true

# 최소 크기(바이트 단위). 이보다 작은 응답은 압축되지 않음
server.compression.min-response-size=1024

# 압축할 MIME 유형 (Media Type)
server.compression.mime-types=text/html,text/xml,text/plain,text/css,application/javascript,application/json

 

 

실제 성능 향상은 (조만간 측정 후 올리겠다....)