웹 서버(Web Server)
웹 서버는 정적 리소스(Static Resource) 를 클라이언트(브라우저)에게 제공하는 역할을 합니다.
예를 들어 React, Angular 프로젝트를 빌드하면 index.html, main.js, style.css 같은 정적 파일이 나옵니다.
이 파일들을 클라이언트에게 빠르게 전달하는 게 바로 웹 서버의 역할입니다.
웹 서버의 주요 특징
- HTML, CSS, JS, 이미지, 영상 같은 정적 파일 처리
- 요청(Request) → 응답(Response) 흐름 단순 처리
- 캐싱(Cache) 지원, 로드 밸런싱(Load Balancing) 지원
- 대규모 트래픽에서도 빠른 응답 가능
대표적인 웹 서버
- Apache HTTP Server
- Nginx
- Microsoft IIS
쉽게 말해, 웹 서버는 "정적 파일 배포 전문 서버" 라고 생각하면 됩니다.
웹 애플리케이션 서버(WAS, Web Application Server)
WAS는 동적 리소스(Dynamic Resource) 를 처리하는 서버입니다.
정적 파일만 제공하는 웹 서버와 달리, DB와 연동하거나 비즈니스 로직을 실행해 동적으로 생성된 데이터를 반환합니다.
WAS의 주요 특징
- 로그인, 회원가입, 장바구니, 결제 등 비즈니스 로직 수행
- DB 연결, 트랜잭션 관리, 세션 관리
- REST API, GraphQL API, 웹소켓 등 동적 응답 처리
- 애플리케이션 실행 환경 제공 (Java, Spring, Node.js 등)
대표적인 WAS
- Tomcat (Java Servlet 컨테이너)
- JBoss / WildFly
- WebLogic / WebSphere
- Node.js (자체적으로 WAS 역할 수행)
WAS는 "애플리케이션 로직 실행 엔진" 역할을 합니다.
웹 서버 vs WAS 비교 표
| 구분 | 웹 서버(Web Server) | 웹 애플리케이션 서버(WAS) |
| 역할 | 정적 리소스 제공 | 동적 콘텐츠 생성 |
| 처리 대상 | HTML, CSS, JS, 이미지 | API 요청, 비즈니스 로직, DB 연동 |
| 예시 응답 | index.html 전달 | 로그인 API, 게시글 목록 조회 |
| 주요 기능 | 요청/응답 전달, 캐싱, 로드밸런싱 | 트랜잭션 관리, 세션 처리, 동적 로직 |
| 대표 기술 | Apache, Nginx, IIS | Tomcat, JBoss, WebLogic, Node.js |
왜 웹 서버와 WAS를 분리할까?
실제 서비스에서는 웹 서버와 WAS를 분리해서 운영하는 경우가 많습니다.
1. 성능 최적화
- 정적 파일(index.html, JS, CSS)은 웹 서버가 바로 응답
- 동적 요청(API, DB 조회 등)만 WAS로 전달
- WAS의 부담을 줄이고, 전체 응답 속도가 빨라집니다.
2. 보안 강화
- 외부에서 직접 WAS에 접근하지 못하고, 웹 서버를 거쳐야 함
- 내부 네트워크에서만 WAS 동작 → 보안성 향상
3. 확장성 확보
- 웹 서버에서 로드밸런싱 → 여러 WAS로 트래픽 분산 가능
- 대규모 트래픽 대응 가능
정리
- Nginx는 배포 담당
- dist/, build/ 폴더 안의 정적 파일을 클라이언트에게 서빙
- React Router, Angular Router 같은 SPA 라우팅을 위해 index.html fallback 설정 필요
- WAS는 API 담당
- 로그인, 데이터 CRUD 요청은 WAS가 처리
- GraphQL, REST API, WebSocket 서버도 WAS 범주
- 프록시 설정 중요
- 로컬 개발 시: React/Angular → 프록시 설정해서 API 서버 호출
- 실제 배포 시: Nginx가 /api 요청을 WAS로 라우팅
'개발 공부' 카테고리의 다른 글
| bind (0) | 2025.09.24 |
|---|---|
| Hoisting(호이스팅) (0) | 2025.09.21 |
| 거시적인 관점에서 코드를 짜기 (0) | 2025.09.08 |
| try-catch & then-catch (1) | 2025.08.03 |
| Pub/Sub (3) - Next.js + Zustand (0) | 2025.06.30 |