2025. 12. 4. 00:51ㆍ수업 · 스터디/운영체제
Server?
클라이언트에게 네트워크를 통해 정보나 시스템을 제공하는 컴퓨터 시스템을 말한다.
공부를 하다가 웹 서버와 웹 어플리케이션 서버의 차이점이 궁금해 찾아보다가 정리하면 좋을 것 같아 공유해본다.
Ws vs WAS
둘의 차이는 정적 콘텐츠를 serving하냐, 동적 콘텐츠를 serving 하냐의 차이이다.
웹 서버는 정적 콘텐츠(static)를, 웹 어플리케이션 서버는 동적 콘텐츠(dynamic)를 제공한다.
정적 콘텐츠 : 만들어 놓은 그대로를 제공하는 것, ex. image, html, css
동적 콘텐츠 : 요청에 따라 추가적인 데이터 처리가 이루어진 컨텐츠를 제공하는 것. 일반적으로 DB가 필요하면 동적이라고 이해하면 되는데 사용자 요청에 따라 서버 로직 내부에서 데이터 가공이 처리된 후 반환되기 때문. A와 B의 마이페이지에 뜨는 데이터가 다른걸로 이해하면 되겠다.
즉,
WebServer
: 클라이언트가 요청한 정적 콘텐츠를 HTTP를 통해 제공해주는 서버
그렇다면 웹 서버는 동적 요청을 처리하지 못하나? 그렇지 않다. 다만 동적 요청은 정적 요청과 다르게 동작한다.
웹 서버에선 정적 요청만 처리할 수 있기에 컨테이너에게 도움을 구한다. 컨테이너에게 동적 요청을 넘겨주면 컨테이너에서 처리한 결과를 받아 클라이언트에 제공한다.
관련 용어?
- 컨테이너(Container) : 서블릿의 생명 주기를 관리하고, JSP를 서블릿으로 변환하는 기능을 지닌 프로그램
- 서블릿(Servlet) : 자바를 사용해 웹을 만들기 위해 필요한 기술로, 클라이언트의 요청에 대한 응답을 전송하는 역할을 수행한다
- JSP(Java Server Page) : HTML 내 자바코드를 삽입해 웹 서버에서 동적으로 웹 페이지를 생성해 웹 브라우저에 돌려주는 서버 사이드 스크립트 언어

WebApplicationServer
: 클라이언트가 요청한 동적 콘텐츠를 HTTP를 통해 제공해주는 서버. 즉 WAS = Web Server + Web Container 라고 생각하면 편하다.
즉 웹어플리케이션서버는 웹 서버로부터 동적인 요청을 받아 처리하고, 응답 결과를 웹 서버에게 다시 돌려주면 웹 서버는 받은 결과를 클라이언트에게 보여준다.
동적인 요청을 처리하는 만큼 기능도 다양한데 대표적으로 아래와 같은 기능이 있다.
- 프로그램 실행 환경과 DB 접속 기능을 제공한다
- 여러 개의 트랜잭션을 관리한다
- 업무를 처리하는 비즈니스 로직을 수행한다

그럼 WAS 혼자 다하면 될걸 왜 WS를 따로 사용하는가?
1. 기능을 분리해 서버 부하를 방지한다 : 정적 요청까지 WAS에게 몰아버리면 부하가 커지기에, 정적 콘텐츠는 웹 서버에 맡겨 빠르게 처리한다.
2. 물리적으로 분리해 보안을 강화한다 : SSL에 대한 암호화/복호화 처리는 웹 서버를 사용한다
3. 여러 대의 WAS를 이용해 로드밸런싱 용도로 사용할 수 있다 : 대용량 서버일 경우, WAS와 WS를 분리해 특정 WAS에 오류가 발생할 경우 다른 WAS를 사용함으로써 무중단 운영을 가능케 한다.
추가) 다른 서버로 API 서버는 WAS와 비교해 뭐가 다를까?
둘의 차이는 웹 제공 유무이다. 위에서 확인가능 하듯 WAS는 웹 페이지를 제공하고, API 서버는 데이터 통신이 그 목적이라 할 수 있다.

출처 : https://soso-hyeon.tistory.com/81
[Server] 웹 서버 vs 웹 어플리케이션 서버(WAS) vs API 서버
글을 시작하기 전에 최근 2년 간의 서버 개발 경험을 개인적으로 정리하다가 여러가지 개념이 헷갈리기 시작했다. 내가 개발한 서버는 어떻게 불리고 있고, 각각의 개념은 또 어떻게 되며, 이게
soso-hyeon.tistory.com
'수업 · 스터디 > 운영체제' 카테고리의 다른 글
| Operating System - Segmentation[Memory Virtualzation](5) (0) | 2022.12.22 |
|---|---|
| Operating System - Address Space[Memory Virtualzation](4) (0) | 2022.12.22 |
| Operating System - CPU Virtualization & Scheduling(3) (1) | 2022.11.23 |
| Operating System - CPU Virtualization(2) (0) | 2022.11.23 |
| Operating System - OS기초와 CPU Virtualization(1) (0) | 2022.11.23 |