[ 스프링 웹 MVC ] - 웹 어플리케이션 이해

.·2021년 5월 17일
0

스프링 MVC

목록 보기
1/6

소개

인프런에서 김영한 강사님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 강의를 듣고 내용을 정리하고자 합니다.

https://www.inflearn.com/course/스프링-mvc-1/dashboard

스프링에 대해 기초부터 전부 알려주기 때문에 입문자에게 추천하고 싶은 강의입니다. 김영한님의 로드맵 다만 선행 강의가 있으므로 김영한님의 스프링 완전 정복 로드맵을 따라오는것을 추천합니다.

웹서버, 웹 어플리케이션 서버

웹서버

  • HTTP 기반으로 동작
  • 정적 리소스 제공, 기타 부가기능
  • 정적 HTML, CSS, JS, 이미지, 영상
  • ex) NGINX, APACHE

웹 어플리케이션 서버 (WAS)

  • HTTP 기반으로 동작
  • 웹 서버 기능 포함, 사실 둘의 용어도 경계도 모호함
  • 자바는 서블릿 컨테이너 기능을 제공하면 WAS
  • 프로그램 코드를 실행해 어플리케이션 로직 수행
  • 동적 HTML, HTML API(JSON)
  • 서블릿, JSP, 스프링 MVC
  • ex) 톰캣

웹 시스템 구성 - WEB, WAS, DB

  • 정적 리소스는 웹 서버가 처리
  • 웹 서버는 어플리케이션 로직같은 동적인 처리는 WAS에 요청
  • WAS는 중요한 어플리케이션 로직 처리 전담

서블릿

HTTP 통신 시 서버에서 처리해야 하는 업무

의미있는 비즈니스 로직을 제외하고는 반복되는 과정들.
이를 서블릿을 사용하면 자동으로 처리해준다.

서블릿

  • urlPatterns의 URL이 호출되면서 서블릿 코드가 실행
  • HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequest
  • HTTP 응답 정보를 편리하게 사용할 수 있는 HttpServletResponse

서블릿 컨테이너

  • 톰캣처럼 서블릿을 지원하는 WAS를 서블리 컨테이너라고 함
  • 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리
  • 서블릿 객체는 싱글톤으로 관리
  • JSP도 서블릿으로 변환되어 사용
  • 멀티 쓰레드 처리 지원

멀티 쓰레드

쓰레드

  • 어플리케이션 코드를 하나하나 순차적으로 실행하는 것은 쓰레드
  • 자바 메인 메서드를 실행하면 main이라는 이름의 쓰레드가 실행
  • 쓰레드는 한번에 하나의 코드 라인만 수행

쓰레드 풀

특징

필요한 쓰레드를 쓰레드 풀에 보관하고 관리한다.
쓰레드 풀에 생성 가능한 쓰레드의 최대치를 관리한다.

사용

쓰레드가 필요하면 쓰레드 풀에서 꺼내서 사용하고 끝나면 반납한다.
쓰레드 풀에 쓰레드가 없으면 대기하거나 거절된다.

실무 팁

WAS의 주요 튜닝 포인트는 최대 쓰레드 수이다.
값이 낮으면 동시 요청이 많을 때 서버리스소는 여유롭지만 클라이언트의 응답이 지연되고 값이 높으면 CPU, 메모리 리소스 임계점 초과로 서버가 다운된다

장애 발생시 클라우드면 서버부터 늘리고 이후에 튜닝하고 클라우드가 아니면 열심히 튜닝한다.

WAS의 멀티 쓰레드 지원

  • 멀티 쓰레드는 WAS가 처리한다.
  • 개발자는 멀티 쓰레드 관련 코드를 신경쓰지 않아도 된다.
  • 싱글 스레드 프로그래밍을 하듯이 편리하게 소스코드를 개발하면 된다.

HTTP API, SSR, CSR

HTTP API

  • HTML이 아니라 데이터를 전달
  • 주로 JSON 형식 사용
  • 다양한 시스템에서 호출
  • 데이터만 주고 받음, UI 화면은 클라이언트가 별도 처리

SSR - 서바 사이드 렌더링

  • 서버에서 최종 HTML을 생성해서 클라이언트에 전달
  • 주로 정적인 화면에서 사용
  • 관련기술: JSP, 타임리프

CSR - 클라이언트 사이드 렌더링

  • HTML 결과를 자바스크립트를 사용해 웹 브라우저에서 동적으로 생성해 적용
  • 주로 동적인 화면에 사용, 웹 화면을 부분적으로 변경 가능함
  • 관련기술 : React, Vue.js
profile
지금부터 공부하고 개발한것들을 꾸준하게 기록하자.

0개의 댓글