Spring MVC, Batch, WebFlux

김윤서·2024년 8월 19일
0

스프링 MVC (Model-View-Controller)

  • 목적: 전통적인 동기식 웹 애플리케이션 개발을 위한 프레임워크.
  • 아키텍처: 동기식 요청-응답 기반으로 동작. 클라이언트가 요청을 보내면 서버는 요청을 처리하고, 처리 결과를 클라이언트에 응답으로 보냅니다.
  • 주요 특징:
    • 전통적인 웹 개발에 많이 사용되며, 템플릿 엔진(e.g., Thymeleaf, JSP)과 함께 뷰(View)를 렌더링합니다.
    • HTTP 프로토콜을 기반으로 동작하며, RESTful 웹 서비스 구축에도 자주 사용됩니다.
    • 서블릿 API와 밀접하게 연동됩니다.

2. 스프링 Batch

  • 목적: 대규모의 데이터 처리 작업을 배치로 실행하기 위한 프레임워크.
  • 아키텍처: 대량의 데이터 처리(ETL 작업, 로그 처리, 대용량 데이터 변환 등)에 적합한 배치 처리 모델을 제공합니다.
  • 주요 특징:
    • 트랜잭션 관리, 대량 데이터 처리, 재시도, 스킵 처리와 같은 배치 작업에 필수적인 기능들을 제공.
    • Job, Step, Reader, Processor, Writer 등의 핵심 개념을 바탕으로 배치 작업을 설계.
    • 주로 시간이 오래 걸리거나 시스템 리소스를 많이 사용하는 작업에 사용됩니다.
    • 스프링 MVC나 WebFlux와는 달리 실시간 요청-응답이 아닌 스케줄러 기반 또는 수동으로 실행되는 작업에 초점을 맞춥니다.

3. 스프링 WebFlux

  • 목적: 비동기식, 논블로킹 웹 애플리케이션 개발을 위한 프레임워크.
  • 아키텍처: 리액티브 스트림(reactive stream) 기반으로 동작하며, 비동기 논블로킹 방식으로 요청을 처리합니다.
  • 주요 특징:
    • 리액터(Reactor) 라이브러리를 사용하여 데이터 스트림과 비동기 작업을 관리합니다.
    • 서버 자원의 효율성을 높이고 고성능 웹 애플리케이션을 구현하는 데 적합.
    • 이벤트 기반 아키텍처로 많은 동시 연결을 효율적으로 처리할 수 있습니다.
    • 전통적인 스프링 MVC와 달리 서블릿 API를 사용하지 않고, Netty 같은 논블로킹 서버를 사용할 수 있습니다.

각각의 차이 특장점은

  • 스프링 MVC는 동기식 요청-응답 웹 애플리케이션을 위한 프레임워크이며, 전통적인 웹 애플리케이션 개발에 사용됩니다.
  • 스프링 Batch는 대규모 데이터 처리 작업을 위한 배치 프레임워크로, 실시간이 아닌 일괄 작업에 적합합니다.
  • 스프링 WebFlux는 비동기식 논블로킹 웹 애플리케이션을 위한 프레임워크로, 고성능, 고효율의 리액티브 애플리케이션을 개발하는 데 사용됩니다.

0개의 댓글