GW LABS

스프링으로 하는 마이크로서비스 구축 리뷰 (2) - 스프링 부트 소개 본문

Book-Review/Programing

스프링으로 하는 마이크로서비스 구축 리뷰 (2) - 스프링 부트 소개

GeonWoo Kim 2022. 4. 29. 17:08

스프링 부트

스프링은 J2EE를 대체하고자 출시되었다. DI 개념을 통해 가벼운 개발 모델을 제공하며, XML 구성 파일을 사용한다. 그러나 복잡한 XML 구성 파일을 사용하는게 부담이 되어 스프링 부트가 출시되었다.

스프링 부트는 스프링 프레임워크와 서드파티 제품으로 구성된 핵심 모듈의 설정 방식을 개선해 상용 스프링 애플리케이션을 빠르게 개발 하기 위한 프레임워크다. 설정보다 관례 패턴을 이용하여 필요한 경우에만 구성을 작성하도록 되어있다. 또한 fat JAR 파일로 알려진 독립형 JAR 파일 기반의 런타임 모델도 지원한다.

 

스프링 웹플럭스

프로젝트 리액터를 기본 구현으로 논블로킹 HTTP 클라이언트와 서비스의 개발을 지원하는 스프링의 리액티브 애플리케이션이다. 애노테이션 기반 명령형 방식과 함수 지향 모델 기반의 라우터 및 핸들러 방식의 프로그래밍 모델을 지원한다.

 

스프링 데이터

RDBMS, Key-value DB, Graph DB 등 다양한 유형의 데이터베이스 엔진에서 데이터를 다루기 위한 공통 스프링의 프로그래밍 모델이다.

  • 엔티티
    • 스프링 데이터가 저장하는 데이터를 의미한다.
  • 레포지토리
    • 여러 유형의 데이터베이스에 데이터를 저장하고 접근하고자 사용하는 자바 인터페이스이다.
    • 블록킹 방식: CrudRepository
    • 논블록킹 방식: ReactiveCrudRepository (Spring Data R2DBC 이용, Mysql 지원)

 

스프링 클라우드 스트림

게시-구독 통합 패턴을 기반으로 하는 메시징 방식의 스트리밍 추상화를 제공하는 스프링 클라우드의 프로그래밍 모델이다. 스트림의 핵심 개념은 아래를 참고한다.

  • 메시지: 메시징 시스템과 주고받는 데이터를 설명하는 데이터 구조다.
  • 게시자: 메시징 시스템에 메시지를 보낸다.
  • 구독자: 메시징 시스템에서 메시지를 받는다.
  • 채널: 메시징 시스템과 통신하는 데 사용한다. 게시자는 출력 채널을 사용하고 구독자는 입력 채널을 사용한다.
  • 바인더: 특정 메시징 시스템과의 통합 기능을 제공한다. JDBC 드라이버가 특정 데이터베이스를 지원하는 것과 유사하다.

 

질문

  • @SpringBootApplication 애노테이션이 제공하는 기능은 무엇인가?
  • REST 서비스 개발을 위한 컴포넌트인 스프링 웹 MVC와 스프링 웹플럭스의 주요 차이점은 무엇인가?
  • 스프링 데이터의 레포지토리가 제공하는 기능은 무엇이며, 가장 단순한 리포지토리 구현은 무엇인가?
  • 스프링 클라우드 스트림의 바인더가 제공하는 기능은 무엇인가?
Comments