Feed
Explore
Ranking
Search
띵
띵로그
/
CS
Search...
CS
1
t
thing_k0
15 팔로워
·
3 팔로잉
I always hope you're happy.
태그
최근 댓글
WAS가 있음에도 불구하고, 웹서버인 Nginx 를 사용하는 이유 - 개발자 면접 리마인드
최근 게임 회사 면접에서 스프링 부트와 Nginx 사용 이유에 대한 질문을 받았습니다. 이번 포스팅에서는 웹 서버와 웹 애플리케이션 서버의 차이를 명확히 이해하고, Nginx 사용 이유를 깊이 있게 다뤄봅니다.
13
6
2 years ago
16 min read
Nginx
WAS
Tomcat
웹서버
면접리뷰
직무면접
t
thingk0
1. 네, 말씀하신 이해가 맞다고 생각합니다! nginx가 유용한 이유는 여러 가지가 있겠지만 nginx는 이벤트 기반 처리로 정적 파일 제공에 최적화되어 있어서 Node.js보다 리소스 사용이 효율적이고 파일 캐싱과 압축 기능 등 잘 구현되어 있어 성능상 이점이 있다고 알고 있습니다. 그리고 서버 사이드 렌더링의 경우 Node.js나 톰캣같은 서버가 동적 렌더링을 직접 처리해야 하고, 매 요청마다 서버에서 동적으로 HTML을 생성하기 때문에 nginx의 정적 파일 캐싱이나 압축 기능의 이점을 제대로 활용하기 어렵다고 생각합니다. :) 2. 저도 깊게 아는 것은 아니지만.. 가장 큰 이유로는 nginx가 HTTPS 처리를 담당하여 애플리케이션 서버의 부담을 줄일 수 있고 직접적인 서버 접근을 차단하기 때문에 추가적인 보안 레이어 역할을 해줄 수 있기 때문입니다 ! 3. 맞습니다. Node.js나 스프링부트도 충분히 좋은 성능을 제공합니다. 하지만 그럼에도 nginx를 앞단에 두면 정적 파일 캐싱으로 서버의 부하를 덜 수 있고 불필요한 요청을 사전에 필터링 역할까지 가능하기 때문입니다. 그리고 개인적으로 Nginx 가 굉장히 잘 만들어진 웹서버라고 생각하기 때문에, 서버는 정말 애플리케이션의 역할만 수행하고, 나머지의 정적인 것들은 Nginx 에서 부담을 나누어주면 여러모로 이점이 많을 거라고 생각합니다!
i
injaesong
글 잘 읽었습니다 ㅎㅎ 저도 nginx를 사용하려다 nginx를 사용함으로써 얻는 장점에 대해 의문이 생겨 서칭하다가 들어오게 됐는데, 읽으면서도 몇가지 의문이 남아 질문드리고 싶습니다! 1. 정적 컨텐츠 제공 Tomcat 같은 WAS도 정적 컨텐츠를 제공할 수 있습니다. 아무 로직 없이 정적 컨텐츠를 응답하면 정적 컨텐츠를 제공하는 웹서버로도 활용이 가능합니다. 물론 다른 FE 애플리케이션이 있다면 필요가 없겠지만요! 리액트나 뷰를 사용한 FE 애플리케이션은 SPA를 위해 Nodejs 상에서 돌아갑니다. 동적 렌더링이 아닌 웹팩 등의 번들링 툴을 이용해 npm build 등을 통해서 정적 파일을 생성해 이를 배포하기 위함이라면 nginx의 정적 컨텐츠 제공의 역할이 이해가 됩니다. 정적 컨텐츠를 위해선 JS 런타임 환경인 Node보단 nginx가 훨씬 효율적이라고 생각하기 때문입니다. SPA일 경우 유용하다고 생각하셨다는데, 그 이유가 제가 이해한 바가 맞을까요?? SPA가 아닐 경우엔 어째서 유용하지 않은걸까요? 2. 리버스 프록시 한 EC2 인스턴스에 FE와 BE 앱이 모두 다른 포트로 연결됐기 때문에 리버스 프록시가 이유가 된다는 점이 이해가 됐습니다! 그럼 감히 구조를 예상해보자면, `클라이언트 <-> 리버스 프록시(nginx) <-> EC2 (FE + Spring Boot)` 라고 예상이 되는데, FE앱 내에선 API 서버가 같은 디바이스 내에 있기 때문에 주소가 `http://localhost:8080`으로 되어있을 것이라고 생각이 듭니다. 그럼 서버가 받을 요청은 localhost의 3000포트 같은 FE 앱 뿐일 것 같은데, 리버스 프록시가 필요하고 유용한 이유가 무엇인지 궁금합니다! nginx가 BE로 향하게 끔 하는 경우가 모니터링이나 문서 등이 있다거나, 혹은 시스템 구조가 다른 것일까요?? 3. 고성능 Spring Boot의 Tomcat이나 Nodejs도 논블로킹 I/O를 통해 높은 퍼포먼스의 동시 작업을 지원한다고 생각합니다. 아파치 웹 서버처럼 비슷한 역할을 하는 프로그램과 비교라면 이해가 되긴하는데, 이런 경우 Node가 그대로 트래픽을 받는 것도 문제될 것 같지 않다는 생각이 듭니다.
k
keartt
웹서버 공부중에 큰 도움됐습니다! 좋은 정리글 감사합니다. 🫡
m
morethanmin
한번 확인해볼게요. 커뮤니티 접속하셔서 오류보고 채널에 남겨주시면 좀더 자세히 파악이 가능할 것 같아요. 항상 감사드려요!
t
thingk0
감사합니다!! 원래 morethanlog를 써보려다가 프론트쪽은 너무 몰라서 실패하고, 다시 velog를 사용하려다가 우연히 until을 출시하셨다고 들어서 후다닥 사용해봤는데 너무 좋아서 다시 velog에서 이사 왔습니다!! until 만들어주셔서 너무 감사해요ㅎㅎ 열심히 해보겠습니다 감사합니다! (+) 아 그리고 임시저장하고 나갔다가 들어오면 제목만 살아있고 내용은 사라지는 버그가 있던데 혹시 제가 이상한 걸까요!?