리액티브 프로그래밍이란
리액티브 시스템에서 사용되는 프로그래밍 모델
리액티브
- '반응을 하는', '반응을 보이는'
리액티브 시스템
- 클라이언트의 요청에 반응을 잘하는 시스템
- 리액티브 시스템 특징
MEANS
리액티브 시스템에서 사용하는 커뮤니케이션 수단
- Message Driven
- 메시지 기반 통신을 통해 여러 시스템 간에 느슨한 결합 유지
FORM
메시지 기반 통신을 통해 리액티브 시스템이 어떤 특성을 가지는 구조로 형성되는지를 의미
- Elastic
- 시스템으로 들어오는 요청량이 적거나 많거나에 상관없이 일정한 응답성 유지
- Resillient
- 시스템의 일부분에 장애가 발생하더라도 응답성을 유지
VALUE
리액티브 시스템의 핵심 가치
- Responsive
- 클라이언트의 요청에 즉각적으로 응답할 수 있어야 함
- Maintainable
- 클라이언트의 요청에 대한 즉각적인 응답이 지속가능해야 함
- Extensible
- 클라이언트의 요청에 대한 처리량을 자동으로 확장하고 축소할 수 있어야 함
- 리액티브 스트림즈
리액티브 프로그래밍을 위한 표준 사양
- 리액티브 스트림즈 컴포넌트
1. Publisher
public interface Publisher<T> {
public void subscribe(Subscriber<? super T> s);
}
2. Subscriber
public interface Subscriber<T> {
public void onSubscribe(Subscription s);
public void onNext(T t);
public void onError(Throwable t);
public void onComplete();
}
3. Subscription
public interface Subscription {
public void request(long n);
public void cancel();
}
4. Processor
public interface Subscription {
public void request(long n);
public void cancel();
}
- 리액티브 스트림즈 구현체
- Project Reactor
- RxJava
- Java Flow API
- 기타 리액티브 확장(Reactive Extension)
리액티브 프로그래밍 구조
- 선언형 프로그래밍 방식은 실행할 코드를 선언만 하며, 순차적으로 실행되지 않음
- 실행 로직을 작성한 코드대로 실행이 되는 명령형 프로그래밍 방식과 달리 선언형 프로그래밍 방식은 실행 로직의 일부만 람다 표현식으로 전달하며 전달 받은 람다 표현식을 기반으로 Operation 메서드 내부에서 전체 로직을 실행
- 최종 연산을 수행하는 메서드를 호출하지 않으면 앞에서 작성한 메서드 체인들이 실행 되지 않음
- 리액티브 프로그래밍에서 사용되는 용어 정의
더보기
- Publisher
- 데이터를 내보내는 주체
- Emit
- Publisher가 데이터를 내보내는 것
- Subscriber
- Publisher가 emit한 데이터를 전달 받아서 소비하는 주체
- Subscribe
- 구독
- Signal
- Publisher가 발생시키는 이벤트
- Operator
- 리액티브 프로그래밍에서 어떤 동작을 수행하는 메서드
- Sequence
- Operator 체인으로 표현되는 데이터의 흐름
- Upstream / Downstream
- Sequence 상의 특정 Operator를 기준으로 위쪽의 Sequence 일부를 Upstream, 아래 쪽 Sequence 일부를 Downstream이라고 표현
'부트캠프 기록 > Section4' 카테고리의 다른 글
[Cloud] aws를 이용한 클라이언트 배포 (0) | 2022.12.06 |
---|---|
[Cloud] aws를 이용한 서버 배포 (0) | 2022.12.02 |
[Spring Security] JWT 자격 증명을 위한 로그인 인증 구현 (0) | 2022.11.26 |
[Spring Security] OAuth2 란 (0) | 2022.11.25 |
[Spring Security] JWT 개요 (0) | 2022.11.23 |