꾸준한 개발일기

웹 서버와 WAS를 분리하는 이유는? 본문

Programing/서버

웹 서버와 WAS를 분리하는 이유는?

꾸개일 2025. 3. 4. 12:13
반응형

 

1. Web 서버와 WAS 서버의 정의

Web 서버 (Web Server)

  • 클라이언트(브라우저)의 요청을 받아 정적인 HTML, CSS, JavaScript, 이미지 등의 정적 리소스를 제공하는 서버
  • 대표적인 웹 서버: Apache HTTP Server, Nginx, Microsoft IIS
  • 일반적으로 HTTP 요청을 처리하며, 사용자가 요청한 페이지를 반환하는 역할 수행

WAS (Web Application Server)

  • 동적인 로직을 처리하는 서버로, 사용자의 요청을 받아 비즈니스 로직을 수행한 후 결과를 반환
  • 데이터베이스와 연동하여 사용자의 요청에 따라 동적으로 페이지를 생성
  • 대표적인 WAS: Tomcat, JBoss, WebSphere, WebLogic
  • Java 기반 WAS의 경우 Servlet, JSP, Spring 등의 웹 애플리케이션 실행을 담당

2. Web 서버와 WAS의 연관성

웹 서버와 WAS는 서로 협력하여 웹 서비스를 제공하는 역할을 한다.
일반적인 구조는 아래와 같음:

🔹 1) 클라이언트 (브라우저) 요청
→ 웹 서버(Nginx, Apache)에서 정적 자원 제공
🔹 2) 동적 요청 (ex: 로그인, 데이터 조회 등)
→ 웹 서버가 WAS(Tomcat, WebLogic)로 요청 전달
🔹 3) WAS에서 비즈니스 로직 수행 후 응답 반환
→ DB에서 데이터를 조회하고 결과를 웹 서버에 전달
🔹 4) 웹 서버가 응답을 클라이언트에 반환

💡 즉, 웹 서버는 요청을 정리해서 WAS로 넘기고, WAS는 비즈니스 로직을 수행한 뒤 결과를 웹 서버를 통해 반환하는 구조임.


3. 웹 서버와 WAS를 분리하는 이유

1) 성능 최적화

  • 정적 리소스는 웹 서버가 처리하고, WAS는 동적 로직만 처리하여 부하를 분산함.
  • 예를 들어, Nginx가 정적 리소스를 처리하고 Tomcat이 동적 요청을 처리하면 WAS 부하를 줄일 수 있음.

2) 보안 강화

  • 외부에서 직접 WAS에 접근하지 못하도록 웹 서버만 외부에 노출하고 WAS는 내부망에서만 실행
  • DDoS 공격 등의 보안 위협을 줄일 수 있음

3) 확장성(Scalability) 증가

  • 트래픽이 많아지면 웹 서버를 여러 개 추가하여 로드 밸런싱 가능
  • WAS도 여러 개 배포하여 수평 확장(Scaling) 가능

4. 실제 적용 사례

📌 Spring Boot + Nginx + Tomcat 구성

  • Spring Boot에서 기본적으로 Tomcat(WAS)이 포함됨
  • Nginx를 앞단에 배치하여 정적 파일 제공 및 리버스 프록시 역할 수행
  • 예를 들어, https://example.com에 요청이 오면
    • /static/* 요청은 Nginx에서 직접 응답
    • /api/* 요청은 WAS(Spring Boot)로 전달

📌 대규모 서비스 예시

  • 카카오, 네이버 같은 대형 서비스는 Nginx(Apache)를 웹 서버로 사용하고, 내부에 여러 개의 WAS 서버(Tomcat, WebLogic 등)를 배치하여 부하를 분산시킴.

5. 한 줄 요약

웹 서버는 정적 리소스를 제공하고, WAS는 동적인 로직을 수행하는 서버
✅ 일반적으로 웹 서버가 WAS 앞단에서 요청을 필터링하며 보안 및 성능을 최적화
부하 분산과 확장성을 위해 Web 서버 + WAS를 함께 사용하는 것이 일반적

🔥 즉, Nginx + Tomcat과 같은 구조로 웹 서비스를 운영하면 성능과 보안이 강화됨! 😊

 

반응형
Comments