아틴
Atin
아틴
전체 방문자
오늘
어제
  • 분류 전체보기 (460)
    • Devlopment (246)
      • 정리 글 (20)
      • MicroServices (0)
      • Reactive, Concurrenc.. (12)
      • Java (44)
      • Spring (20)
      • C,C++,Ruby,Python (52)
      • Mobile (39)
      • Web (35)
      • Tip & Info (14)
      • Unit Test (7)
    • Infra (44)
      • OS (21)
      • RDBMS (13)
      • NoSQL&Cache (5)
      • AWS (4)
    • Computer Science (11)
    • Etc (156)

블로그 메뉴

  • Home
  • Guestbook

공지사항

인기 글

태그

  • CSS
  • C
  • Python
  • 안드로이드
  • jsp
  • javascript
  • 해킨토시
  • Android
  • 정읍
  • Linux
  • mysql
  • Java
  • 아이폰
  • TRPG
  • 자바
  • 여행
  • 전라도
  • Dungeons & Dragons
  • 던젼 앤 드래곤즈
  • Ruby on Rails

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
아틴

Atin

Rx-Java와 Java8에서의 반응형 프로그래밍 (Reactive Programming in Java 8 with Rx-Java)
Devlopment/Reactive, Concurrency

Rx-Java와 Java8에서의 반응형 프로그래밍 (Reactive Programming in Java 8 with Rx-Java)

2016. 10. 31. 14:16
반응형

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)

[2] (https://github.com/kasun04/rnd/blob/master/rx-java/src/main/java/org/kasun/rnd/rxjava/serviceinvoker/rx/nonblocking/exec/ServiceInvoker.java)








반응형
저작자표시 비영리 변경금지 (새창열림)

'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
    'Devlopment/Reactive, Concurrency' 카테고리의 다른 글
    • 리액티브 프로그래밍이란 무엇입니까? What is reactive programming?
    • 1. 소프트웨어 패러다임 - 성능 그리고 동시성
    • 동시성(Concurrency) vs 병렬성(Parallelism)
    • synchronous, asynchronous, blocking, non-blocking
    아틴
    아틴

    티스토리툴바