개념 정리/CS

WEB 서버와 WAS 서버에 대해 알아보자

매진2 2023. 10. 13. 10:18
728x90

💡웹 서버와 웹 애플리케이션 서버

1. 웹 서버 (Web Server) 

  • 웹 서버는 클라이언트로부터 HTTP 요청을 받아 정적인 웹 페이지를 제공하는 역할
  • 정적 콘텐츠(HTML 파일, CSS, JavaScript, 이미지 등)를 클라이언트에게 전달한다.
  • 주요 웹 서버 소프트웨어에는 Apache, Nginx, Microsoft IIS 등
  • 일반적으로 웹 서버는 요청에 따라 웹 애플리케이션 서버(WAS)로 요청을 전달하고, WAS가 동적 콘텐츠를 처리한다.

2. 웹 애플리케이션 서버 (WAS, Web Application Server)

  • 웹 애플리케이션 서버는 동적 웹 애플리케이션을 실행하고 관리하는 역할
  • 동적 콘텐츠 생성, 비즈니스 로직 실행, 데이터베이스와의 상호 작용 등을 처리한다.
  • 주요 WAS 소프트웨어에는 Apache Tomcat, Java EE 서버(예: WildFly, GlassFish), ASP.NET 서버 등
  • WAS는 웹 서버와 함께 사용되어 웹 서버가 받은 HTTP 요청을 동적으로 처리하고, 클라이언트에게 동적 콘텐츠를 제공한다.
  • WAS는 웹 애플리케이션 코드를 실행하고, 데이터베이스 서버와 연동하여 필요한 정보를 가져와 웹 페이지를 동적으로 생성한다.

 

💡Web Service Architecture

1. 웹 서버는 요청 처리 방식에 따라 다양한 구조를 가진다.

  • 클라이언트 -> Web Server -> DB
  • 클라이언트 -> WAS -> DB
  • 클라이언트 -> Web Server -> WAS -> DB

 2. 웹 서버의 작동 방식

  1. 브라우저는 URL을 사용하여 서버의 IP 주소를 찾습니다.
  2. 브라우저는 정보에 대한 HTTP 요청을 보냅니다.
  3. 웹 서버는 데이터베이스 서버와 통신하여 관련 데이터를 찾습니다.
  4. 웹 서버는 HTTP 응답으로 HTML 페이지, 이미지, 비디오 또는 파일과 같은 정적 콘텐츠를 브라우저에 반환합니다.
  5. 그러면 브라우저가 정보를 표시합니다.

3. 웹 애플리케이션 서버의 작동 방식

  1. 브라우저는 URL을 사용하여 서버의 IP 주소를 찾습니다.
  2. 브라우저는 정보에 대한 HTTP 요청을 보냅니다.
  3. 웹 서버는 요청을 애플리케이션 서버로 전송합니다.
  4. 애플리케이션 서버는 비즈니스 로직을 적용하고 다른 서버 및 서드 파티 시스템과 통신하여 요청을 수행합니다.
  5. 애플리케이션 서버는 새 HTML 페이지를 렌더링하고 이를 응답으로 웹 서버에 반환합니다.
  6. 웹 서버는 브라우저에 응답을 반환합니다.
  7. 브라우저가 정보를 표시합니다.

4. 클라이언트 -> Web Server -> WAS -> DB 동작과정

  1. Web Server는 웹 브라우저 클라이언트로부터 HTTP 요청을 받는다.
  2. Web Server는 클라이언트의 요청(Request)을 WAS에 보낸다.
  3. WAS는 관련된 Servlet을 메모리에 올린다.
  4. WAS는 web.xml을 참조하여 해당 Servlet에 대한 Thread를 생성한다. (Thread Pool 이용)
  5. HttpServletRequest와 HttpServletResponse 객체를 생성하여 Servlet에 전달한다.
    5-1. Thread는 Servlet의 service() 메서드를 호출한다.
    5-2. service() 메서드는 요청에 맞게 doGet() 또는 doPost() 메서드를 호출한다.
    protected doGet(HttpServletRequest request, HttpServletResponse response)
  6. doGet() 또는 doPost() 메서드는 인자에 맞게 생성된 적절한 동적 페이지를 Response 객체에 담아 WAS에 전달한다.
  7. WAS는 Response 객체를 HttpResponse 형태로 바꾸어 Web Server에 전달한다.
  8. 생성된 Thread를 종료하고, HttpServletRequest와 HttpServletResponse 객체를 제거한다.

 

