본문 바로가기
IT/Teckweek

Reactive Programing이란?

by YEON-DU 2021. 4. 28.
반응형

* 이 글은 전적으로 개인적으로 공부하면서 중얼거리는 글입니다... 틀린 내용이 많을 수도 있습니다..

 

리액티브 프로그래밍....맨날 들을 때마다 머리가 아프다...

왜냐면 아직도 난 이것에 대해 감을 못잡았기 때문이다...

비동기적인 데이터를 처리할 때 유용하다는 건...잘..알겠다... 코딩하면서 쓰다보면 대충 그런거 같더라...

대충 그런거 같다로 넘기는 것들이 한 열댓개가 넘어가자 이해도가 미쳐돌아가기 시작했다.. 살려줘....

 

심지어 RxJava, RxKotlin 같은 식으로 쓰는데

나는 Reactive Programing == Rx라고 생각했건만 그것도 아니라는데,

미쳐돌아가는 대 환장 이해도속에 공부를 시작해보도록 ... 하자..

 

자칫하다간 아무도 이해못하는 웅앵웅이 될 수 있으니 아주 처음부터 시작해보자.

 

Reactive Programming이란?

reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change.

리액티브 프로그래밍. 즉, 반응형 프로그래밍이란 데이터 스트림과 변화의 전파에 대한 선언형 프로그래밍 패러다임이다. 

 

ReactiveX: Reactive Programming Principles

 

데이터(EX. API 호출 후 얻어온 데이터 스트림)를 사용하기 위해 데이터를 전달(변화의 전파)하는 방법론을 의미한다고 볼 수 있다.

 

하지만 여기에서의 데이터는 비동기 데이터만을 의미하는 것이 아니다.

다만 데이터를 처리하는 방식(변화의 전파)이 비동기적으로 처리된다는 것이다.

 

위의 그림을 볼 때 실제 데이터가 Array에 저장되어있다고 치면,

데이터를 사용할 때 데이터에 접근할 때 이 데이터들을 데이터 스트림 (데이터의 흐름)으로 보아서 비동기적으로 처리하는 것이다.

 

선언형 프로그래밍은 이전 테크위크 시간에 L언니가 설명해준 바 있으나, 짧게 설명하고 넘어가도록 하자.

 

선언형 프로그래밍은 흔히 명령형 프로그래밍과 비교되는데,

명령형이 how(어떻게)를 의미한다면, 선언형은 what(무엇을)에 가깝다고 한다.

명령형에는 절차/객체 지향 프로그래밍이 포함된다.

선언형에는 함수형 프로그래밍이 포함된다.

함수형의 경우 가능한 *순수함수를 사용하여 프로그래밍하도록 권하는데,

이로 인해 side-effects가 없고 독립적일 수 있게 된다.

*순수함수 : 함수 내부에서 사용하는 값(매개변수, 함수 내부에 선언된 변수 등) 외의 바깥의 scope에서 다른 변수를 사용하지 않는 함수 (외부의 영향을 받지 않는다)

 

심지어 선언형 프로그래밍조차 약간 애매하게 이해가 가지만 (선언형 프로그래밍을 명령형으로 작성할 수 있다는데 미친 거 같다)

리액티브 프로그래밍은 또 이런 프로그래밍 패러다임에서 새로운 것이라고 할 수 있다.

 

기존의 명령형 프로그래밍이 프로그래머가 작성한 코드가 정해진 규칙에 따라 순서대로 실행된다면,

리액티브 프로그래밍은 데이터의 흐름을 정의하고 데이터의 값이 변경되면 관련 함수나 수식이 업데이트되는 것이다.

(EX. 유저가 어떠한 게시글에 덧글을 달았을 때, 해당 글의 덧글 개수, 내용이 (새로고침 동작 없이) 동적으로 반영되어야 한다.)

 

Rx는 Reactive Extension(ReactiveX)의 약자이다.

따라서 RxJava, RxSwift와 같은 언어들은 Java에서, Swift에서 리액티브 프로그래밍을 가능하게 해주는 API와 같은 역할을 한다. 

 

 

참고자료

icthuman.tistory.com/entry/Reactive-Programming-1-관련-개념정리

zeddios.tistory.com/303

juneyr.dev/reactive-programming

soda1127.medium.com/1-00-코틀린을-리액티브하게-flex하다-9dbcab549519

medium.com/atimca/what-is-reactive-programming-43e60cc4c0f

반응형

'IT > Teckweek' 카테고리의 다른 글

CI/CD  (0) 2022.10.06
로드밸런싱  (0) 2021.06.10
프로세스와 스레드  (0) 2021.04.25
반복자 패턴(Iterator Pattern)  (0) 2021.03.27
Debounce / Throttle  (0) 2021.03.18

댓글