웹 서버
- HTTP 기반으로 동작
- 정적 리소스
제공 ( 정적 HTML, CSS, JS, 이미지, 영상 등 )
- 기타 부가 기능
- ex NGINX
, APACHE
웹 애플리케이션 서버(WAS)
- HTTP 기반으로 동작
- 정적 리소스 제공
- 동적 리소스 제공 ( 동적 HTML, HTTP API(JSON), 서블릿, JSP, 스프링 MVC 등 )
- 프로그램 코드를 실행해서 애플리케이션 로직
수행
- 서블릿 컨테이너
기능 제공
- 멀티 쓰레드 처리 지원
- ex Tomcat
, Jetty
, Undertow
서블릿
- urlPatterns
의 URL 이 호출되면 서블릿 코드가 실행
- HTTP 요청/응답 정보를 편리하게 사용하는 HttpServletRequest/Response 제공
- HTTP 스펙을 편리하게 사용하도록 도와줌
서블릿 컨테이너
- 서블릿 객체를 생성 / 초기화 / 호출 / 종료하는 생명주기를 관리
- 서블릿 객체를 싱글톤으로 관리
- JSP 도 서블릿으로 변환되어 사용
- 멀티 쓰레드
처리 지원
서블릿 컨테이너가 처리해주는 일
1. 서버 TCP/IP 연결 대기, 소캣 연결
2. HTTP 요청 메시지 파싱하여 읽기
3. POST 방식, /save URL 인지
4. Content-Type 확인
5. HTTP 메시지 바디 내용 파싱
6. 저장 프로세스 실행
7. 비즈니스 로직 실행, DB 에 저장 요청
8. HTTP 응답 메시지 생성 (시작 라인, Header, 메시지 바디)
9. TCP/IP 응답 전달, 소캣 종료
7번을 제외한 모든 일을 서블릿 컨테이너가 대신 처리 해 준다.
WAS | ||||
웹 브라우저 | localhost:8080/hello → → → → → ← ← ← ← ← hello world |
request : 새로 생성 | 실행 → → → → → request response ← ← ← ← ← 종료 |
서블릿 컨테이너 |
response : 새로 생성 | helloServlet : 싱글톤 | |||
request : 새로 생성 | ||||
response : 새로 생성 | ||||
... |
웹 시스템 구성
클라이언트 | → ← |
Web Server (HTML, CSS, JS) (이미지) |
→ ← |
WAS (애플리케이션 로직) |
→ ← |
DB |
- 정적 리소스는 웹 서버, 동적 리소스는 WAS 가 처리
- 사용 리소스에 따라 서버 증설에 용이하여 효율적인 리소스 관리가 가능
- 정적 리소스만 제공하는 웹 서버가 잘 죽지 않아, WAS / DB 장애 시 오류 화면 제공 가능
서버 사이드 렌더링(SSR)
- 서버에서 최종 HTML 을 생성하여 클라이언트에게 전달
- 정적인 화면에 사용
- 백엔드 개발자
- 관련 기술 JSP
, 타임리프
클라이언트 사이드 렌더링(CSR)
- JS 를 사용하여 HTML 결과를 클라이언트에서 동적으로 생성하여 적용
- 동적인 화면에 사용
- 프론트엔드 개발자
- 관련 기술 React
, Vue.js
> 참고 <
React
, Vue.js
를 CSR + SSR 동시에 지원하는 웹 프레임워크도 있다.
출처 | 스프링 MVC 1(김영한) - 인프런
'💠프로그래밍 언어 > Java' 카테고리의 다른 글
[Spring] MVC 패턴이 등장하게 된 이유 !! (feat. 서블릿, JSP) (1) | 2025.03.14 |
---|---|
[Spring] 서블릿의 HttpServletRequest 와 HttpServletResponse 란?? (1) | 2025.03.13 |
[Spring] 프로토타입 빈, request 빈에 대해 ! (Provider, 프록시) (1) | 2025.02.28 |
[Spring] 빈 생명주기 콜백 (@PostConstruct, @PreDestroy) (0) | 2025.02.26 |
[Spring] 특정 타입의 빈을 동적으로 가져오는 방법 (0) | 2025.02.26 |