Notice
Recent Posts
Recent Comments
Link
꾸준한 개발일기
웹 서버와 WAS를 분리하는 이유는? 본문
반응형
1. Web 서버와 WAS 서버의 정의
✅ Web 서버 (Web Server)
- 클라이언트(브라우저)의 요청을 받아 정적인 HTML, CSS, JavaScript, 이미지 등의 정적 리소스를 제공하는 서버
- 대표적인 웹 서버: Apache HTTP Server, Nginx, Microsoft IIS
- 일반적으로 HTTP 요청을 처리하며, 사용자가 요청한 페이지를 반환하는 역할 수행
✅ WAS (Web Application Server)
- 동적인 로직을 처리하는 서버로, 사용자의 요청을 받아 비즈니스 로직을 수행한 후 결과를 반환
- 데이터베이스와 연동하여 사용자의 요청에 따라 동적으로 페이지를 생성함
- 대표적인 WAS: Tomcat, JBoss, WebSphere, WebLogic
- Java 기반 WAS의 경우 Servlet, JSP, Spring 등의 웹 애플리케이션 실행을 담당
2. Web 서버와 WAS의 연관성
웹 서버와 WAS는 서로 협력하여 웹 서비스를 제공하는 역할을 한다.
일반적인 구조는 아래와 같음:
🔹 1) 클라이언트 (브라우저) 요청
→ 웹 서버(Nginx, Apache)에서 정적 자원 제공
🔹 2) 동적 요청 (ex: 로그인, 데이터 조회 등)
→ 웹 서버가 WAS(Tomcat, WebLogic)로 요청 전달
🔹 3) WAS에서 비즈니스 로직 수행 후 응답 반환
→ DB에서 데이터를 조회하고 결과를 웹 서버에 전달
🔹 4) 웹 서버가 응답을 클라이언트에 반환
💡 즉, 웹 서버는 요청을 정리해서 WAS로 넘기고, WAS는 비즈니스 로직을 수행한 뒤 결과를 웹 서버를 통해 반환하는 구조임.
3. 웹 서버와 WAS를 분리하는 이유
✅ 1) 성능 최적화
- 정적 리소스는 웹 서버가 처리하고, WAS는 동적 로직만 처리하여 부하를 분산함.
- 예를 들어, Nginx가 정적 리소스를 처리하고 Tomcat이 동적 요청을 처리하면 WAS 부하를 줄일 수 있음.
✅ 2) 보안 강화
- 외부에서 직접 WAS에 접근하지 못하도록 웹 서버만 외부에 노출하고 WAS는 내부망에서만 실행
- DDoS 공격 등의 보안 위협을 줄일 수 있음
✅ 3) 확장성(Scalability) 증가
- 트래픽이 많아지면 웹 서버를 여러 개 추가하여 로드 밸런싱 가능
- WAS도 여러 개 배포하여 수평 확장(Scaling) 가능
4. 실제 적용 사례
📌 Spring Boot + Nginx + Tomcat 구성
- Spring Boot에서 기본적으로 Tomcat(WAS)이 포함됨
- Nginx를 앞단에 배치하여 정적 파일 제공 및 리버스 프록시 역할 수행
- 예를 들어, https://example.com에 요청이 오면
- /static/* 요청은 Nginx에서 직접 응답
- /api/* 요청은 WAS(Spring Boot)로 전달
📌 대규모 서비스 예시
- 카카오, 네이버 같은 대형 서비스는 Nginx(Apache)를 웹 서버로 사용하고, 내부에 여러 개의 WAS 서버(Tomcat, WebLogic 등)를 배치하여 부하를 분산시킴.
5. 한 줄 요약
✅ 웹 서버는 정적 리소스를 제공하고, WAS는 동적인 로직을 수행하는 서버
✅ 일반적으로 웹 서버가 WAS 앞단에서 요청을 필터링하며 보안 및 성능을 최적화
✅ 부하 분산과 확장성을 위해 Web 서버 + WAS를 함께 사용하는 것이 일반적
🔥 즉, Nginx + Tomcat과 같은 구조로 웹 서비스를 운영하면 성능과 보안이 강화됨! 😊
반응형
Comments