웹서버 vs WAS

기술노트

🏢 웹서버 (Web Server) vs WAS (Web Application Server)

웹 서비스를 구성할 때, 웹서버WAS는 가장 기본적인 구성 요소입니다. 두 서버는 역할이 다르며, 종종 함께 사용되어 시너지를 냅니다.


🖼️ 웹서버 (Web Server)

웹서버는 HTTP 프로토콜을 통해 클라이언트의 요청을 받아, HTML, CSS, JavaScript, 이미지 등 정적인 콘텐츠(Static Contents)를 제공하는 서버입니다. 정적인 콘텐츠는 누가 요청하든 항상 동일한 내용을 보여줍니다.

  • 주요 역할 : 정적 콘텐츠 제공
  • 대표 제품 : Apache HTTP Server, Nginx

⚙️ WAS (Web Application Server)

WAS는 웹서버의 기능에 더해, 데이터베이스 조회나 비즈니스 로직 처리 등 동적인 콘텐츠(Dynamic Contents)를 생성하여 제공하는 서버입니다. 동적인 콘텐츠는 사용자의 요청이나 상황에 따라 내용이 달라집니다.

  • 주요 역할 : 동적 콘텐츠 생성, 비즈니스 로직 수행
  • 대표 제품 : Apache Tomcat, JBoss, WebLogic, WebSphere

🤝 함께 사용하는 이유

대부분의 웹 서비스는 웹서버와 WAS를 함께 사용하는 구조를 가집니다. 클라이언트의 모든 요청을 웹서버가 먼저 받고, 정적인 콘텐츠는 웹서버가 직접 처리하고, 동적인 처리가 필요한 요청만 WAS에 넘겨서 처리하게 합니다. 이렇게 역할을 분리하면 다음과 같은 장점이 있습니다.

  • 서버 부하 분산 : 정적 콘텐츠 처리에 WAS의 자원을 사용하지 않아, WAS는 중요한 비즈니스 로직 처리에만 집중할 수 있습니다.
  • 안정성 향상 : WAS에 장애가 발생하더라도, 웹서버가 정적 콘텐츠는 정상적으로 제공할 수 있습니다. 또한 웹서버를 앞단에 두어 보안을 강화할 수도 있습니다.
  • 효율적인 배포 : 여러 대의 WAS를 하나의 웹서버에 연결하여 로드 밸런싱 및 장애 대응(Failover) 환경을 쉽게 구축할 수 있습니다.

💡 개발자 핵심 Point

  • 웹서버는 '정적'인 것, WAS는 '동적'인 것을 처리한다고 기억하면 쉽습니다.
  • Nginx와 같은 최신 웹서버는 캐싱, 리버스 프록시, 로드 밸런싱 등 다양한 고급 기능을 제공하여 WAS의 부담을 크게 줄여줍니다.
  • Java Spring Boot와 같이 내장 WAS를 포함하는 프레임워크를 사용하면 단독으로도 웹 서비스를 구동할 수 있지만, 실제 운영 환경에서는 안정성과 확장성을 위해 앞단에 Nginx와 같은 웹서버를 두는 것이 일반적입니다.