3 min to read
1-01.리액티브 프로그래밍의 소개
리액티브 프로그래밍이란 무엇일까요?
1-01.리액티브 프로그래밍이란?
Reactive
반응형이라는 용어는 최근에 많은 사람들 입에서 오르고 내리고 있습니다.
프로그래머라면 누구나 관심을 갖고 있지만, 초반 학습곡선이 높은것으로 유명하여 쉽게 접근하지 못하는 경우가 많습니다.
리액티브 프로그래밍은 무엇일까요?
Reactive Programming
리액티브 프로그래밍은 데이터 스트림과 변경 사항에 대한 Propagation
전파를 중심으로 하는 프로그래밍 패러다임 중 하나입니다.
예를 들어보겠습니다.
제가 이전에 맡았던 서비스인 성형 및 뷰티 커뮤니티 플랫폼 [바비톡]에서는 사용자가 어떤 화면을 바라보고 있던 항상 같은 데이터에 대한 동적인 갱신이 요구되었습니다.
모바일 앱의 비즈니스 로직 상 그중에 ‘성형톡’이라는 탭의 카테고리에서 특정 타임라인에서 특정 글에 대한 행동이 일어난다면, 그 글을 보여주고 있는 다른 카테고리에서도 마찬가지로 그 특정 행동에 대한 반응 및 동적인 데이터 갱신이 요구가 되었습니다.
해당 문제를 해결하기 위해 해당 데이터를 지닌 모델 클래스에 동적인 갱신을 할 수 있는 Observable
한 객체를 두고 각 프로퍼티를 동적인 갱신을 할 수 있는 로직을 뒀습니다.
성형톡의 ID가 36번인 글의 좋아요를 눌렀으면, 해당 카테고리의 타임라인 외에 다른 카테고리에서 해당 36번글의 좋아요에 대한 리액션을 동적으로 반영해 주어야 할 것입니다. 이러한 작용을 Reactive
리액티브 라고합니다.
해당 예시와 같이 어떻게든 연결되어 있는 다른 데이터 또는 프로그램에 전파하는 프로그램 방식을 Reactive Program
리액티브 프로그램이라고 합니다.
fun main(args: Array<String>) {
var number = 4
var isEven = isEven(number)
println("The number is" + (if (isEven) "Even" else "Odd"))
number = 9
println("The number is" + (if (isEven) "Even" else "Odd"))
}
fun isEven(n: Int): Boolean = (n % 2 == 0)
위의 예시는 짝수와 홀수를 구별하는 일반적인 코틀린 코드입니다.
프로그램의 출력을 보면 당연하게도 출력되는 결과는
The number isEven
The number isEven
일 것입니다. number
변수에 새로운 값이 할당됐음에도 fun isEvent(Int)
함수에서 변경사항을 체크하지 않았기 때문입니다. 만약 이것이 동적으로 추적이 되는 상황이었다고 하면, 이것은 Reactive Programming
일 것입니다.
왜 굳이 람다식과 함께 함수형으로 작성할까?
많은 개발자들이 리액티브 프로그래밍을 접할 때 왜 함수형으로 대부분의 코드가 적용되어 있는지 궁금해 할 것입니다.
Functional Reactive Programming
함수형 리액티브 프로그래밍을 적용하면 다음과 같은 이점을 얻을 수 있습니다.
-
콜백지옥의 제거
콜백은 미리 정의된 이벤트가 발생시 호출되는 메서드입니다. 콜백방식은 여러 프로그래밍 방식에 많이 쓰이지만 인터페이스 방식으로 다른 프로그램 단에서 리스너를 등록해 특정 상황에 대한 구현이 필요 시 사용되는데, 이는 인터페이스와 그 구현방식 등의 많은 개발 리소스가 들어가기 때문에 흔히 말하는
콜백지옥
이 생기기 마련입니다. 함수형으로 작성시 해당 문제를 해결할 수 있습니다(with lambda). -
간결해진 스레드 사용
기존에 스레드를 생성 후 해제하는 과정까지 복잡한 코딩과정을 리액티브 프로그래밍과 함께 했을 때 더 단순화 할 수 있습니다.
-
간단한 비동기 연산
위에 내용과 마찬가지로 스레드 사용이 쉬워질 수록 비동기 연산도 쉬워지는 장점이 있습니다.
-
모든 작업에 대해 동일한 API 콜
-
함수형 접근
리액티브 프로그래밍을 한다는 것은 함수형 접근방법을 통해 가독성이 좋은 선언적인 코드를 지향합니다.
-
유지보수가 용이하고 테스트 가능한 코드로써의 발전
리액티브 프로그래밍을 올바르게 수행할때 유지보수와 테스트가 쉬워집니다.
Reactive Manifesto
리액티브 선언
Reactive Manifesto
리액티브 선언은 네 가지 리액티브 원리를 정의해 놓은 문서입니다.
리액티브 선언문은 다음 네 가지 원칙을 기준으로 합니다.
Responsive
응답성Resilent
탄력성Elastic
유연성Message driven
메세지 기반
위 네 가지 원칙을 모두 지키므로써 시스템이라는 존재는 신회할 수 있고 응답성있다고 말할 수 있습니다.
코틀린을 위한 리액티브 프레임워크
리액티브 프로그램을 작성하려면 라이브러리 또는 특정 프로그래밍 언어가 필요합니다.
코틀린은 리액티브 언어라고는 볼 수 없으나, 멀티 플랫폼에 적합하고, 리액티브한 프로그래밍 방식으로 구현 시 문법 상 원할하고 좋은 구조로써 사용할 수 있는 이점이 있습니다. 우리는 여기에서 코틀린과 ReactiveX
의 RxKotlin
라이브러리를 사용 할 것입니다.
Comments