반응형
SlideShare에 올라온 "Reactive Programming in Java 8 with Rx-Java"[1]에 대해 일부 정리한 글입니다.
- Rx-Java와 Java8에서의 반응형 프로그래밍 (Rx-Java와 Java8에서의 반응형 프로그래밍) -
1. 왜 또 다른 프로그래밍 패러다임인가?
- 상황이 지금은 다르다.
- 기존의 소프트웨어 응용 프로그램은 현대 기업의 요구를 충족 할 수 없습니다.
- 우리의 소프트웨어 아키텍처 패턴 및 프로그래밍 기술에 대해 다시 생각해 볼 시간이다.
2. 반응형(Reactive)이란 실제로 무엇을 의미하는가?
자극에 대해 쉽게 반응하는 것
- merriam-webster -
반응형 시스템(Reactive Systems)
- 적시에 응답
- 실패할 경우에도 응답을 유지
- 다양한 작업 부하에도 응답을 유지
- 비동기 메시지 전달에 의존
3. 반응형 프로그래밍(Reactive Programming)
당신이 '반응형 시스템'을 만드는 것에 도움을 주는 프로그래밍 패러다임
E.g.: Google Spreadsheet
- 반응성 세계에서 우리는 함수 결과나 네트워크 요청 또는 데이터베이스 쿼리의 결과를 기다릴 수 없습니다.
- 우리가 무언가를 기다릴 때마다, 우리는 동시에 다른 일을 할 수 있는 기회를 잃어버립니다.
- 반응형 프로그래밍은 여러가지 방법으로 완료될 수 있다.
- Akka Actors
- Reactive Extensions (Rx) – reactive + functional
4. 왜 Rx-Java인가? (Netflix story)
어떻게 네트워크 통신 수(chattiness, 서버와 자주 통신하는 것을 의미하는 듯)를 줄일 것인가?
- Granular API
- 단일 유저 경험(single user experience)을 만들기 위해서 모아지는 여러가지 콜(call)을 클라이언트 애플리케이션은 할 수 있음
5. The Netflix API
- 장비별 별개의 요청은 단일 요청으로 축소되어야 함
- 서버사이드 동시성은 효과적으로 네트워크 수다(chattiness, 네트워크 통신이 많이 오고 가는 것을 의미하는 듯)를 줄이는데 필요하다.
- 백앤드 네트워크 콜(call)의 내포된 조건부 병행 실행
6. 동시성을 받아들이다.
- 서버측 병렬성은 필수다.
- 원시적 병렬성의 낮은 수준
- 병렬 프로그래밍은 어렵다.
7. Java Futures
- 비동기 계산의 결과를 나타냅니다.
- 비동기로 일정 시간 이후의 결과를 받아와서 사용할 수 있다.
- Future가 블로킹 콜(Future.get())일 때 값을 가져온다.
- 중첩된 Future의 어지러움 -> 구현/유지보수가 복잡하다.
Reference
[1] Reactive Programming in Java 8 with Rx-Java (http://www.slideshare.net/kasun04/reactive-programming-in-java-8-with-rxjava)
반응형
'Devlopment > Reactive, Concurrency' 카테고리의 다른 글
리액티브란 무엇인가? (What's in a Name : Reactive) (0) | 2017.01.10 |
---|---|
리액티브 프로그래밍 대 리액티브 시스템 (Reactive Programming vs Reactive Systems) (0) | 2017.01.09 |
리액티브 스트림(Reactive Streams) (0) | 2017.01.04 |
데이터 스트림 (0) | 2016.12.29 |
동시성 관련 분류 (0) | 2016.12.27 |
vert.x VS Akka (0) | 2016.11.22 |
리액티브 프로그래밍이란 무엇입니까? What is reactive programming? (0) | 2016.11.21 |
1. 소프트웨어 패러다임 - 성능 그리고 동시성 (0) | 2016.11.17 |
동시성(Concurrency) vs 병렬성(Parallelism) (0) | 2016.11.17 |
synchronous, asynchronous, blocking, non-blocking (0) | 2016.10.31 |