Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tomcat HTTP gzip 압축 적용 #986

Merged
merged 1 commit into from
Dec 26, 2024
Merged

Conversation

zeus6768
Copy link
Contributor

@zeus6768 zeus6768 commented Dec 23, 2024

⚡️ 관련 이슈

#850

📍주요 변경 사항

아래의 설정을 추가해요.

# application-was.yml
server:
  compression:
    enabled: true

mime-types, min-response-size 설정은 기본값을 사용하기 위해 커스텀하지 않았어요.

기본값은 다음과 같아요.

  • mime-types: "text/html", "text/xml", "text/plain", "text/css", "text/javascript", "application/javascript", "application/json", "application/xml"
  • min-response-size: 2KB

개선점

로컬에서 운영 서버와 동일한 템플릿 하나를 생성하고 조회해봤어요.

Screenshot 2024-12-23 at 9 44 37 AM

그리고 조회하면 다음과 같이 얼마나 압축됐는지 확인할 수 있어요.

Screenshot 2024-12-23 at 9 46 28 AM

HTTP Body 용량을 67%나 줄였어요~!

계산식: $\left( \frac{9.93 - 3.26}{9.93} \right) \times 100 \approx 67.17%$

🎸기타

본 설정을 적용하기 위해 application-was.yml 파일을 만들었어요.

명명 근거는 다음과 같아요.

  • http compression은 WAS의 설정값이고, 우리가 tomcat을 netty, jetty 등 다른 서블릿 컨테이너로 변경하더라도 동일하게 적용되는 설정이에요.
  • 압축뿐 아니라 SSL, 스레드, 캐시, 세션 등의 설정도 할 수 있어요.
  • 모두 prefix가 server.으로 시작하고 모두 WAS의 기능이므로 확장 가능해요.

🍗 PR 첫 리뷰 마감 기한

12/24 22:00

@zeus6768 zeus6768 added BE 백엔드 infrastructure 인프라 작업 labels Dec 23, 2024
@zeus6768 zeus6768 added this to the 7차 스프린트 💭 milestone Dec 23, 2024
@zeus6768 zeus6768 self-assigned this Dec 23, 2024
Copy link
Contributor

@HoeSeong123 HoeSeong123 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다~~
그런데 저 용량은 어디서 어떻게 확인하는건가요??

@zeus6768
Copy link
Contributor Author

zeus6768 commented Dec 23, 2024

고생하셨습니다~~ 그런데 저 용량은 어디서 어떻게 확인하는건가요??

저는 이렇게 확인했어요~

Screenshot 2024-12-23 at 9 34 03 AM Screenshot 2024-12-23 at 1 18 01 PM Screenshot 2024-12-23 at 1 16 08 PM

@HoeSeong123
Copy link
Contributor

엇 아뇨 그 포스트맨에서 HTTP Body 용량 확인하는거 얘기했던 거긴 한데 찾았습니다!!

Copy link
Contributor

@kyum-q kyum-q left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제우스 체거입니다~!!!

Copy link
Contributor

@jminkkk jminkkk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오 제우스 멋집니다 👍
HTTP 압축에 대해 공부해보다가 흥미로운 이슈를 발견했어요!
다들 참고하면 좋을 것 같아서 첨부해요! ㅎㅎ

SpringBoot Project Github - Enable HTTP Response Compression by Default

주요 내용은 기본값이 HTTP 압축 활성화가 아닌 이유에요!

요약하자면, HTTP 압축을 할 경우 네트워크 데이터 전송량이 줄지만, 압축에 필요한 추가적인 작업으로 CPU 사용량이 늘 수 있고 응답 속도 저하로도 이어질 수 있다. 뭔가 비교를 해보고 싶게 만드네요...ㅋㅋ

결론은 항상 그렇듯 트레이드 오프네요!
우리 애플리케이션에서는 전부 JSON 응답이기 때문에 괜찮다고 생각되어요!
수고했어요 제우스 🔥

Copy link
Contributor

@zangsu zangsu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Issue 정리가 너무 잘 되어있군요,,,
고생하셨어요 제우스~~~ 👍

@jminkkk jminkkk merged commit 50d28c0 into dev/be Dec 26, 2024
6 checks passed
@jminkkk jminkkk deleted the infra/850-http-compression branch December 26, 2024 10:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BE 백엔드 infrastructure 인프라 작업
Projects
Status: Weekend Done
Development

Successfully merging this pull request may close these issues.

5 participants