목차
스프링 웹 MVC
웹 서버, 웹 애플리케이션 서버
- 웹 HTTP : 클라이언트-인터넷-서버
- HTTP 메시지에 모든 것을 전송
- 웹 서버 : 정적 파일 제공
- 웹 애플리케이션 서버(WAS) : 프로그램 코드를 실행해 애플리케이션 로직 수행
- 서블릿 컨테이너 기능을 제공하면 WAS
웹 시스템 구성 - WAS,BD
- 서블릿 컨테이너 기능을 제공하면 WAS
- WAS와 BD만으로 시스템 구성 가능
- 단점
- WAS가 너무 많은 역할을 담당, 서버 과부하
- 장애시 오류화면 노출 불가능
- 오류가 많음(리소스 관리가 어려움)
웹 시스템 구성 - WEB, WAS,BD
- 정적 리소스는 웹 서버가 처리
- 동적인 처리(애플리케이션 로직)는 WAS에게 요청을 위임
- WAS는 중요한 애플리케이션 로직 처리 전담
- 장점
- 효율적인 리소스 관리
- 오류 화면 제공 가능
서블릿
- HTTP 스펙을 매우 편리하게 사용가능
서블릿 HTTP 요청, 응답
- HTTP 요청시
- WAS는 Request, Response 객체를 새로 만들어서 서블릿 객체 호출
- 개발자는 Request 객체에서 요청 정보를 편하게 꺼내서 사용
- 개발자는 Response 객체에 응답 정보를 편하게 입력가능
- WAS는 Response 객체에 담겨있는 내용으로 응답 정보 생성
서블릿 컨테이너
- 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 함
- 객체 생성, 초기화, 호출, 종료하는 생명 주기 관리
- 서블릿 객체는 싱글톤으로 관리
- 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용(요청이 올 때 마다 객체 생성 X)
- 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근
- 동시 요청을 위한 멀티 쓰레드 처리 지원
동시 요청(멀티 쓰레드)
- 애플리케이션 코드를 하나하나 순차적으로 실행하는 것
- 쓰레드는 한번에 하나의 코드 라인만 수행
- 동시 처리가 필요하면 쓰레드를 추가로 처리
요청 마다 쓰레드 생성
- 장정
- 동시에 요청을 처리할 수 있다.
- 리소스가 허용할 때 까지 처리가능
- 하나의 쓰레드가 지연 되어도 나머지 쓰레드는 정상 동작
- 단점
- 쓰레드는 생성 비용이 매우 비싸다.
- 고객 요청이 올 때 마다 쓰레드를 생성하면, 응답 속도가 늦어진다.
- 켄텍스트 스위칭 비용이 발생(쓰레드가 클 수록 커짐)
- 쓰레드 생성에 제한이 없다
- 요청이 너무 많으면, cpu 메모리 임계점을 넘어서 서버거 죽을 수 있다.
쓰레드 풀(요청 마다 쓰레드 생성의 단점 보안)
- 요청이 너무 많으면, cpu 메모리 임계점을 넘어서 서버거 죽을 수 있다.
- 쓰레드는 생성 비용이 매우 비싸다.
- 특징
- 쓰레드를 풀에 보관하고 관리한다.
- 쓰레드의 최대치를 관리
- 사용
- 쓰레드가 필요하면, 이미 생성 되어 있는 쓰레드를 쓰레드 풀에서 꺼내서 사용
- 사용이 끝나면 쓰레드 풀에 반납
- 쓰레드 풀에 쓰레드가 없다면 거절하거나 대기로 설정이 가능
- 장점
- 마리 생성한 쓰레드를 사용해서, 쓰레드 생성, 종료 비용이 절약되고 응답 시간이 빠르다.
- 최대치가 있기 때문에 많은 요청을 안전하게 처리가능
쓰레드 실무 팁
- WAS의 주요 튜닝 포인트는 최대 쓰레드 수이다.
- 너무 낮을 때
- 클라이언트의 응답 지연
- 너무 높을 때
- 임계점 초과로 서버 다운
- 너무 낮을 때
WAS의 멀티 쓰레드 지원
- 멀티 쓰레드에 대한 부분은 WAS가 처리
- 개발자가 멀티 쓰레드 관련 코드를 신경쓰지 않아도 됨
- 멀티 쓰레드 환경이므로 싱글톤 객체(서블릿, 스프링 빈)는 주의해서 사용
HTML, HTTP API, CSR, SSR
정적 리소스
- 웹 브라우저
- 고정된 파일을 제공 (HTML, CSS, JS)
동적 HTML 페이지
- 주문 정보와 같은 동적인 페이지는 WAS를 통해 생성
HTTP API
- HTML이 아니라 데이터 전달
- JSON 형식 사용
- 다양한 시스템에서 호출
서버사이드 렌더링(SSR)
- 서버에서 최종 HTML을 생성해서 클라이언트에 전달
- 주로 정적인 화면에 사용
- JSP, 타임리프
클라이언트 사이드 렌더링(CSR)
- HTML 결과를 자바스크립트를 사용해 웹브라우저에서 동적으로 생성해서 적용
- 주로 동적인 화면
- React
'Java > spring' 카테고리의 다른 글
[Java][Spring][Servrit] HTTP 요청 데이터 (0) | 2023.12.26 |
---|---|
[Java][Spring][Servrit] HttpServletRequest 사용 (1) | 2023.12.26 |
[Java][Spring Boot] 웹 MVC 개발 (0) | 2023.12.16 |
[Java][Spring-Boot] 스프링 빈과 의존관계 (0) | 2023.12.16 |
[Java][Spring Boot] 회원관리 예제 테스트 코드 (0) | 2023.12.15 |
스프링 웹 MVC
웹 서버, 웹 애플리케이션 서버
- 웹 HTTP : 클라이언트-인터넷-서버
- HTTP 메시지에 모든 것을 전송
- 웹 서버 : 정적 파일 제공
- 웹 애플리케이션 서버(WAS) : 프로그램 코드를 실행해 애플리케이션 로직 수행
- 서블릿 컨테이너 기능을 제공하면 WAS
웹 시스템 구성 - WAS,BD
- 서블릿 컨테이너 기능을 제공하면 WAS
- WAS와 BD만으로 시스템 구성 가능
- 단점
- WAS가 너무 많은 역할을 담당, 서버 과부하
- 장애시 오류화면 노출 불가능
- 오류가 많음(리소스 관리가 어려움)
웹 시스템 구성 - WEB, WAS,BD
- 정적 리소스는 웹 서버가 처리
- 동적인 처리(애플리케이션 로직)는 WAS에게 요청을 위임
- WAS는 중요한 애플리케이션 로직 처리 전담
- 장점
- 효율적인 리소스 관리
- 오류 화면 제공 가능
서블릿
- HTTP 스펙을 매우 편리하게 사용가능
서블릿 HTTP 요청, 응답
- HTTP 요청시
- WAS는 Request, Response 객체를 새로 만들어서 서블릿 객체 호출
- 개발자는 Request 객체에서 요청 정보를 편하게 꺼내서 사용
- 개발자는 Response 객체에 응답 정보를 편하게 입력가능
- WAS는 Response 객체에 담겨있는 내용으로 응답 정보 생성
서블릿 컨테이너
- 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 함
- 객체 생성, 초기화, 호출, 종료하는 생명 주기 관리
- 서블릿 객체는 싱글톤으로 관리
- 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용(요청이 올 때 마다 객체 생성 X)
- 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근
- 동시 요청을 위한 멀티 쓰레드 처리 지원
동시 요청(멀티 쓰레드)
- 애플리케이션 코드를 하나하나 순차적으로 실행하는 것
- 쓰레드는 한번에 하나의 코드 라인만 수행
- 동시 처리가 필요하면 쓰레드를 추가로 처리
요청 마다 쓰레드 생성
- 장정
- 동시에 요청을 처리할 수 있다.
- 리소스가 허용할 때 까지 처리가능
- 하나의 쓰레드가 지연 되어도 나머지 쓰레드는 정상 동작
- 단점
- 쓰레드는 생성 비용이 매우 비싸다.
- 고객 요청이 올 때 마다 쓰레드를 생성하면, 응답 속도가 늦어진다.
- 켄텍스트 스위칭 비용이 발생(쓰레드가 클 수록 커짐)
- 쓰레드 생성에 제한이 없다
- 요청이 너무 많으면, cpu 메모리 임계점을 넘어서 서버거 죽을 수 있다.
쓰레드 풀(요청 마다 쓰레드 생성의 단점 보안)
- 요청이 너무 많으면, cpu 메모리 임계점을 넘어서 서버거 죽을 수 있다.
- 쓰레드는 생성 비용이 매우 비싸다.
- 특징
- 쓰레드를 풀에 보관하고 관리한다.
- 쓰레드의 최대치를 관리
- 사용
- 쓰레드가 필요하면, 이미 생성 되어 있는 쓰레드를 쓰레드 풀에서 꺼내서 사용
- 사용이 끝나면 쓰레드 풀에 반납
- 쓰레드 풀에 쓰레드가 없다면 거절하거나 대기로 설정이 가능
- 장점
- 마리 생성한 쓰레드를 사용해서, 쓰레드 생성, 종료 비용이 절약되고 응답 시간이 빠르다.
- 최대치가 있기 때문에 많은 요청을 안전하게 처리가능
쓰레드 실무 팁
- WAS의 주요 튜닝 포인트는 최대 쓰레드 수이다.
- 너무 낮을 때
- 클라이언트의 응답 지연
- 너무 높을 때
- 임계점 초과로 서버 다운
- 너무 낮을 때
WAS의 멀티 쓰레드 지원
- 멀티 쓰레드에 대한 부분은 WAS가 처리
- 개발자가 멀티 쓰레드 관련 코드를 신경쓰지 않아도 됨
- 멀티 쓰레드 환경이므로 싱글톤 객체(서블릿, 스프링 빈)는 주의해서 사용
HTML, HTTP API, CSR, SSR
정적 리소스
- 웹 브라우저
- 고정된 파일을 제공 (HTML, CSS, JS)
동적 HTML 페이지
- 주문 정보와 같은 동적인 페이지는 WAS를 통해 생성
HTTP API
- HTML이 아니라 데이터 전달
- JSON 형식 사용
- 다양한 시스템에서 호출
서버사이드 렌더링(SSR)
- 서버에서 최종 HTML을 생성해서 클라이언트에 전달
- 주로 정적인 화면에 사용
- JSP, 타임리프
클라이언트 사이드 렌더링(CSR)
- HTML 결과를 자바스크립트를 사용해 웹브라우저에서 동적으로 생성해서 적용
- 주로 동적인 화면
- React
'Java > spring' 카테고리의 다른 글
[Java][Spring][Servrit] HTTP 요청 데이터 (0) | 2023.12.26 |
---|---|
[Java][Spring][Servrit] HttpServletRequest 사용 (1) | 2023.12.26 |
[Java][Spring Boot] 웹 MVC 개발 (0) | 2023.12.16 |
[Java][Spring-Boot] 스프링 빈과 의존관계 (0) | 2023.12.16 |
[Java][Spring Boot] 회원관리 예제 테스트 코드 (0) | 2023.12.15 |