CS ( Computer Science )/네트워크 (Networking)

[Net] Web Application

JABHACK 2024. 12. 3. 17:05

Web Server

📌 클라이언트(보통 웹 브라우저)의 요청을 받아 정적 리소스(HTML, CSS, JavaScript) 같은 정적 파일 또는 동적 콘텐츠를 제공하는 소프트웨어 또는 하드웨어를 말합니다.

  • 웹 서버는 HTTP 또는 HTTPS 프로토콜을 사용하며, 주로 사용자와 웹 애플리케이션 사이에서 데이터를 주고받는 역할을 합니다.
  • 정적 리소스란 리소스가 이미 완성된 채로 서버에 존재하여 원본 그대로 응답하는 데이터를 의미한다.
  • = 다른 데이터는 가공을 처리해서 보내는 것에 반에 정적 리소스는 요청 시 서버에서 따로 데이터를 수정하거나 변형하지 않기 때문에, 서버와 클라이언트 간 추가 작업 없이 바로 사용 가능합니다.

 

[1] 웹 서버의 주요 기능

  1. HTTP 요청 처리
    • 클라이언트가 보낸 요청(GET, POST 등)을 수신하고 응답을 반환.
    • 정적 콘텐츠(HTML, 이미지) 또는 동적 콘텐츠(애플리케이션 서버와 연계).
  2. 정적 콘텐츠 제공
    • HTML 파일, CSS, JavaScript, 이미지 파일 등을 클라이언트에게 전달.
  3. 동적 콘텐츠 처리
    • PHP, Python, Java 등 애플리케이션 서버와 통신하여 동적으로 생성된 데이터를 반환.
  4. 보안 관리
    • HTTPS를 통한 데이터 암호화.
    • 인증 및 접근 제한 기능 제공.
  5. 로드 밸런싱
    • 여러 서버에 요청을 분산하여 성능을 최적화하고, 고가용성을 유지.

[2] 웹 서버의 작동 방식

  1. 클라이언트(웹 브라우저)가 URL을 통해 서버에 요청을 보냄.
  2. 웹 서버는 요청을 분석하여 처리할 리소스를 결정.
    • 정적 콘텐츠 요청: HTML, CSS 같은 파일을 그대로 반환.
    • 동적 콘텐츠 요청: 애플리케이션 서버에 요청을 전달하고 결과를 받아 반환.
  3. 처리 결과를 HTTP 응답으로 클라이언트에게 전달.

[3] 웹 서버의 예시와 용도

웹 서버 소프트웨어특징

Apache HTTP Server 가장 널리 사용되는 오픈소스 웹 서버. 다양한 플랫폼 지원.
Nginx 가벼운 구조와 높은 성능으로 정적 파일 제공 및 로드 밸런싱에 강점.
IIS Microsoft가 개발한 윈도우 전용 웹 서버. .NET 애플리케이션과의 통합이 강점.
LiteSpeed Nginx와 비슷한 고성능 웹 서버로, 특히 WordPress와의 호환성이 좋음.

[4] 웹 서버와 애플리케이션 서버의 차이

구분 웹 서버 애플리케이션 서버
주요 역할 정적 콘텐츠 제공 동적 콘텐츠 생성
예시 Apache, Nginx Tomcat, WebLogic, JBoss
작동 방식 클라이언트 요청에 HTML, CSS, 이미지 등 반환 서버 로직을 실행하여 동적으로 데이터를 생성하고 반환
연계 단독 또는 애플리케이션 서버와 함께 사용 웹 서버와 연동하여 동작

[5] 웹 서버의 배달 비유

웹 서버는 배달 창구 직원에 비유할 수 있습니다.

  • 요청 분석: 고객(브라우저)이 요청하면 창구 직원이 요청 내용을 확인.
  • 정적 리소스 제공: 창고에서 물건(HTML, CSS, 이미지)을 찾아 전달.
  • 동적 리소스 요청: 필요시 창고 관리자(애플리케이션 서버)에게 요청을 전달하고 결과를 받아 고객에게 전달.
  • 로드 관리: 한 번에 여러 고객을 효율적으로 처리하도록 줄을 정리.

[6] 웹 서버의 장점과 단점

장점 단점
- 빠르고 효율적인 정적 콘텐츠 제공. - 동적 처리를 단독으로 지원하지 못함.
- HTTP 프로토콜 최적화로 요청 처리 속도 향상. - 복잡한 요청(데이터 처리, 비즈니스 로직 등)은 애플리케이션 서버에 의존.
- 다양한 플랫폼과의 호환성. - 상태 비저장 특성으로 특정 작업 지속성을 유지하기 어려움.

 

 

 

WAS(Web Application Server)

📌 웹 애플리케이션을 실행하고 관리하는 서버입니다. 웹 애플리케이션 서버는 동적 콘텐츠 생성비즈니스 로직 처리를 담당하며, 클라이언트의 요청에 따라 애플리케이션 로직을 실행하고 결과를 반환합니다.

  • 웹 서버와는 달리 WAS는 서버 측의 애플리케이션을 실행하고 관리하는 역할을 하며, 일반적으로 웹 서버와 함께 사용되어 동적 콘텐츠 처리를 지원합니다.

 

