더보기
Spring Boot & Thymeleaf 시리즈는 김영한 님의 "스프링 MVC 2편 - 백엔드 웹 개발 활용 기술" 강의를 정리한 글입니다. 글에 첨부된 사진은 해당 강의의 강의 자료에서 캡쳐한 것입니다. 제 Github에만 올려뒀다가, 정보 공유와 강의 홍보(?)를 위해 블로그에도 업로드합니다.
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의
웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있
www.inflearn.com
마크다운 형식으로 작성한 글을 블로그에 다시 올리는 거라 가독성이 많이 떨어집니다. 조금더 편하게 보시려면 아래의 Github repository에서 보시면 됩니다.
GitHub - Kloong1/TIL: Today I Learned.
Today I Learned. Contribute to Kloong1/TIL development by creating an account on GitHub.
github.com
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 |
댓글