리액티브 프로그래밍 (Reactive Programming)
리액티브 프로그래밍(Reactive Programming) : 데이터의 흐름과 변경사항에 대한 전파에 대한 프로그래밍 패러다임.
예를 들어, 데이터 A의 변화에 따라 데이터 B의 값이 변화하는 방식을 리액티브 프로그램이라 칭함.
리액티브 프로그래밍 방식은 작성된 코드가 정해진 순서대로 수행되는 명령형 프로그래밍 방식과는 다르게 데이터의 흐름에 따라 코드가 수행되는 방식을 취한다. 즉, 프로그램이 아닌 주변의 데이터의 변경에 따른 이벤트가 흐름을 주도하는 방식이다.
리액티브 프로그래밍의 특징
함수형 프로그래밍 방식을 통해 콜백과 같은 방식에서 사이드 이펙트가 없으므로 스레드에 안전하다.
또한, 스케줄러 등을 활용하여 스레드를 활용한 비동기 처리가 쉽다.
함수형 프로그래밍 : 거의 모든 것을 순수 함수로 나누어 문제를 해결하는 기법
순수 함수 : 같은 매개변수에 대해 같은 반환값을 가지며 외부 상태를 변화시키지 않는 함수로, side effect가 없다.
fun numberToString(number: Number): String {
return "number is $number"
}
// number의 값이 같다면 return 값이 항상 같고, 외부 상태를 변화하지 않으므로 순수함수이다.
리액티브 선언 (Reactive Menifesto)
리액티브 선언 (Reactive Menifesto)은 리액티브의 원리를 정의해놓은 문서이다. (출처 : https://www.reactivemanifesto.org/)
1. 응답성 (Responsive)
시스템은 즉각 응답해야하며, 이로 인해 일관성있는 service quality를 제공할 수 있어야 한다.
2. 탄력성 (Resilient)
시스템은 장애가 발생하더라도 응답성을 유지해야 한다. 하나의 컴포넌트에 장애가 발생하더라도 전체 시스템에 영향이 없어야 한다.
3. 유연성 (Elastic)
시스템은 다양한 워크로드에서도 응답성을 유지해야 한다. 입력값이나 작업량이 변화하더라도 유연하게 응답성을 유지해야 하며, 다양한 HW / SW 플랫폼에서도 효율적인 cost로 유연성을 확보해야 한다.
4. 메시지 기반 (Message driven)
리액티브 시스템은 컴포넌트 간 경계를 확실하게 하기 위해 비동기식 메시지 전달에 의존한다.
책 : http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791161752976
코틀린 리액티브 프로그래밍 - 리부 차크라보티 지음 | 조승진 옮김 | 에이콘출판
* 책의 내용이 아닌 책의 내용을 통한 개인의 학습을 정리한 게시글입니다.
'Kotlin' 카테고리의 다른 글
Cold Observable / Hot Observable (0) | 2021.12.23 |
---|---|
Observable / Observer (0) | 2021.12.23 |
[Android, Kotlin] 제네릭의 in, out 키워드는 무엇일까? (9) | 2021.11.28 |
[Kotlin] object / companion object를 통한 Java의 static 키워드 대체 (0) | 2021.11.20 |
[Kotlin] Class, Interface 새로 배운 학습 정리 (0) | 2021.11.12 |