cs/ODOQ

[ODOQ] WAS, 웹 서버

icodesiuuuu 2025. 1. 3. 23:14

[One Day One Question]

WAS와 웹 서버에 대해서 설명해 주세요.


 

1. 기본 개념

  • 웹 서버
    • HTTP 프로토콜을 사용해 클라이언트(브라우저)와 통신하는 서버입니다.
    • 주로 정적인 콘텐츠(HTML, CSS, JS, 이미지 파일 등)를 제공하는 데 사용됩니다.
    • 예: Apache HTTP Server, Nginx
  • WAS (Web Application Server)
    • 동적인 콘텐츠를 생성하고 실행할 수 있는 서버로, 웹 서버의 역할을 포함하면서 추가적으로 애플리케이션 로직을 처리합니다.
    • 클라이언트의 요청에 따라 데이터베이스와 상호작용하거나 비즈니스 로직을 수행합니다.
    • 예: Tomcat, JBoss, WebSphere, WebLogic

 

2. 기능

  • 웹 서버
    • 정적 파일을 클라이언트에게 전송.
    • 리버스 프록시 역할 수행 가능.
    • 클라이언트 요청을 처리하고 WAS로 전달.
    • 동적 콘텐츠 처리가 불가능.
  • WAS
    • 동적 웹 애플리케이션을 실행(예: Java, Python, PHP 등).
    • 데이터베이스와의 상호작용을 통해 동적인 결과를 생성.
    • 비즈니스 로직 처리.
    • 세션 관리, 트랜잭션 처리 등 추가 기능 제공.

 

3. 역할

  • 웹 서버
    • WAS와 클라이언트 사이에서 요청을 받아 적절히 라우팅하거나 정적 리소스를 직접 처리.
    • 높은 성능의 정적 리소스 제공.
    • 부하 분산(로드 밸런싱)을 지원.
  • WAS
    • 클라이언트 요청을 기반으로 동적인 비즈니스 로직을 실행.
    • JSP, 서블릿, Spring 등의 웹 애플리케이션을 실행.

 

 

 

 

꼬리 질문

WAS만 사용하지 않고 굳이 웹 서버를 사용하는 이유는 무엇인가요?


WAS만으로도 동적 콘텐츠를 처리할 수 있기 때문에, 단순한 웹 애플리케이션에서는 WAS만 사용해도 충분할 수 있습니다. 하지만 웹 서버를 추가로 사용하는 이유는 성능, 보안, 확장성 등 여러 가지 실질적인 이점 때문입니다.

 

1. 성능 최적화

  • 정적 콘텐츠 처리 효율성
    • WAS는 동적 콘텐츠를 생성하는 데 최적화되어 있지만, 정적 콘텐츠(HTML, CSS, JS, 이미지 등)를 처리하는 데는 웹 서버가 더 효율적입니다.
    • 웹 서버는 정적 리소스를 빠르게 캐싱하고 제공할 수 있어 WAS의 부하를 줄이고 전체 성능을 향상시킵니다.
  • 리소스 분리
    • 정적 리소스는 웹 서버가 처리하고, 동적 로직만 WAS가 처리하도록 역할을 분리하면 서버의 리소스 활용이 더 효율적입니다.

 

2. 보안 강화

  • 프록시 역할 (Reverse Proxy)
    • 웹 서버는 클라이언트 요청을 필터링하고 WAS로 전달하는 역할을 하며, WAS를 직접 외부에 노출하지 않도록 보호합니다.
    • 이를 통해 WAS에 대한 직접적인 공격을 막을 수 있습니다.
  • HTTPS 처리
    • 웹 서버는 HTTPS 트래픽을 처리하고 복호화한 데이터를 WAS로 전달할 수 있습니다.
    • WAS가 복호화 작업을 수행하면 성능에 영향을 줄 수 있으므로, 웹 서버가 이를 대신 처리하여 성능을 최적화할 수 있습니다.

 

3. 부하 분산 (Load Balancing)

  • 트래픽 분산
    • 대규모 애플리케이션에서는 여러 WAS 인스턴스를 운영하는 경우가 많습니다. 웹 서버는 로드 밸런서 역할을 하여 들어오는 요청을 여러 WAS로 분산시킬 수 있습니다.
    • 이를 통해 한 WAS가 과부하되는 것을 방지하고 안정적인 서비스를 제공합니다.

 

4. 장애 대응

  • WAS 장애 시 서비스 지속
    • WAS가 장애가 발생하거나 재시작되어도, 웹 서버는 정적 콘텐츠를 계속 제공할 수 있어 최소한의 서비스를 유지할 수 있습니다.
    • 사용자는 동적 기능은 이용할 수 없더라도 기본적인 페이지 접근은 가능해집니다.

 

5. 확장성 및 유연성

  • 다양한 WAS와의 호환
    • 하나의 웹 서버가 여러 WAS와 통합되어 동작할 수 있습니다. 이를 통해 서로 다른 기술 스택으로 개발된 애플리케이션을 하나의 웹 서버로 통합할 수 있습니다.
    • 예: Apache 웹 서버가 Java 기반 Tomcat과 Python 기반 Flask 애플리케이션을 동시에 지원.

 

6. 캐싱을 통한 응답 속도 향상

  • 웹 서버는 캐싱(Cache) 기능을 활용하여 동일한 요청에 대해 WAS를 거치지 않고 빠르게 응답할 수 있습니다.
    • 예: 자주 요청되는 리소스는 캐시에 저장되어 네트워크 및 서버 부담을 줄임.