Nginx 와 Tomcat 의 차이는 무엇일까?

웹 서버는 정적 리소스를 빠르게 처리할 뿐만 아니라, 리버스 프록시의 역할을 하여 로드 밸런싱 같은 기능을 통해 시스템의 보안성, 확장성, 안정성을 책임지는 핵심 인프라 요소이다.

ℹ️

특징

  • HTTP 기반으로 동작
  • 정적 리소스 제공, 기타 부가기능 제공
    • 정적(파일) HTML, CSS, JS, 이미지, 영상
  • 대표적으로 Nginx, Apache 가 존재

표면적인 기능으로 보았을 때 웹 서버는 단순히 정적 파일만 관리하는 것으로 볼 수 있지만, 아래와 같은 기능들을 더 지원한다.

  1. 분산 처리를 위한 로드 밸런싱
  2. 자주 요청 하는 데이터를 최적화 하는 정적 파일 캐싱
  3. WAS 의 응답 IP 를 숨기는 리버스 프록시


웹 서버와 웹 어플리케이션 서버의 차이 는 무엇일까?

  • 웹 서버는 정적 리소스 제공, WAS 는 어플리케이션 로직 수행
    • 웹 서버도 프로그램을 실행하는 기능을 포함하기도 함
    • 웹 어플리케이션 서버도 웹 서버의 기능을 제공 함
  • WAS 는 어플리케이션 코드를 실행하는 데 더 특화 되어있음

웹 시스템을 구성할 때 WAS 와 DB 만 두어도 구성이 가능하다. 단, WAS 가 정적 파일 제공도 해야하고 어플리케이션 로직도 실행 해야 하기 때문에 너무 많은 역할을 담당하게 되며 서버 과부하에 우려가 된다. 또한, WAS 서버에 장애가 발생하더라도 정적 파일을 제공할 수 없기 때문에 현재 에러가 난 상황인지 노출이 불가능하다.

위와 같은 단점을 보완하기 위해 WEB 서버, WAS, DB 로 시스템을 구성한다.

각자의 역할을 분담하게 되며 아래와 같은 역할을 맡는다.

효율적인 리소스 관리가 가능하다.

정적 리소스만 제공하는 웹 서버는 무거운 작업을 수행하는 것이 거의 없기 때문에 잘 안죽는다. 하지만, 어플리케이션 로직이 동작하는 WAS 는 많은 리소스를 사용하기 때문에 잘 죽는다. 이러한 WAS 서버 또는 DB 에 장애가 발생할 시 오류 화면을 제공할 수 있다.

Summary