1. 서블릿(Servlet)과 JSP(JavaServer Pages)의 등장
2. MVC 패턴 도입
- JSP의 코드 유지보수 문제를 해결하기 위해 MVC 패턴(Model-View-Controller) 등장.
- 뷰(View)와 비즈니스 로직을 분리하여 유지보수성을 향상.
- 서블릿이 컨트롤러 역할을 하고, JSP가 뷰 역할을 수행.
초기 웹 기술: 서블릿 → JSP → MVC 패턴 적용
3. MVC 프레임워크의 등장 (2000~2010년대)
- 개발자들이 반복적으로 MVC 패턴을 적용하면서, 이를 자동화하는 MVC 프레임워크 등장.
- 다양한 프레임워크들이 존재했던 "MVC 프레임워크 춘추전국시대".
- 대표적인 프레임워크: Struts, Spring MVC, WebWork 등.
- 당시 국내에서는 Struts가 강세였으며, 스프링 MVC는 상대적으로 덜 사용됨.
- 일반적인 조합: Struts(프론트) + Spring Core(비즈니스 로직 및 데이터 접근 계층).
4. 스프링 MVC의 대세화
- 어노테이션 기반의 스프링 MVC 등장.
@Controller
, @RequestMapping
등의 애노테이션으로 코드 작성이 간결해짐.
- 스프링과의 통합이 자연스럽고 편리해지면서 기존 MVC 프레임워크들을 대체.
- 이후 스프링 MVC가 표준 MVC 프레임워크로 자리잡음.
5. 스프링 부트(Spring Boot)의 등장
- 스프링 프레임워크 사용 시 설정이 복잡하고 배포 과정이 번거로운 문제를 해결하기 위해 등장.
- Spring Boot의 주요 특징:
- 내장 WAS 제공 (톰캣, 제티, 언더토우 포함).
- 설정 자동화 (기본 설정을 제공하여 개발자가 설정을 최소화).
- 빌드 시 애플리케이션과 WAS를 하나의 JAR 파일로 패키징.
java -jar
명령어로 실행 가능하여 별도의 톰캣 설치 없이 실행 가능.
- 현재 대부분의 신규 프로젝트는 Spring Boot 기반으로 개발됨.
6. 최신 웹 기술 트렌드 – Spring MVC와 Spring WebFlux
1) Spring MVC (서블릿 기반)
- 기본적으로 서블릿을 기반으로 동작하는 웹 프레임워크.
- 기존의 멀티스레드 환경에서 스레드 풀(Thread Pool) 을 활용하여 동시 요청을 처리.
- 일반적인 웹 애플리케이션에서는 여전히 가장 널리 사용됨.
2) Spring WebFlux (비동기 논블로킹 웹 프레임워크)
- 비동기 논블로킹(Non-blocking) 방식으로 동작하는 웹 프레임워크.
- 기존 서블릿 기반이 아닌, Netty 같은 리액티브 웹 서버 위에서 동작.
- 특징:
- 최소한의 스레드 사용으로 최대 성능 발휘.
- 함수형 스타일 코드 작성 가능.
- 동시 API 호출이 많은 경우 효율적.
- 단점:
- 기술적 난이도가 높고, 기존 MVC 모델과 개발 방식이 다름.
- RDB(MySQL, PostgreSQL 등)와의 연동이 어려움.
- 대부분의 웹 애플리케이션에서는 MVC 모델로 충분히 성능을 확보할 수 있기 때문에 실무에서 많이 사용되지 않음.
7. 자바 기반 뷰 템플릿의 변화
JSP → FreeMarker, Velocity → Thymeleaf(현재 표준)
1) JSP (JavaServer Pages)
- HTML 안에 자바 코드를 직접 작성할 수 있도록 제공된 뷰 템플릿 기술.
- 속도가 느리고 유지보수가 어려움.
- 현재 스프링 부트에서는 사용을 권장하지 않음.
2) FreeMarker, Velocity
- JSP보다 빠르고 다양한 기능을 제공하는 템플릿 엔진.
- 한때 인기를 끌었지만, 최근에는 발전이 멈춤.
3) Thymeleaf
- 현재 스프링 MVC와 가장 잘 통합되는 뷰 템플릿.
- HTML의 기본 구조를 유지하면서 템플릿 기능을 적용할 수 있는 내추럴 템플릿(Natural Template) 방식 사용.
- 스프링 공식 문서에서도 기본 뷰 템플릿으로 Thymeleaf를 채택.
- 속도는 FreeMarker, Velocity보다 느릴 수 있으나, 대부분의 프로젝트에서 성능 문제가 되지 않음.
- 현재 가장 추천되는 뷰 템플릿.