Web Application Server(WAS)
HTTP 기반 동작
웹 서버 기능 포함(정적 리소스 제공)
프로그램 코드 실행해서 애플리케이션 로직 수행
>> 동적 HTML, HTTP API(JSON)
>> 서블릿, JSP, 스프링 MVC
웹 시스템 구성 - WEB, WAS, DB
정적 리소스 웹 서버가 처리
애플리케이션 로직 같은 동적 처리가 필요
>> WAS 전담
효율적 리소스 관리
>> 정적 리소스 많이 사용되면 WEB 서버 증설
>> 애플리케이션 리소스 많이 사용되면 WAS 증설
WAS, DB 장애시 WEB 서버가 오류 화면 제공 가능
서블릿
HTTP 요청시
>> WAS는 Request, Response 객체를 새로 만들어 서블릿 객체 호출
>> 개발자는 Request 객체에서 HTTP 요청 정보를 편리하게 꺼내 사용
>> 개발자는 Response 객체에 HTTP 응답 정보를 편리하게 입력
>> WAS는 Response 객체에 담겨있는 내용으로 HTTP 응답 정보 생성
서블릿 컨테이너 : 톰캣 처럼 서블릿을 지원하는 WAS
>> 서블릿 객체 생성, 초기화, 호출, 종료하는 생명주기 관리
서블릿 객체 싱글톤 관리
>> 요청마다 객체 생성하는 것, 비효율
>> 최초 로딩 시점에 서블릿 객체 미리 만들고 재활용
>> 동일한 서블릿 객체 인스턴스 접근
>> 공유 변수 사용 주의
>> 서블릿 컨테이너 종료시 함께 종료
JSP도 서블릿으로 변환 사용
동시 요청을 위한 멀티 쓰레드 처리 지원
쓰레드
애플리케이션 코드를 하나하나 순차적으로 실행하는 것
쓰레드가 없다면 자바 애플리케이션 실행 불가능
쓰레드는 한번에 하나의 코드 라인만 수행
>> 동시 처리 필요시 쓰레드 추가 생성
장점
>> 동시 요청 처리 가능
>> 리소스(CPU, 메모리) 허용할 때까지 처리 가능
>> 하나의 쓰레드 지연되어도 나머지는 정상 동작
단점
>> 쓰레드 생성 비용 비쌈
>> 컨텍스트 스위칭 비용 발생
>> 생성에 제한이 없어서 CPU, 메모리 임계점을 넘으면 서버가 죽을 수 있음
쓰레드 풀
필요한 쓰레드를 쓰레드 풀에 보관하고 관리
쓰레드 풀에 생성 가능한 쓰레드의 최대치 관리
>> 톰캣은 최대 200개 기본 설정
쓰레드 필요시, 이미 생성되어 있는 쓰레드를 풀에서 꺼내서 사용
>> 사용 종료시, 풀에 반납
>> 최대 쓰레드가 모두 사용중이어서 풀에 쓰레드가 없으면 요청을 거절하거나 대기하도록 설정 가능
장점
>> 미리 생성되어 있어서 쓰레드 생성, 종료 비용이 절약되고 응답 시간 빠름
>> 생성 가능한 최대치가 있어서 너무 많은 요청이 와도 기존 요청 안전히 처리 가능
정적 리소스
고정된 HTML 파일, CSS, JS, 이미지, 영상 등 제공
주로 웹 브라우저
HTML 페이지
동적으로 필요한 HTML 파일 생성 전달
웹 브라우저 : HTML 해석
HTTP API
HTML이 아닌 데이터 전달(주로 JSON 사용)
다양한 시스템에서 호출
데이터만 주고 받음, UI 화면이 필요하면 클라이언트가 별도 처리
UI 클라이언트 접점
>> 앱 클라이언트(아이폰, 안드로이드, PC 앱)
>> 웹 브라우저에서 자바 스크립트를 통한 호출
>> React, Vue.js 같은 웹 클라이언트
서버 to 서버
>> 주문 서버 에서 결제 서버
>> 기업간 데이터 통신
서버 사이드 렌더링(SSR)
서버에서 최종 HTML 생성해서 클라이언트에 전달
주로 정적인 화면에 사용
관련기술 : JSP, 타임리프 (백엔드)
클라이언트 사이드 렌더링(CSR)
HTML 결과를 자바 스크립트를 사용해 웹 브라우저에서 동적으로 생성 적용
주로 동적인 화면에 사용
>> 웹 환경을 마치 앱처럼 필요한 부분부분 변경 가능
관련기술 : React, Vue.js (웹 프론트엔드)
출처 : 김영한, 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
'Spring' 카테고리의 다른 글
MVC / 서블릿, JSP, MVC 패턴 (0) | 2025.04.02 |
---|---|
MVC / 서블릿 (0) | 2025.04.01 |
Spring / 빈 스코프 (0) | 2025.03.29 |
Spring / 의존관계 자동 주입 (0) | 2025.03.24 |
Spring / 컴포넌트 스캔 (0) | 2025.03.24 |