본문 바로가기

카테고리 없음

[Spring] Reactive Programming - Basic

비동기 프로그래밍을 처리하는 접근 방식중, 리액티브 프로그래밍에 대해 알아본다.

리액티브 프로그래밍은 "데이터나 이벤트의 변경이 발생하면 이에 반응해 처리하는 프로그래밍 기법"을 의미한다.

 

"변경이 발생하면" 이라는 문구에서 옵저버 패턴을 쉽게 떠올릴 수 있는데, 실제로 이에 영감을 받아 설계되었으며,

손쉬운 비동기 처리를 위해 함수형 프로그래밍의 접근 방식을 사용한다.


리액티브 스트림(Reactive Stream)

 

  • 리액티브 스트림은 리액티브 프로그래밍의 표준 API 사양을 의미한다.
  • 리액티브 스트림은  TCK(Technology Compatibility Kit)을 지원하기 때문에 라이브러리가 사양에 맞게 구현되었는지 보장할 수 있다.
  • 표준 사양을 채택한 대표적인 구현체는 Project Reactor, RxJava, JDK9 Flow, Vert.x 등이 있다

리액티브 스트림의 사양은 "핵심 인터페이스"와 "프로토콜"로 구성된다.

 

<인터페이스>

인터페이스 명 설명
Publisher 데이터를 생성하고 구족자에게 통지
Subscriber 데이터를 구독하고 통지 받은 데이터를 처리
Subscription Publisher, Subscriber간의 데이터를 교환하도록 연결하는 역할을 하며 전달받을 데이터의 개수를 설정하거나 구독을 해지할 수 있다
Processor Publisher, Subscriber을 모두 상속받은 인터페이스

<프로토콜>

public interface Subscriber<T> {
	public void onSubscribe(Subscription s);
	public void onNext(T t);
	public void onError(Throwable t);
	public void onComplete();
}
메서드 명 설명
onSubscribe 구독시 최초에 한번만 호출
onNext 구독자가 요구하는 데이터의 수 만큼 호출 (최대 java.lang.Long.MAX_VALUE)
onError 에러 또는 더이상 처리할 수 없는 경우
onComplete 모든 처리가 정상적으로 완료된 경우

리액티브 프로그래밍의 간단한 개념과 표준에 대해 정리해보았다.

이후에는 실제로 Webflux, Coroutine 등을 활용해 어떻게 적용이 가능한지 정리해보고자 한다.

 

출처 : 실무 프로젝트로 배우는 Kotlin & Spring : 리팩토링부터 서비스 구현까지, 패스트캠퍼스(https://fastcampus.co.kr/courses/211160)

 

커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스

성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.

fastcampus.co.kr