더보기
Spring Boot & Thymeleaf 시리즈는 김영한 님의 "스프링 MVC 2편 - 백엔드 웹 개발 활용 기술" 강의를 정리한 글입니다. 글에 첨부된 사진은 해당 강의의 강의 자료에서 캡쳐한 것입니다. 제 Github에만 올려뒀다가, 정보 공유와 강의 홍보(?)를 위해 블로그에도 업로드합니다.
마크다운 형식으로 작성한 글을 블로그에 다시 올리는 거라 가독성이 많이 떨어집니다. 조금더 편하게 보시려면 아래의 Github repository에서 보시면 됩니다.
Java 진영 Web 기술의 역사
과거 기술 흐름
Servlet - 1997
- TCP/IP 연결, HTTP 메시지 파싱, 멀티 스레딩 등의 공통 작업들을 편리하게 만들어 준다
- 그러나 HTML을 동적으로 생성하는 것은 여전히 어려움
JSP - 1999
- 동적 HTML 생성을 편리하게 할 수 있다
- 그러나 비즈니스 로직까지 너무 많은 역할을 담당하게 됨
- 코드가 너무 길어진다
- 유지보수가 어렵다
MVC 패턴 - Servlet과 JSP의 조합
- Servlet과 JSP를 조합
- Model, View, Controller로 역할을 나누어서 개발함
- 비즈니스 로직과 화면을 렌더링 하는 부분을 나누어서 개발
- 유지보수가 쉬워짐
MVC 프레임워크 - 2000년 초 ~ 2010년 초
- MVC 패턴의 자동화
- 복잡한 웹 기술을 편리하게 사용할 수 있는 다양한 기능을 지원한다
- MVC 프레임워크 춘추 전국 시대
- Struts, WeBWorK, Spring MVC(과거 버전. 이 때는 그냥 그랬음)
- 여러 프레임워크를 같이 사용 (앞단에는 Struts, 뒷단에는 Spring MVC)
현재 사용 기술
Annotation 기반의 Spring MVC의 등장
- @Controller
- MVC 프레임워크의 춘추 전국 시대 마무리
- Spring 프레임워크를 적용하면 MVC 패턴, 복잡한 웹 기술 전부 편리하게 사용 가능
- 여러 프레임워크를 같이 사용할 때 생기는 어려움 사라짐 -> Spring만 쓰면 된다!
Spring Boot의 등장
- 여러 복잡한 설정들을 개발자 대신 해준다 -> 개발자의 불편함 해소, 생산성 증가
- 스프링 부트는 서버를 내장하고 있다
- 과거에는 서버에 WAS를 직접 설치하고, 소스를 빌드해서 war 파일을 만든 뒤, 설치한 WAS에 배포해야 했다
- 이 과정이 매우 복잡했다!
- 스프링 부트는 빌드 결과(jar)에 WAS 서버가 포함되어 있다!
- 서버에 jar 파일을 올려서 실행만 시키면 끝!
- 빌드와 배포가 매우 단순해졌다!
현재 실무에서도 Spring Boot 기반으로 프로젝트를 진행하고 있다.
최신 기술 - Spring 웹 기술의 분화
Web Servlet 기술 스택과 Web Reactive 기술 스택으로 분화
- Web Servlet: Spring MVC
- Spring MVC는 servlet 기반으로 동작한다.
- Servlet, 멀티 쓰레드 등의 기술을 사용할 수 있다.
- Web Reactive - Spring WebFlux
Spring WebFlux
특징
- 비동기 넌 블러킹 처리
- 최소 쓰레드로 최대 성능을 낸다
- 쓰레드 개수와 코어 개수를 비슷하게 맞출 수 있다
- 쓰레드 컨텍스트 스위칭 비용이 거의 들지 않는다
- 함수형 스타일로 개발한다
- 동시처리 코드를 깔끔하고 빠르게 작성할 수 있다
- Servlet 기술을 사용하지 않는다
- Netty 프레임워크를 사용한다고 함
그런데...
- 웹 플럭스는 기술적 난이도가 매우 높다!
- 아직은 RDB 지원이 부족하다
- 일반 MVC의 쓰레드 모델도 충분히 빠르다
- 실무에서 아직 많이 사용하지는 않는다 (전체 1% 이하)
자바 뷰 템플릿 역사
View template: HTML을 편리하게 생성하는 역할을 한다
JSP
- 속도가 느리고, 기능이 부족해서 요즘엔 잘 안쓴다.
Freemarker, Velocity
- 속도 문제를 해결했고, 기능도 다양하다.
- 한때 인기를 끌었지만, 발전을 거의 안했다.
Thymeleaf
- Natural template: HTML의 모양을 유지하면서 view template를 적용할 수 있다.
- 과거 freemarker, velocity는 HTML 파일 안에 코드가 들어있었다.
- Thymeleaf는 HTML의 tag를 활용하기 때문에 훨씬 깔끔하다.
- Spring MVC와 같이 쓰기에 좋다.
- Spring이 밀어준다.
- Spring과 함께 쓸 때는 최선의 선택이다!
- 단 성능은 freemarker, velocity가 더 좋다고 한다.
'Spring > Spring MVC' 카테고리의 다른 글
[Spring MVC] 7. HttpServletRequest (0) | 2022.11.23 |
---|---|
[Spring MVC] 6. 서블릿 등록과 사용(Spring Boot 환경) (0) | 2022.11.23 |
[Spring MVC] 4. HTML, HTTP, API, CSR, SSR (1) | 2022.11.23 |
[Spring MVC] 3. Servlet Container와 멀티 쓰레드 (0) | 2022.11.23 |
[Spring MVC] 2. Servlet (0) | 2022.11.23 |
댓글