1.1 리액티브 시스템이란?
리액티브(Reactive) 하다 = 반응을 잘 한다
클라이언트에서 요청을 보냈을 때 지연 없이(혹은 지연을 최소화하여) 응답하도록 하는 것
1.2 리액티브 선언문으로 리액티브 시스템 이해하기
Responsive, Resllient(회복성), Elastic(탄력성), Message Driven(메세지 기반)
https://www.reactivemanifesto.org/
1.3 리액티브 프로그래밍이란?
리액티브 시스템을 구축하는데 필요한 프로그래밍 모델
비동기 메세지 통신 기반, Non-Blocking I/O
1.4 리액티브 프로그래밍의 특징
1) 선언형 프로그래밍: 명령형 프로그래밍 (실행할 동작을 구체적으로 명시) vs 선언형 프로그래밍 (동작에 대한 목표만 명시)
2) 지속적으로 데이터가 발생 + 해당 데이터를 전파하는 방식(data streams, the propagation of change)
1.5 코드로 보는 명령형 프로그래밍 vs 선언형 프로그래밍
예를 들어서 특정 리스트에 있는 숫자들 중 6보다 큰 홀수의 합을 구한다고 했을 때,
List<Integer> numbers = Arrays..asList(1, 3, 21, 10, 11, 8);
1) 명령형 프로그래밍 방식
하나씩 숫자에 접근해서 조건을 판단하고 더하는 것까지 구체적으로 구현한다.
int sum = 0;
for (int num : numbers) {
if (num > 6 && num%2 == 0) {
sum += num;
}
}
2) 선언형 프로그래밍 방식
filter, map, sum 등 자바 스트림을 사용하고 프로그래머는 동작에 대한 방향만 구현한다.
선언형 + 함수형 프로그래밍 함께 쓰는 것이 대세 + 코드가 간결해지고 가독성도 좋아진다.
numbers.stream()
.filter(num -> num > 6 (&& num%2 == 0))
.maptoInt(num -> num)
.sum();
1.6 리액트 프로그래밍 코드 구성
- Publisher: 입력된 데이터를 제공 역할
- Subscriber: 데이터를 소비하는 역할
- Data Source: Publisher 에 입력되는 데이터(데이터가 끊기지 않고 생산된다는 의미에서 Data Stream 으로 쓰기도 함 - e.g IOT 에서 발생하는 데이터)
- Operator: Publisher 와 Subscriber 사이에서 데이터를 가공하는 역할
'2023~ > 스프링으로 시작하는 리액티브 프로그래밍' 카테고리의 다른 글
Ch06 마블 다이어그램 (0) | 2024.09.19 |
---|---|
Ch05 Reactor 개요 (0) | 2024.09.18 |
Ch04 리액티브 프로그래밍을 위한 사전 지식 (0) | 2024.09.17 |
Ch03 Blocking I/O 와 Non-Blocking I/O (0) | 2024.08.28 |
Ch02 리액티브 스트림즈(Reactive Streams) (0) | 2024.08.28 |
댓글