• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

서블릿 컨테이너 / WAS 차이

22.10.06 13:44 작성 조회수 497

2

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

다른 분들이 질문하셨던 내용이지만 아직도 이해가 잘 되지 않아 잘문드립니다

제가 알기로는 was, 웹 애플리케이션 서버는 웹 서버 + 서블릿 컨테이너로 구성되어 있다고 알고 있습니다.

또, 한편으로는 톰캣처럼 서블릿을 지원하는 was를 서블릿 컨테이너라고 알고 있습니다.

그렇다면 결국 was와 서블릿 컨테이너의 의미가 중복되는 것 아닌가요?

was는 웹 서버와 서블릿 컨테이너로 구성되어 있고, 이 중 서블릿 컨테이너는 또 서블릿을 지원하는 was라는 건가? 싶어서 질문드립니다.

그리고 영한 님이 주신 자료에서는 웹 애플리케이션 구성이 웹 애플리케이션 서버와 서블릿 컨테이너로 나뉘어 있는데, 아래쪽 웹 애플리케이션 서버를 웹 서버로 수정하여 인식하면 될까요?

마지막으로 전체적인 흐름을 본다고 할 때

1) 사용자가 localhost:8080/hello 호출

2) 서블릿 컨테이너에서 request, response 객체를 만들어줌 (그림에는 아래쪽 웹 애플리케이션 서버에서 만들어지는데, 웹 애플리케이션 서버를 웹 서버로 고친다면 웹 서버에서 만들어지는 건가요..?)

3) 서블릿 컨테이너 안에 있는 쓰레드가 request, response를 인자로 하여 서블릿 객체 호출

4) request 객체를 이용해 로직 수행

5) 응답 결과를 response에 담고 서블릿 컨테이너에 전달

6) 서블릿 컨테이너가 응답 메시지 생성 후 클라이언트에게 전달

이 흐름으로 이해하면 될 지 궁금합니다..😭

254E35FB-C1F7-4981-9F2B-53CBB45DA627.jpeg04A4FB92-B9F2-4B37-B8C7-2101F92A19B4.jpeg

답변 2

·

답변을 작성해보세요.

1

devholic님의 프로필

devholic

질문자

2022.10.07

감사합니다. 그러면 영한 님이 말씀하신 웹 애플리케이션 서버 이름 두 가지를 어떻게 구분하면 될까요? (톰캣 로고가 있는 웹 애플리케이션 서버 부분과 그 안쪽에 들어있는 웹 애플리케이션 서버를 어떻게 구분하면 될 지 궁금합니다.)

최찬혁님의 프로필

최찬혁

2022.10.19

찬횩이도 궁금해영 ༼ つ ◕_◕ ༽つ

1

codesweaver님의 프로필

codesweaver

2022.10.07

안녕하세요, Hyunjoon Choi 님! 공식 서포터즈 codesweaver 입니다.

WAS와 서블릿 컨테이너는 아래 관계로 보시면 될 것 같아요.

모든 WAS가 서블릿 컨테이너는 아닙니다. 그러나 서블릿 컨테이너면 WAS 인 관계입니다.image

웹은 태생적으로 논문(=변하지 않는 고정된 문서, 파일)을 쉽게 읽기 위해 개발한 기술입니다.

그래서 사용자가 요청한 파일을 그대로 전달하는 서버를 사용했습니다. (이것이 '웹 서버')

 

후에 웹이 발달하며 사용자의 상황에 따라 동적으로 바뀌는 문서를 제공해야 했고,

이런 기능을 하는 별도의 특화 서버를 사용하는데, 이 서버를 'WAS(웹 어플리케이션 서버)'라고 합니다.

WAS 중에서 '자바 서블릿' 을 지원 하는 서버를 '서블릿 컨테이너' 라고 부르기도 합니다.

 

그리고 WAS는 '웹 서버'의 역할도 할 수 있습니다.

웹 서버와 WAS 가 분리된 상황에서 사용자 요청은 대략 다음과 같은 순서를 따릅니다.

1 사용자가 상품리스트를 웹 서버에 요청.

2 웹 서버는 이 요청을 WAS에 위임

3 서블릿 컨테이너는 웹 서버가 위임한 요청을 기반으로 request, response 객체 생성

4 로직 처리 (이 부분을 바로 웹 개발자가 코딩합니다)

5 WAS가 동적으로 생성한 HTML 문서를 '웹 서버'에 반환

6 웹서버가 HTML 문서를 클라이언트에게 반환

WAS가 웹 서버 역할도 같이 할 경우라면 클라이언트에게 HTML 문서를 반환하는 역할도 합니다.
감사합니다.