본문 바로가기
2023~/스프링으로 시작하는 리액티브 프로그래밍

Ch01 리액티브 시스템과 리액티브 프로그래밍

by 경아ㅏ 2024. 8. 22.

 

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 사이에서 데이터를 가공하는 역할

 

 

댓글