인프런 커뮤니티 질문&답변

Won Ders님의 프로필 이미지

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

웹 서버, 웹 애플리케이션 서버

웹서버와 WAS의 정확한 구별이 어렵습니다.

작성

·

1.2K

1

다른 분들의 유사 질문글들을 읽어 보았는데요.

"react, vue의 빌드된 파일은 정적 파일이기 때문에 웹 서버에 올리는 것이고 ..." 

라는 답변글을 보았습니다.

그렇게 되면 타임리프나 jsp를 이용하여 

오직 SSR방식으로 웹을 개발한다고 할 경우

jsp는 결국 java파일로 변환되니 WAS로 일괄 실행되는것으로 이해하였고요,

타임리프의 경우는 정적 html 파일은 그대로 간직하기 때문에 

어딘가에는 이를 따로 보곤활 웹 서버가 필요할거란 생각이 드는데요.

스프링 부트는 결국 WAS를 이용해 돌리는거기 때문에 

이해를 돕기위해 큰 추상적인 개념으로

'스프링 부트 == WAS '이렇게 이해했습니다.

그렇다면 Web Server는 정적 리소스들을 모아주는

'무엇'이라고 이해하면 될까요?

 Web Server == ???

스프링부트 플젝 내부 경로 src/main/resources....에서

정적 파일들을 모아주는 /static  이 경로가  Web Server를 의미하는걸까요? 

또는 /templates 일까요?

그런데 김영한 팀장님께서는 WAS가 죽어버리면 제대로 된 에러페이지 조차 보여줄 수 없다고 하셔서 spring은 Web Server가 될 수 없는것 같습니다..

 

감사합니다.

 

답변 1

5

안녕하세요. Won Ders님, 공식 서포터즈 David입니다.

1. 타임리프의 template으로 사용되는 html은 정적파일로 보지 않습니다. 타임리프에 의해 동적(데이터에 따라 다르게)으로 가공되어 사용자에게 전달되기 때문입니다.

2. 스프링 부트 자체가 WAS는 아닙니다. 스프링 부트가 WAS 역할을 하는 embedded tomcat을 내장하고 있기 때문에 WAS처럼 생각하시는 것 같습니다.

3. 웹서버는 정적 리소스를 제공하는 역할이라고 보시면 됩니다. WAS의 경우 웹서버 역할도 할 수 있습니다. 다만, WAS의 경우 핵심 비즈니스 로직을 처리해야 하므로 애플리케이션의 규모가 커지면 정적파일들을 분리하여 웹서버에서 제공하게끔 구조를 변경할 필요가 있습니다.

4. 스프링 부트는 static 내 위치한 파일은 정적파일로, templates 내에 위치한 파일을 동적파일로 인지하여 처리하도록 설정되어 있습니다. 정확히는 embedded tomcat이 그렇게 처리합니다.

5. WAS는 웹 애플리케이션을 실행시킵니다. 보통 서버 에러의 경우 웹 애플리케이션 내 로직을 수행중 발생한 에러인데, WAS가 죽으면 웹 애플리케이션과 관련된 정보(ex. 에러)를 제공할 방법이 없습니다. 그래서 일반적으로 웹서버에서는 WAS가 다운됬을 때 이를 감지하여 웹서버 내 만들어져있는 임시 에러 페이지를 제공하곤 합니다.

감사합니다.

Won Ders님의 프로필 이미지

작성한 질문수

질문하기