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)








저작자 표시 비영리 변경 금지
신고

Leave a Comment


to Top

티스토리 툴바