Web server 와 WAS 의 차이점
▶ Web Server
사용자에게 HTML페이지나 jpg, png같은 이미지를 HTTP프로토콜을 통해 웹 브라우저에 제공하는 서버로
내부의 내용이 이미 만들어져 있는 정적인 요소들을 화면에 보여주는 역할을 함
✓ Web Server의 종류
- Apache : Apache Software Foundation에서 만든 서버로 HTTP통신에 대한 여러 라이브러리 제공
- Windows IIS : Window OS에서 제공하는 웹 서버로 높은 수준의 보안성과 성능 제공
- NGINX : 무료 오픈 소스 서버로 사용자 요청을 스레드가 아닌
확장성이 있는 이벤트 기반 설계로 리소스만 할당해 사용
예시 : 회사 홈페이지, 블로그, 뉴스 사이트 등
▶ WAS
Web Application Server의 약자로 사용자가 요청한 서비스의 결과를
스크립트 언어 등으로 가공하여 생성한 동적인 페이지를 사용자에게 보여주는 역할
✓ WAS의 종류
- tomcat : Apache Software Foundation에서 Servlet과 JSP를 통한
동적인 웹 문서를 처리하기 위해 만든 웹 애플리케이션 서버
- wildfly : Jboss라고도 불리며 톰캣이 제공하는 Servlet Container 뿐만 아니라
EJB Container를 별도로 제공하여 폭 넓은 서비스 구현
- jeus : 국산 WAS, 대용량 데이터 트랜잭션을 고성능으로 처리하며
개발 및 운영에 관한 기술 지원이 뛰어남
예시 : 온라인 쇼핑몰, 은행 인터넷 뱅킹, SNS 등
▶ Web Server VS WAS
실제 웹 서비스 환경에서는 웹 서버와 WAS 서버가 협업하여 작동합니다.
일반적으로 웹 서버는 정적 콘텐츠를 처리하고 WAS 서버는 동적 콘텐츠를 처리하는 역할을 맡아,
사용자에게 원활하고 다양한 웹 서비스를 제공하게 됩니다.
이를 통해 웹 사이트의 로딩 속도와 서비스 품질이 향상되며, 웹 애플리케이션의 성능이 개선됩니다.
▶ 웹 서버와 WAS 서버의 활용 사례
실제 웹 서비스에서는 웹 서버와 WAS 서버가 함께 사용되는 경우가 많습니다.
대표적인 활용 사례로는 다음과 같은 것들이 있습니다.
- 온라인 쇼핑몰 : 사용자가 상품을 검색하거나 장바구니에 담는 등의 동적인 작업을 WAS 서버에서 처리하고, 상품 이미지나 스타일 정보 등 정적 콘텐츠를 웹 서버에서 제공합니다.
- 온라인 커뮤니티 : 게시판 글 작성, 댓글 달기 등 동적인 기능은 WAS 서버에서 처리하고, 게시글 내용이나 이미지 등 정적 콘텐츠는 웹 서버에서 제공합니다.
1. Web Server는 웹 브라우저 클라이언트로부터 HTTP 요청을 받는다.
2. Web Server는 클라이언트의 요청(Request)을 WAS에 보낸다.
3. WAS는 관련된 Servlet을 메모리에 올린다.
4. WAS는 web.xml을 참조하여 해당 Servlet에 대한 Thread를 생성한다. (Thread Pool 이용)
5. HttpServletRequest와 HttpServletResponse 객체를 생성하여 Servlet에 전달한다.
5-1. Thread는 Servlet의 service() 메서드를 호출한다.
5-2. service() 메서드는 요청에 맞게 doGet() 또는 doPost() 메서드를 호출한다.
6. protected doGet(HttpServletRequest request, HttpServletResponse response)
7. doGet() 또는 doPost() 메서드는 인자에 맞게 생성된 적절한 동적 페이지를 Response 객체에 담아 WAS에 전달한다.
8. WAS는 Response 객체를 HttpResponse 형태로 바꾸어 Web Server에 전달한다.
9. 생성된 Thread를 종료하고, HttpServletRequest와 HttpServletResponse 객체를 제거한다.