이 글은 스프링 MVC 1편 - 백엔드 웹 개발 김영한님 강의를 듣고 정리한 글입니다.
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard
웹 서버
HTTP 기반 동작, 정적 리소스 제공 및 기타 부가기능
HTML,CSS,JS,이미지,영상
ex)NGINX, APACHE
웹 애플리케이션 서버 ( WAS - Web Application Server )
HTTP 기반 동작, 웹 서버 기능+ 프로그램 코드를 실행하여 애플리케이션 로직 수행
동적 HTML, HTTP API(JSON), 서블릿,JSP, 스프링 MVC
ex) Tomcat, Jetty, Undertow
웹 애플리케이션 서버는 웹 서버 기능에 애플리케이션 로직까지 제공한다.
java - Servlet Container 제공시 WAS
웹 시스템 구성
WAS는 로직 처리시에 오류 발생으로 잘 죽기때문에, WAS 앞에 웹 서버를 두어 오류 발생시 화면을 띄우게 하고, 필요한 작업만 WAS에 위임한다.
서블릿(Servlet)
서버에서 처리해야하는 업무를 대신해준다.
개발자는 요청/응답 정보를 편리하게 사용할 수 있고, 비지니스 로직을 짜는 것에만 집중할 수 있다.
특징
HTTP 요청, 응답 흐름
서블릿 컨테이너
WAS에서 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 한다.
서블릿 객체를 생성,초기화,호출,종료하는 생명주기를 관리한다.
서블릿 객체는 싱글톤이므로 공유변수 사용을 주의해야한다.
동시 요청을 위한 멀티 쓰레드 처리도 지원한다.
동시 요청 - 멀티 쓰레드
쓰레드(Thread)
애플리케이션 코드를 하나하나 순차적으로 실행, 서블릿 객체를 호출
쓰레드는 한번에 하나의 코드 라인만 수행하므로, 동시 처리가 필요하면 쓰레드를 추가적으로 생성해야한다.
요청마다 쓰레드 생성
장단점
쓰레드 풀 (단점 보완)
쓰레드 풀에 있는 쓰레드를 꺼내어 요청을 처리하고, 작업이 끝난 후에는 쓰레드를 쓰레드 풀에 반납한다.
쓰레드 풀에 있는 쓰레드 모두가 실행되고 있을때 새로운 요청이 들어와 쓰레드가 필요한 상황이라면,
쓰레드 풀에 쓰레드가 다시 채워질때까지 기다리거나 거절 처리 된다. (설정 차이)
쓰레드 풀 실무 팁
완전 재밌다.. 개발 어느정도 되면 튜닝도 해보고싶다. ✨
쓰레드 풀의 적정 숫자
WAS의 멀티 쓰레드 지원
HTML, HTTP API
1. 정적 리소스
고정된 HTML 파일, CSS, JS, 이미지, 영상 등 제공
주로 웹 브라우저
2. HTML 페이지
동적으로 필요한 HTML 파일을 생성하여 전달
웹 브라우저 : HTML 해석
3. HTTP API
HTML이 아닌 데이터 전달 - 주로 JSON
다양한 시스템에서 호출
다양한 시스템에서 연동이 가능하다.
서버사이드 렌더링(SSR)
서버에서 최종 HTML을 생성하여 클라이언트에 전달
JSP, 타임리프
클라이언트 사이드 렌더링(CSR)
HTML 결과를 자바스크립트를 사용해 웹 브라우저에서 동적으로 생성하여 적용
주로 동적인 화면에 사용, 웹 환경 부분 변경 가능
React, Vue.js
알아야 하는것
백엔드 배울 거 많으니까 풀스택에 환상갖지말고 열심히 하자
프론트도 배워두면 괜찮긴하다. 그러나 백엔드 개발자라면 기본부터 키우자
JAVA 백엔드 웹 기술 역사
과거 기술
요새 JSP는 권장하지 않는다.
현재 사용 기술
스프링 MVC는 혁신이다. 모든 것이 스프링 MVC로 결정!
스프링 부트는 톰캣 서버가 깔려있어서 빌드 배포가 단순화된다.
자세한 내용은 여기에 설명이 잘 되어있다.
최신 기술
- Web Servlet - Spring MVC
- Web Reactive - Spring WebFlux (난이도 높고 RDB 지원 부족, 실무에서 잘 사용X)
JAVA 뷰 템플릿 역사
HTML을 편리하게 생성하는 뷰 기능
타임리프(Thymeleaf)를 주로 사용한다.
'Spring > 스프링 MVC' 카테고리의 다른 글
서블릿, JSP, MVC 패턴 (0) | 2023.03.26 |
---|---|
서블릿(Servlet) (0) | 2023.03.25 |