웹(Web)이란?
: 인터넷을 통해 정보를 공유하는 시스템
- 클라이언트-서버 모델을 기반으로 동작한다.
- HTML, CSS, JavaScript로 이루어짐
서버(Server)란?
: 네트워크를 통해 클라이언트(사용자)의 요청을 받아 처리하고 응답하는 컴퓨터 또는 소프트웨어
- 요청(Request) 처리
- 데이터 제공
- 데이터베이스 연동
웹 서버(Web Server)란?
: 웹 클라이언트(브라우저)에서 요청한 정적 컨텐츠(HTML, CSS, JS, 이미지, 동영상 등)를 제공하는 서버
즉, 사용자가 웹사이트를 방문하면 웹 서버가 해당 사이트의 정적 리소스를 클라이언트에게 전송하는 역할
* 웹 서버의 주요 역할
- 정적 컨텐츠 제공 → HTML, CSS, JS, 이미지, 동영상 등을 클라이언트에 응
- HTTP 요청 처리 → 브라우저의 GET, POST 요청을 받아 적절한 응답 반환
- 리버스 프록시 역할 → 클라이언트 요청을 WAS로 전달
- 로드 밸런싱 → 다수의 WAS로 요청을 분산 처리
- 캐싱 및 압축 → 성능 최적화를 위해 Gzip, Brotli 압축 적용
- SSL/TLS 지원 → HTTPS 보안 통신 처리
대표적인 웹 서버 종류
- Apache HTTP Server: 가장 오래된 웹 서버, 모듈화 가능, 설정 유연
- Nginx: 이벤트 기반 아키텍처로 성능이 뛰어남, 로드 밸런싱 기능 탑재
- LiteSpeed: 높은 성능과 보안 제공, Apache와 호환됨
- IIS(Internet Information Services): Windows 환경에서 사용되는 웹 서버
- Caddy: 기본적으로 HTTPS를 지원하는 간단한 웹 서버
Apache vs Nginx
Apache
- 멀티 프로세스/멀티 스레드 방식
- 확장성이 뛰어나지만 다소 무거움
Nginx
- 이벤트 기반 방식
- 성능이 뛰어나고 트래픽이 많을 때 강점이 있다
반면, 자바 진영에서 WAS(Web Application Server)는
서블릿 컨테이너 기능을 제공하고, 동적 컨텐츠를 생성하거나, 애플리케이션 로직을 실행하는 데 특화되어 있다.
웹 서버는 정적 컨텐츠 제공에 특화되어 있으며, WAS는 동적인 컨텐츠 생성과 데이터 처리에 특화되어 있다.
WAS(Web Aplication Server)란?
: 동적 컨텐츠를 생성하고 애플리케이션 로직을 처리하는 서버
웹 서버는 단순 정적 파일만 제공하지만,
WAS는 사용자의 요청을 처리하고 데이터베이스 연동을 통해 동적인 결과를 생성하는 역할을 한다.
왜 WAS가 필요할까?
웹 초창기에는 웹 서버만으로도 충분했으나,
시간이 지나면서 데이터베이스에서 정보를 가져오거나, 사용자 입력을 처리하는 동적 웹 페이지가 필요해졌다.
ex) 사용자 로그인
- 사용자가 입력한 ID와 비밀번호를 서버에서 처리하고 결과를 반환해야 해서 단순한 HTML 페이지만 제공하는 웹 서버로는 불가능하다.
즉, 단순 정적 파일 제공만 하던 웹 서버로는 부족해졌고,
사용자의 요청을 처리하고 결과를 동적으로 생성하는 WAS가 등장하게 됨
WAS의 주요 역할
- 서블릿 컨테이너 기능 제공 → 서블릿, JSP 실행
- 비즈니스 로직 실행 → 로그인, 데이터 처리, API 응답 등
- 데이터베이스 연동 → MySQL, PostgreSQL 등과 연결
- 세션/쿠키 관리 → 로그인 정보, 사용자 상태 유지
- 트랜잭션 관리 → 데이터 일관성을 유지하는 기능 제공
대표적인 WAS 종류
- Tomcat: 가장 많이 사용되는 오픈소스 WAS, 가볍고 서블릿 컨테이너 역할
- JBoss(WildFly): Java EE 지원, 엔터프라이즈 환경에서 사용
- WebLogic: Oracle에서 제공하는 상용 WAS, 대기업에서 사용
- WebSphere: IBM에서 제공하는 대규모 WAS 솔루션
- Resin: 빠른 속도와 경량화된 성능이 특징
WAS는 어떻게 동작할까?
- 사용자 요청
- 웹 서버가 요청을 받음 (단순 요청이면 바로 응답 / 동적 요청이면 WAS로 전달)
- WAS가 요청 처리
- WAS에서 생성한 결과를 웹 서버가 받아서 최종 응답 반환
WAS도 정적 컨텐츠를 제공할 수 있는데 웹 서버가 따로 필요한 이유는 무엇일까?
WAS가 너무 많은 역할을 담당하면 과부하 될 수 있다.
웹 서버를 따로 분리하면 WAS는 중요한 애플리케이션 로직에 집중할 수 있으며, 웹 서버는 정적 리소스를 처리하면서 업무 분담이 가능하다.
또한, 시스템 리소스를 효율적으로 관리할 수 있다.
정적 컨텐츠가 많이 사용되는 경우에는 웹 서버를 증설하고, 애플리케이션 자원이 많이 사용되면 WAS를 증설하면 된다.
이외에도 로드 밸런싱을 하거나, 캐싱 및 압축, HTTPS 등을 웹 서버에서 처리하도록 할 수 있다.
웹 서버와 WAS의 조합
일반적으로 정적 컨텐츠는 Nginx, 동적 요청 처리는 WAS(Tomcat 등)와 함께 운영하는 방식으로 많이 쓰인다.
- Nginx + Tomcat: 성능과 확장성을 고려한 일반적인 조합
- Apache + JBoss/WebLogic: 엔터프라이즈 환경에서 자주 사용
- IIS + .NET WAS: Windows 환경에서 사용
정리
웹 서버 → 정적 리소스 제공 (HTML, CSS, JS, 이미지) / 빠르고 가벼운 응답
WAS → 동적 요청 처리 (로그인, 데이터 조회, API 응답) / 데이터베이스 연동, 사용자 요청 처리
웹 서버와 WAS를 함께 사용 → 성능 최적화 + 부하 분산 + 보안 강화
'📅 매일매일 CS' 카테고리의 다른 글
HTTP vs HTTPS: HTTPS의 동작 원리 (0) | 2025.02.18 |
---|