반응형 프로그래밍

checkcccc·2021년 2월 8일
0

내가 1년차때 선임분이 반응형 프로그래밍 이라는 주제로 세미나를 진행한적이 있었다.
그때는 그냥 이런게 있구나 싶어서 흘려들었던거같은데(죄송...)
Angular를 사용하면서 Rxjs를 사용할 수 밖에 없었고, 어느 정도 숙련될 쯤 반응형
프로그래밍이 무엇인가? 에 의문이 생기기 시작했다.

반응형(Reactive) 프로그래밍이란?

데이터 스트림과 그 변화에 대한 선언적 프로그래밍 패러다임이다.

지금도 이게 무슨 소리인가 싶다...

또 다른 정의로는

반응형 프로그래밍은 비동기적인 데이터 스트림을 이용한 프로그래밍 기법이다.

여기서 "리액티브"하다는 의미는 상태변화의 흐름이 자동으로 전파된다는 것이다.
반응형 프로그래밍에서는 모든 데이터를 "스트림"으로 본다.

스트림이란

시간순으로 발생하는 이벤트의 나열이다.
스트림은 value, error, complete 의 각 시그널을 발생시킬 수 있다.

기본 베이스는 Observer Pattern이다.
하나의 데이터 스트림을 감시(구독)하는 대상이 있다면, 데이터 스트림의 변화가 발생할 경우
변화 전파가 일어나는데 감시하는 대상은 이를 감지하여 관련 작업을 하게 된다.

즉, 데이터가 변경될 때마다 관련된 로직을 일일히 호출하는 것이 아니라, 데이터 스트림이 존재하고 이를
구독하는 곳에서 변화에 따라 알아서 처리하는 하겠다는 것이다.

a = 10;
b = 20;
c = a + b;

// c: 30

a = 20;

// c: 30

일반적인 프로그래밍의 경우 a값을 변경해도 c의 결과는 그대로 있다.
반응형의 경우 조금 다르다.

a = 10;
b = 20;
c = a + b;

// c: 30

a = 20;

// c: 40

반응형의 경우 모든 데이터를 스트림으로 보고 스트림의 데이터가 변화되면 이를 전파하여
해당 데이터 스트림을 구독하고 있는 곳도 영향을 받는다.

이처럼 반응형 프로그래밍은 기존 프로그래밍 패러다임과는 다르게 사고해야될 필요가 있다.
객체지향의 경우 어떤 동작에 중점을 두었다면, 반응형의 경우 데이터 스트림의 변화에
중점을 둔 것이다.

반응형의 장점은 여러개의 스트림을 조합하여 새로운 스트림을 만들어 낼 수 도 있으며,
비동기 연산들 또한 하나의 스트림으로 조합할 수 있다.
비동기 연산을 보다 쉽게 처리할 수 있도록 해준다.

0개의 댓글