Spring

MVC / 웹 애플리케이션 이해

Dear-J 2025. 3. 31. 19:46

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