본문 바로가기

네트워크

[네트워크] 웹 서버, 웹 어플리케이션 서버(WAS)

728x90

서버(server)와 클라이언트(client)의 개념

  • 서버 (Server)
    • 응답하는 대상: 서버는 요청을 받은 후, 클라이언트에게 필요한 정보를 제공하는 역할을 합니다. 서버는 클라이언트의 요청에 대해 적절한 처리를 하고 결과를 반환합니다.
    • 예: 웹 서버는 웹 페이지를 클라이언트에게 반환하며, 데이터베이스 서버는 데이터를 조회하여 반환합니다.
  • 클라이언트 (Client)
    • 요청하는 대상: 클라이언트는 서버에 특정 작업을 요청하는 주체입니다. 클라이언트는 서버로부터 데이터를 요청하거나 서비스를 요청하고, 그에 대한 응답을 받습니다.
    • 예: 웹 브라우저가 웹 서버에 페이지 요청을 보내고, 사용자는 그 결과를 웹 페이지 형식으로 받습니다.

 

 

서버의 종류

  1. 웹 서버 (Web Server)
    • 웹 서버는 클라이언트(주로 웹 브라우저)로부터 HTTP 요청을 받아 HTML 파일, 이미지, CSS, JavaScript 파일 등의 정적인 자원을 반환하는 역할을 합니다.
    • 예시: Apache, Nginx, IIS (Internet Information Services)
  2. 웹 어플리케이션 서버 (Web Application Server)
    • 웹 어플리케이션 서버는 웹 서버와 달리 동적인 자원을 생성하여 클라이언트에 응답하는 서버입니다. 웹 서버가 주로 정적인 파일을 응답하는 반면, 웹 어플리케이션 서버는 데이터베이스와 상호작용하여 동적으로 변하는 정보를 처리합니다.
    • 예시: Tomcat, Jetty, JBoss, WebLogic

 

서버가 응답해야 하는 자원

  1. 정적인 자원 (Static Resources)
    • 정적인 자원은 언제, 어디서, 누가 보더라도 변하지 않는 정보입니다. 이는 고정된 콘텐츠로, 개발자가 수정하지 않는 이상 그대로 제공됩니다.
    • 예시: HTML 파일, 이미지(JPEG, PNG), 동영상 파일, CSS 파일, JavaScript 파일 등
  2. 동적인 자원 (Dynamic Resources)
    • 동적인 자원은 언제, 어디서, 누가 보는지에 따라 변하는 정보로, 사용자의 요청에 따라 동적으로 생성됩니다. 예를 들어, 사용자가 로그인 후 그에 맞는 개인화된 정보를 제공하는 페이지입니다.
    • 예시: 로그인 후 변하는 대시보드, 실시간 데이터, 사용자 맞춤형 정보 등
    • 동적인 자원에서 주로 사용되는 기술: 데이터베이스(DBMS), 서버 사이드 스크립팅(PHP, Python, Ruby), 웹 프레임워크(Flask, Django, Spring 등)

 

 

서버의 역할에 따른 구분

  1. 정적인 자원을 응답하는 웹 서버
    • 웹 서버는 클라이언트의 요청을 받아, 그에 해당하는 정적인 자원(HTML, 이미지, CSS 등)을 바로 반환합니다. 웹 서버는 클라이언트가 요청한 파일을 찾아서 그대로 반환하는 역할만 합니다.
  2. 동적인 정보를 생성하여 응답하는 웹 어플리케이션 서버
    • 웹 어플리케이션 서버는 클라이언트의 요청에 따라 동적인 콘텐츠를 처리합니다. 예를 들어, 사용자 인증, 데이터베이스 질의, 복잡한 비즈니스 로직 실행 후 결과를 클라이언트에게 전달합니다.

 

 

왜 웹 서버에서 동적 콘텐츠를 처리하지 않을까?

  1. 과부하 방지
    • 웹 서버는 정적인 자원에 최적화되어 있으며, 동적 콘텐츠를 처리하게 되면 서버가 과부하에 걸리게 될 수 있습니다. 따라서 웹 서버와 웹 어플리케이션 서버를 분리하여 작업을 나누는 것이 효율적입니다.
  2. 보안 상의 이점
    • 웹 서버는 주로 정적인 파일만 처리하므로, 웹 어플리케이션 서버와의 분리는 보안상 이점을 가집니다. 예를 들어, 애플리케이션 서버가 직접 사용자 인증이나 데이터베이스 처리를 담당하는데, 이를 웹 서버가 대신 처리하지 않음으로써 보안상의 리스크를 줄일 수 있습니다.
  3. 여러 웹 어플리케이션 서버와의 연동 용이
    • 웹 서버는 여러 개의 웹 어플리케이션 서버와 연동하기 용이합니다. 로드 밸런싱을 통해 여러 서버에 트래픽을 분산시키고, 서버 간의 부담을 고르게 할 수 있습니다. 웹 서버는 클라이언트의 요청을 받은 후, 어떤 웹 어플리케이션 서버로 전달할지 결정하는 역할도 합니다.

 

 

정리

  • 서버는 클라이언트의 요청을 받아, 이에 대해 적절한 응답을 반환하는 시스템입니다.
  • 웹 서버는 정적인 자원을 처리하며, 웹 어플리케이션 서버는 동적인 자원을 생성하고 제공하는 역할을 합니다.
  • 동적인 자원 처리를 웹 서버에서 직접 하지 않는 이유는 과부하 방지, 보안, 그리고 여러 서버 간 연동을 용이하게 하기 위해서입니다.
728x90

'네트워크' 카테고리의 다른 글

[네트워크] 포트(Port)  (1) 2024.11.29
[네트워크] ICMP  (0) 2024.11.20
[네트워크] ARP( Address Resolution Protocol )  (0) 2024.11.15
[네트워크] IP  (2) 2024.11.15
[네트워크] 이더넷  (2) 2024.11.12