[Web] WAS란? 동적 / 정적 콘텐츠, Tomcat 요청 처리 과정
0. 정적 - 동적 컨텐츠와 Web Server - WAS
- 정적 컨텐츠 (Static Contents)
• 요청 받은 파일 경로에 따라 항상 동일한 file contents를 반환
• ex) index.html, cat.jpg, style.css, hello.js
• Web Server는 정적 컨텐츠를 반환한다
(대표적인 Web Server 종류 : Apache, Nginx 등)
- 동적 컨텐츠 (Dynamic Contents)
• 파라미터의 내용에 맞는 동적인 contents(프로그램의 결과물)를 반환
• WAS는 DB 조회, 로직 처리 등의 프로그램을 통해 처리한 동적 컨텐츠를 반환한다
(대표적인 WAS 종류 : Tomcat)
1. WAS 란?
Web Application Server
- DB 조회, 로직 처리 등을 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application Server
- Web Container, Servlet Container 라고도 불린다
• Container : JSP, Servlet을 실행시킬 수 있는 소프트웨어
- WAS의 주요 기능
• 프로그램 실행 환경과 DB 접속
• 여러 트랜잭션 관리
• 업무 처리 비즈니스 로직 수행
- WAS에서 Web Server의 기능을 처리할 수 있지만 하지만 WAS에 트래픽이 몰려 부담이 커지기 때문에,
WAS 와 Web Server를 분리하는 것이 효율적
• 단순 정적 컨텐츠는 Web Server가 빠르게 클라이언트에게 제공
• Web Server에 여러 대의 WAS를 연결 가능 → Web Server의 Load Balancing, fail over / back 등 역할
• 현재는 WAS가 가진 Web Server도 정적 컨텐츠 처리에 성능상 큰 차이가 없다
2. Tomcat 구조 및 요청 처리 과정
1. Client가 8080 포트로 요청
2. Tomcat 서버의 Thread Pool 중 한가한 Thread 하나가 요청을 맡아 처리
- 미리 Thread Pool을 만들어두어 요청이 들어올 때 Thread를 만들 필요 없음
3. Tomcat 내 Service의 Connector가 프로토콜에 따라 Engine에 요청을 전달
- HTTPRequestProcessor에서 Request, Response를 생성하여 전달
4. Engine - Host - Context - Servlet 전달 및 처리
- Engine(Catalina) 내 Domain Name이 다른 여러 개의 Host가 가능하다 (보통은 1개의 Host)
- Host 내 여러 개의 Context
• Context : 하나의 Web Application (*.war 파일의 형태로 배포)
- Context 내 여러 개의 Sevlet
• Servlet : 작은 서버 프로그램 (서버에서 실행되는 프로그램)
• Servlet(Dispatcher Servlet) → Controller → Main method
5. 작업 결과를 Client에 전달
📌 References
- https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
[Web] Web Server와 WAS의 차이와 웹 서비스 구조 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io