💡그러면 WAS로 다 하면 안되나?

1. 웹 서버와 웹 애플리케이션 서버의 차이점

웹 서버 애플리케이션 서버
다루는 태스크 웹 서버는 간단한 요청에 대한 응답을 제공합니다. 애플리케이션 서버는 데이터베이스, 서비스 및 엔터프라이즈 시스템의 더 복잡한 콘텐츠를 제공합니다.
사용되는 프로토콜 웹 서버는 주로 HTTP를 사용합니다. FTP와 SMTP도 지원합니다. 애플리케이션 서버는 많은 프로토콜을 지원합니다. 
콘텐츠 유형 웹 서버는 HTML 페이지, 이미지, 비디오 및 파일과 같은 정적 콘텐츠를 제공합니다.  애플리케이션 서버는 실시간 업데이트, 개인화된 정보 및 고객 지원과 같은 동적 콘텐츠를 제공합니다.
멀티스레딩 일반적으로 멀티스레딩을 사용하지 않습니다. 멀티스레딩을 사용하여 요청을 동시에 처리합니다. 

2. Web Server가 필요한 이유

클라이언트(웹 브라우저)에 이미지 파일(정적 컨텐츠)을 보내는 과정을 생각해보자. 이미지 파일과 같은 정적인 파일들은 웹 문서(HTML 문서)가 클라이언트로 보내질 때 함께 가는 것이 아니다. 클라이언트는 HTML 문서를 먼저 받고 그에 맞게 필요한 이미지 파일들을 다시 서버로 요청하면 그때서야 이미지 파일을 받아온다. Web Server를 통해 정적인 파일들을 Application Server까지 가지 않고 앞단에서 빠르게 보내줄 수 있다. 따라서 Web Server에서는 정적 컨텐츠만 처리하도록 기능을 분배하여 서버의 부담을 줄일 수 있다.

3. Web Application Server가 필요한 이유

웹 페이지는 정적 컨텐츠와 동적 컨텐츠가 모두 존재한다. 사용자의 요청에 맞게 적절한 동적 컨텐츠를 만들어서 제공해야 한다. 이때, Web Server만을 이용한다면 사용자가 원하는 요청에 대한 결과값을 모두 미리 만들어 놓고 서비스를 해야 한다. 하지만 이렇게 수행하기에는 자원이 절대적으로 부족하다. 따라서 WAS를 통해 요청에 맞는 데이터를 DB에서 가져와서 비즈니스 로직에 맞게 그때 그때 결과를 만들어서 제공함으로써 자원을 효율적으로 사용할 수 있다.

4. 서버를 나누는 이유

결론을 먼저 말하자면 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 Web Server와 WAS를 분리한다는 것이다.

  • 기능을 분리해 서버 부하를 방지한다.
  • SSL에 대한 암복호화 처리에 Web Server를 사용해 물리적으로 서버를 분리하여 보안을 강화한다.
  • 여러 대의 WAS를 연결 가능하기 때문에 여러개의 서버를 사용하는 경우 Web Server와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다.
  • 접근 허용 IP 관리, 2대 이상의 서버에서의 세션 관리 등도 Web Server에서 처리하면 효율적이다.
  • 하나의 서버에서 PHP Application과 Java Application을 함께 사용하는 것이 가능하다.

 

 

참고자료

웹 서비스 구조

웹 서비스 동작과정 및 이유

웹서버와 애플리케이션 서버의 차이점

728x90