[1] WAS의 주요 기능

  1. 애플리케이션 실행
    • 클라이언트의 요청에 따라 동적으로 데이터를 생성하고 비즈니스 로직을 실행합니다.
    • 예를 들어, 데이터베이스와 연결하여 정보를 가져오거나, 파일을 처리하거나, 복잡한 계산을 수행하는 등의 작업을 처리합니다.
  2. 세션 관리
    • 사용자 상태를 유지하기 위해 세션을 관리합니다.
    • 클라이언트가 여러 요청을 보내더라도, 서버는 동일한 사용자로 인식하여 일관된 정보를 제공합니다.
  3. 트랜잭션 관리
    • 데이터베이스와의 트랜잭션 처리를 관리하여 일관성 있는 데이터를 제공합니다.
  4. 보안 관리
    • 애플리케이션의 보안을 관리하고, 인증 및 권한 부여를 처리합니다.
  5. 서비스 배포 및 확장
    • 애플리케이션을 배포하고 관리하는 기능을 제공합니다.
    • 확장성을 고려하여 여러 인스턴스로 분산 처리가 가능합니다.

 


[2] WAS와 웹 서버의 차이

특징 웹 서버 웹 애플리케이션 서버 (WAS)
기본 역할 정적 콘텐츠 제공 (HTML, 이미지, CSS 등) 동적 콘텐츠 생성 및 비즈니스 로직 실행
응답 처리 방식 파일을 그대로 전달 (정적 파일 처리) 애플리케이션 로직을 실행하여 데이터를 동적으로 생성
세션 관리 일반적으로 세션 관리가 없거나 제한적 세션 관리 및 트랜잭션 처리
애플리케이션 서버 기능 없음 비즈니스 로직 실행, 데이터베이스 연동, 트랜잭션 관리
사용 예시 웹 페이지의 HTML, 이미지, CSS 파일 제공 온라인 쇼핑몰, 은행 시스템, 사용자 인증 등
  • Web Server와 WAS(Web Application Server)의 차이점
    1. 실제로는 Web Server도 Application 로직을 포함할 수 있다.
    2. WAS는 Application 코드를 실행하는 것에 더욱 특화되어 있다.
    3. Java에서는 Servlet Container 기능을 제공하면 WAS 이다.

[3] WAS의 예시

WAS 소프트웨어특징

Apache Tomcat Java Servlet과 JSP를 지원하는 오픈소스 WAS. 가장 널리 사용됨.
JBoss (WildFly) Java EE 표준을 지원하며, 엔터프라이즈급 애플리케이션을 처리하는 WAS.
WebLogic Oracle의 Java EE 기반 WAS, 고급 트랜잭션 관리와 확장성 제공.
WebSphere IBM의 WAS로, 대규모 기업 환경에서 고급 기능과 안정성 제공.

 


[4] WAS의 배달 비유

  • 웹 서버배달원이 단순히 포장을 해서 전달하는 역할이라면,
  • **웹 애플리케이션 서버(WAS)**는 배달원이 주문에 맞춰 요리를 준비하고, 포장한 뒤 정확하게 전달하는 역할입니다.
    • 즉, 웹 서버는 이미 준비된 음식을 그대로 전달하지만, WAS는 주문에 맞는 음식을 준비하고 그 결과를 고객에게 전달하는 역할을 합니다.

 

 

Web System 구성

 

[1]  WAS만 사용하는 경우

  1. WAS가 너무 많은 역할을 담당한다
    • 서버 과부하 발생 가능성이 높아진다.
  2. 실행에 가장 중요한 Application 로직이 정적 리소스로 인해 수행되지 않을 수 있다.
  3. WAS에 장애가 생기면 아무런 화면도 보여주지 못한다.
    • 오류 페이지를 클라이언트에게 응답할 수 없다.

 

[2]  실제 웹 시스템 구성

  1. 정적 리소스는 Web Server에서 처리한다.
  2. Web Server는 Application 로직이 필요한 요청만을 WAS에 전달한다.

 

[3]  실제 웹 시스템 구성의 장점

  1. 효율적으로 리소스를 관리할 수 있다.
    • 정적 자원이 많이 사용된다면 Web Server를 ScaleOut 한다.
    • Application 관련 자원이 많이 사용된다면 WAS를 ScaleOut 한다.
  2. 오류 화면을 제공할 수 있다.
    • Web Server는 오류가 발생할 확률이 아주 낮다.
    • WAS는 오류가 발생할 확률이 아주 높고, 장애가 자주 발생한다.
    • WAS는 DB와 상호작용 하기 때문에 DB에 문제가 생겨도 문제가 발생한다.

 

'CS ( Computer Science ) > 네트워크 (Networking)' 카테고리의 다른 글

[Net] Rendering  (1) 2024.12.05
[Net] Servlet  (1) 2024.12.04
[Net] Restful API  (1) 2024.12.02
[Net] HTTP 요청 데이터  (0) 2024.12.02
[Net] HTTP Header  (0) 2024.12.01