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