티스토리 뷰
1.1 리액티브 시스템(Reactive System)이란?
- Reactive : 반응을 하는
- Reactive System : (어떤 이벤트나 상황에) 반응을 잘하는 시스템
- 클라이언트의 요청에 즉각 응답함으로써 지연 시간을 최소화
1.2 리액티브 선언문으로 리액티브 시스템 이해하기
- MEANS (수단) : 메시지 기반 통신
- FORM (형태) : 탄력성과 회복성
- 탄력성 : 시스템의 작업량이 변화하더라도 일정한 응답 유지
- 회복성 : 시스템에 장애가 발생하더라도 응답성 유지
- VALUE (가치) : 빠른 응답성을 바탕으로 유지보수와 확장이 용이한 시스템 구축
1.3 리액티브 프로그래밍(Reactive Programming)이란?
- 리액티브 시스템을 구축하는 데 필요한 프로그래밍 모델
- 리액티브 시스템의 설계 원칙에 부합
- 비동기 Non-Blocking 통신
1.4 리액티브 프로그래밍의 특징
In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. (https://en.wikipedia.org/wiki/Reactive_programming)
- declarative programming (선언형 프로그래밍)
- 명령형 : 실행할 동작을 구체적으로 명시
- 선언형 : 동작의 목표만 선언
- data streams
- 데이터 흐름 : 데이터가 지속적으로 발생
- propagation of change
- 데이터의 발생 → 이벤트 발생 → 데이터 전달
1.5 코드로 보는 명령형 프로그래밍 vs 선언형 프로그래밍
- 명령형 프로그래밍 : 실행할 동작을 코드에 구체적으로 명시
List<Integer> numbers = Arrays.asList(1, 3, 21, 10, 8, 11);
int sum = 0;
for (int number : numbers) {
if (number > 6 && (number % 2 != 0)) {
sum += number;
}
}
System.out.println("합계: " + sum);
- 선언형 프로그래밍
- 동작을 구체적으로 명시하지 않고 목표만 선언
- 각 동작에 대한 메서드 체인을 형성하여 한 문장으로 된 코드로 구성
- 함수형 프로그래밍으로 구성
List<Integer> numbers = Arrays.asList(1, 3, 21, 10, 8, 11);
int sum = numbers.stream()
.filter(number -> number > 6 && (number % 2 != 0))
.mapToInt(number -> number)
.sum();
System.out.println("합계: " + sum);
- 일상에서의 에시 (식당에서 물을 마시려는 상황)
- 명령형 : 내가 직접 정수기로 걸어가서 물을 컵에 따른다
- 함수형 : 종업원에게 "여기 차가운 물 한잔 주세요"라고 부탁한다
1.6 리액티브 프로그래밍 코드 구성
- Publisher : 입력으로 들어오는 데이터를 Subscriber에 제공
- Subscriber : Publisher로부터 전달받은 데이터를 사용
- Data Source : Publisher의 입력으로 전달되는 데이터
- Operator : Publisher와 Subscriber 중간에서 데이터 가공 Chapter 02 리액티브 스트림즈(Reactive Streams)
'공부 > 스프링으로 시작하는 리액티브 프로그래밍' 카테고리의 다른 글
Chapter 04 | 리액티브 프로그래밍을 위한 사전 지식 (0) | 2023.07.21 |
---|---|
Chapter 03 | Blocking I/O와 Non-Blocking I/O (0) | 2023.07.21 |
Chapter 02 | 리액티브 스트림즈(Reactive Streams) (0) | 2023.07.21 |
Part 01 | 리액티브 프로그래밍(Reactive Programming) (0) | 2023.07.21 |
스프링으로 시작하는 리액티브 프로그래밍 (0) | 2023.07.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크