자바 백엔드 웹 기술의 역사와 발전 과정 정리

조아·2025년 2월 18일
0

1. 서블릿(Servlet)과 JSP(JavaServer Pages)의 등장

  • 서블릿: 웹 요청을 처리하는 자바 기반 기술로 등장.

    • TCP/IP 연결, 멀티스레드 처리 등의 작업을 직접 구현해야 하는 단점 존재.
    • HTML을 동적으로 생성하기 어려움.
  • JSP(JavaServer Pages): 서블릿의 단점을 해결하기 위해 등장.

    • HTML을 포함하면서도 자바 코드 작성이 가능.
    • JSP 코드는 최종적으로 서블릿으로 변환됨.
    • 비즈니스 로직과 UI 코드가 혼재되어 유지보수 어려움.

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의 주요 특징:
    1. 내장 WAS 제공 (톰캣, 제티, 언더토우 포함).
    2. 설정 자동화 (기본 설정을 제공하여 개발자가 설정을 최소화).
    3. 빌드 시 애플리케이션과 WAS를 하나의 JAR 파일로 패키징.
    4. 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보다 느릴 수 있으나, 대부분의 프로젝트에서 성능 문제가 되지 않음.
  • 현재 가장 추천되는 뷰 템플릿.
profile
프론트엔드 개발자

0개의 댓글