본문으로 건너뛰기

웹 서버와 WAS(Web Application Server)

✔️ 웹 서버 (Web Server)

정적 컨텐츠(HTML, CSS, JS, 이미지 등)를 제공하는 역할을 수행합니다. 동적 컨텐츠 요청 시 요청을 WAS로 전달할 수도 있습니다. 대표적인 웹 서버로는 Apache, Nginx 등이 있습니다.

✔️ WAS (Web Application Server)

서블릿 컨테이너 기능을 제공하고, 동적 컨텐츠를 생성하거나, 애플리케이션 로직을 실행하는 데 특화되어 있습니다. 대표적인 WAS로는 Tomcat이 있습니다.

정리하자면, 웹 서버는 정적 컨텐츠 제공에 특화되어 있으며, WAS는 동적인 컨텐츠 생성과 데이터 처리에 특화되어 있습니다.

✔️ WAS도 정적 컨텐츠를 제공할 수 있는데 웹 서버가 따로 필요한 이유는? 🤔

WAS가 너무 많은 역할을 담당하면 과부하될 수 있습니다. 웹 서버를 따로 분리하면 WAS는 중요한 애플리케이션 로직에 집중할 수 있으며, 웹 서버는 정적 리소스를 처리하면서 업무 분담이 가능합니다. 또한, 시스템 리소스를 효율적으로 관리할 수 있습니다. 정적 컨텐츠가 많이 사용되는 경우에는 웹 서버를 증설하고, 애플리케이션 자원이 많이 사용되면 WAS를 증설하면 됩니다. 이외에도 로드 밸런싱을 하거나, 캐싱 및 압축, HTTPS 등을 웹 서버에서 처리하도록 할 수 있습니다.

✔️ 웹 서버가 WAS보다 가벼운 이유

1) 처리해야 할 작업이 적음

웹 서버는 단순히 정적 파일을 요청한 클라이언트에게 반환하는 역할을 합니다. 반면, WAS는 비즈니스 로직을 수행하고, 데이터베이스와 통신해야 하므로 더 많은 연산과 리소스가 필요합니다.

2) 실행 환경이 단순함

  • 웹 서버(Apache, Nginx 등)는 파일 서빙(File Serving)과 Reverse Proxy 기능을 주로 사용하며, 메모리 사용량이 적고 가벼운 프로세스로 실행됩니다.
  • WAS(Tomcat, JBoss 등)는 JVM(Java Virtual Machine)에서 실행되며, 애플리케이션을 실행하고 메모리(Heap, Stack)를 관리해야 하므로 리소스를 더 많이 사용합니다.

3) 병목이 적음

웹 서버는 요청을 받아 빠르게 응답을 반환하지만, WAS는 요청을 받아 비즈니스 로직을 수행하고 DB와 통신해야 하므로 상대적으로 더 무겁습니다.