SpringBoot/Spring 김영한님
김영한 Spring MVC (1) - 쓰레드, SSR, CSR, Servlet
함형우
2023. 3. 20. 09:17
728x90
동시요청 (쓰레드) - WAS에서 진행
서블릿이라는 객체를 누가 요청하는가의 대한 대답
- 애플리케이션 코드를 하나하나 순차적으로 실행하는 것은 쓰레드
- 쓰레드가 존재하지 않으면 자바 애플리케이션 실행이 불가능
- 쓰레드는 한번에 하나의 코드 라인만 수행
요청1 의 처리중에 모종의 이유로 처리가 지연되면 요청2 가 수행되지 못하고, 요청1 이 계속해서 스레드를 차지하고 있기 때문에 새로운 스레드가 생성되어야 한다. 그러나 요청마다 쓰레드가 생성 됐을때엔 장점과 단점이 존재한다.
- 장점
- 동시 요청을 처리할 수 있다.
- 리소스의 허용 한계까지 처리가 가능하다.
- 하나의 쓰레드가 지연되어도, 나머지 쓰레드는 정상 동작한다.
- 단점
- 쓰레드의 생성 비용이 매우 높다.( 응답 속도가 늦어질 수 있다 )
- 쓰레드는 컨텍스트 스위칭 비용이 발생한다.
- 쓰레드 생성에 제한이 없다. ( 메모리 임계점 넘어가면 서버다운 )
그래서 WAS 내부에 대부분 쓰레드 풀이 존재한다. 미리 쓰레드를 배치해 놓은 후에, 요청이 올때마다 배치 해놓은 쓰레드를 사용한다. 이런 경우에 생성 되는 것이 아닌 생성 해 놓은 것을 사용하기 떄문에 최대치가 넘어가는 요청이 오면 대기, 거절을 할 수 있다.
- 필요한 쓰레드를 보관, 관리할 수 있다.
- 생성 가능한 쓰레드의 최대치를 관리한다. 톰캣의 기본 설정은 최대 200개이다.
- HTML이 아닌 데이터를 전달
HTTP API
- 주로 JSON 형식을 사용
- 다양한 시스템에서 호출
- 데이터만 주고받는다. UI 화면이 필요하다면, 클라이언트가 별도로 처리한다.
- 앱, 웹 클라이언트, 서버 to 서버
SSR - 서버 사이드 렌더링
웹에서 /orders.html 이라는 요청이 발생한다면 서버에서 html 코드를 모두 만들어서 클라이언트로 보내서 보여주기만 하는 동작 한다. 보통 JSP, Tymreaf를 사용한다.
CSR - 클라이언트 사이드 렌더링
HTML의 결과를 자바스크립트를 활용하여 웹 브라우저에서 동적으로 생성한 후에 적용시킨다.
요청까지는 SSR, CSR 모두 동일하다. CSR의 경우는 HTML 요청이 오면 내용은 없고 JS 링크만 존재한다.
어디까지 알아야 하나.
- 백엔드 : 서버 사이드 렌더링 기술
- JSP, Thymreaf
- 화면이 정적이고, 복잡하지 않을 때 사용
- 백엔드 개발자라면 SSR 기술 학습이 필수
- 프론트엔드 : 클라이언트 사이드 렌더링 기술
- React, Vue.js
- 복잡하고 동적인 UI 사용
- 웹 프론트엔드 개발자의 전문 분야
- 백엔드 개발자의 웹 프론트엔드 기술 학습은 옵션
- 백엔드 개발자는 서버, DB, 인프라 등등 많은 백엔드 기술을 공부해야 함
HttpServletRequest - 개요
HTTP 요청 메시지를 개발자가 직접 파싱 해서 사용하기엔 매우 불편하기 때문에, 서블릿이 개발자 대신 HTTP 요청 메시지를 파싱한다. 그리고 그 결과를 HttpServletRequest객체에 담아서 제공한다.
POST /save HTTP/1.1
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
username=kim&age=20
728x90