🗄️ Backend/Linux

배포 회고록: Web 서버 vs WAS, 제대로 이해하기

hjwjo 2025. 8. 26. 23:22

🚀 배포 회고록: Web 서버 vs WAS, 제대로 이해하기

 

신규 프로젝트를 배포하던 날이었습니다.
아키텍처는 단순했죠.

  • WAS 서버: Tomcat + MySQL, war 파일 배포
  • Web 서버: Nginx 설치, 정적 파일 처리 + 리버스 프록시

Tomcat이 돌아가는 WAS 서버에 Nginx를 설치해 버린 겁니다. 😅

“어차피 Nginx도 필요하잖아? 그냥 여기 깔면 되지 않을까?”
→ 이렇게 생각했던 게 화근이었죠.

결과는?

  • 정적 리소스 요청이 꼬이고,
  • Tomcat과 Nginx가 같은 포트를 두고 충돌하고,
  • DB 연결까지 지연되는 대참사 발생.

그제서야 저는 Web 서버와 WAS의 차이를 명확히 이해하지 못했다는 걸 뼈저리게 깨달았습니다.


2. Web 서버란? (Nginx, Apache)

Web 서버는 말 그대로 정적 컨텐츠를 제공하는 서버입니다.
여기서 “정적”이란 변하지 않는, 그냥 파일 그대로의 응답을 말합니다.

예를 들면:

  • HTML, CSS, JS
  • 이미지(.jpg, .png)
  • 동영상(.mp4)

Web 서버는 이런 요청을 처리하는 데 최적화되어 있어서, 속도도 빠르고 자원 소모도 적습니다.

대표적인 Web 서버

  • Nginx: 요즘 가장 많이 쓰이는 서버. 리버스 프록시, 로드 밸런싱, 정적 파일 처리에 특화.
  • Apache HTTP Server: 전통 강자. 모듈 기반으로 확장성이 뛰어나지만, 대규모 트래픽에서는 Nginx에 밀리는 추세.

👉 핵심 포인트:
Web 서버는 클라이언트 요청을 받아,

  1. 정적 파일은 즉시 응답하고,
  2. 동적 요청은 뒤에 있는 WAS로 전달해줍니다.

3. WAS란? (Tomcat, WebLogic, Jeus)

WAS (Web Application Server)는 이름 그대로 애플리케이션이 돌아가는 서버입니다.
여기서는 동적 컨텐츠를 처리합니다.

즉, 요청마다 결과가 달라지는 로직들:

  • 로그인/회원가입
  • 게시판 글쓰기/조회
  • 장바구니/결제
  • DB CRUD

대표적인 WAS

  • Tomcat: 오픈소스, 가장 대중적. 서블릿 컨테이너로 JSP/Servlet 기반 동작.
  • WebLogic, Jeus, JBoss: 대규모 기업 환경에서 사용되는 상용 WAS.

👉 핵심 포인트:
WAS는 비즈니스 로직 실행 + DB 연동 + 동적 HTML 생성을 담당합니다.


4. Web 서버와 WAS, 왜 따로 둘까?

여기서 궁금한 점,

“아니, Tomcat(WAS)도 정적 파일 서빙 가능한데, 왜 굳이 Nginx(Web 서버)를 따로 두는지?"

답은 역할 분리에 있습니다.

(1) 성능 최적화

정적 파일은 Web 서버가 훨씬 빠르고 가볍게 처리합니다.
Tomcat이 굳이 CSS나 JS까지 처리하면, DB 연결 같은 중요한 로직에 쓸 자원이 줄어듭니다.

(2) 안정성 (로드 밸런싱)

Nginx 같은 Web 서버는 여러 대의 Tomcat 서버로 트래픽을 분산(로드 밸런싱)시킬 수 있습니다.
한 WAS가 죽어도 다른 WAS로 연결을 넘겨, 서비스 중단을 막습니다.

(3) 보안

WAS는 보통 DB와 연결되어 있어 민감한 로직을 다룹니다.
만약 Tomcat이 외부에 직접 노출된다면 공격자가 바로 DB까지 노릴 수 있고,
그래서 Nginx(Web)를 앞단에 세워 요청을 필터링하고, WAS는 내부망에서만 돌도록 하는..?


5. 요청 흐름도 (정리)

마지막으로, 실제 요청이 어떻게 흘러가는지 보겠습니다.

  1. 클라이언트(브라우저)가 요청 → https://hjwjo.com/mypage
  2. Nginx(Web 서버)가 요청 받음
    • 정적 파일이면: 바로 응답
    • 동적 요청이면: WAS로 전달
  3. Tomcat(WAS)이 로직 처리
    • DB(MySQL)에서 유저 정보 조회
    • JSP/Servlet으로 HTML 생성
    • 결과를 다시 Nginx에 반환
  4. Nginx(Web 서버)가 결과 페이지를 최종적으로 클라이언트에게 응답

  • Web 서버(Nginx) = 정적 파일 처리, WAS 앞단에서 로드 밸런싱·보안 담당
  • WAS(Tomcat) = 비즈니스 로직 실행, DB 연동, 동적 페이지 생성
  • Web 서버 = 안내 데스크 (정적 응답, 보안, 트래픽 분산)
  • WAS = 메인 셰프 (동적 응답, DB 연동, 로직 처리)