Java/Spring

SpringMVC (1) - WAS와 WebServer

태감새 2023. 4. 19. 23:41

목표

  • 클라이언트 요청 시 응답을 받기까지 흐름 이해하기.
  • WAS와 WebServer의 개념과 차이점 이해하기.
  • WAS가 있어도 WebServer를 같이 사용하면 좋은점 이해하기.

클라이언트-서버 통신

클라이언트-서버-DB


기본적인 통신 구조이다. 클라이언트는 서버에 필요한 요청을 보내고 서버는 DB에 저장된 데이터를 이용하여 수신한 요청을 처리하고 응답을 반환한다. 이러한 기본적인 서버 역할을 하는 서버를 웹서버라고 한다. 그럼 웹서버가 있는데 WAS는 왜 존재하는 것일까?

WAS vs WebServer

전체


우선 웹서버와 WAS의 역할을 먼저 정의해보겠다.

WebServer

클라이언트에게 HTTP 요청을 받아 정적인 컨텐츠를 제공하는 서버

  • 정적인 컨텐츠는 WAS를 거치치 않고 바로 자원을 제공함
  • 동적인 컨텐츠 요청을 받으면 WAS에 위임하고, WAS에게서 받은 응답을 클라이언트로 전달
  • ex. Apache, Nginx

WAS(Web Application Server)

DB조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하는 서버
웹 컨테이너 또는 서블릿 컨테이너라고도 불림

  • 프로그램 실행 환경과 DB 접속 기능 제공
  • 여러 트랜잭션 관리 기능
  • 비즈니스 로직 수행
  • ex. Tomcat, Jeus

WAS만 사용하면 안될까?

사실은 WAS에는 WebServer가 있다. 굳이 WAS 앞에 WebServer를 두지않고 WAS가 모든 작업을 처리하면 안될까? WebServer를 사용하면 얻을 수 있는 이점이 몇 가지 있다.

기능 분리로 서버 부하 방지

  • 정적인 컨텐츠와 동적인 컨텐츠를 담당하는 서버를 분산시킴으로써 각자의 기능에 더 집중할 수 있다.
  • 물리적으로 보안 강화
    • SSL에 대한 암복호화 처리에 WebServer 사용
    • WAS와 클라이언트가 직접적으로 연결되지 않음
  • 여러대의 WAS사용 가능
    • LoadBalancing을 위해서 WebServer를 사용

정리

클라이언트의 요청은 다음의 순서로 전달된다.

요청 -> 웹서버 -> WAS -> DB

정적인 컨텐츠인 경우는 웹서버에서 응답을 처리하고 동적인 경우는 WAS에서 처리하여 응답을 전달한다. WAS만 사용해도 서버로 작동은 하지만 WebServer와 함께사용하면 이점이 있기때문에 같이 사용하고 있다.

 

새롭게 배운 내용

지금까지 Nginx가 WebServer인지 몰랐다. 그냥 분산 서버의 LoadBalancing을 도와주는 역할을 가진 친군줄 알았는데 아니였다. 추가적으로 LoadBalancing을 웹서버에서 한다는 점도 오늘 정리하면서 알게되었다.


다음글 

 

SpringMVC (2) - Servlet Container와 Spring Container

목표 Servlet이 뭔지 알고 Servlet Container 동작방식 이해하기 Front Controller의 개념 이해하기 Spring Container와 Bean 이해하기 Bean을 등록하는 방법 알기 Servlet Container 이전 글에서 WAS에 대해서 알아보았다

han98-dev.tistory.com

 

SpringMVC (3) - SpringMVC

목표 dispatcherServlet 이해하기 SpringMVC 패턴의 흐름 이해하기 각각의 요소가 무슨 역할을 하고 왜 있는지 이해하기 DispatcherServlet 앞선 포스팅에서 FrontController를 구현하여 모든 요청을 받을 다음에

han98-dev.tistory.com

 

참고

'Java > Spring' 카테고리의 다른 글

[Spring] Github Action 적용하기 (+ properties 추가)  (0) 2023.04.23
SpringMVC (2) - Servlet Container와 Spring Container  (0) 2023.04.20
스프링 배치 이해하기  (0) 2023.04.18
애너테이션  (0) 2023.02.05
스프링 컨테이너  (0) 2023.02.05