ahea study reactive programming
TRANSCRIPT
Reactive and Java
발표주제
Reactive Programming
왜 Reactive 를 주제로 잡았는가
너무 많은 곳에서 나오는 Reactive 라는 단어
Reactive 가 뭐길래
DEVOX
Spring IO 2016
Deview 2014
다양한 기술에서 Reactive Programming 을 지원
결정적인 계기
토비님의 Youtube
뭔지 알아보자 !
Reactive Programming 이란
데이터가 변경됨에 따라 결과도 바뀜반응형 (Reactive)
수고하셨습니다
뭐부터 공부를 해야 하나
Reactive programming 을 찾아보면…✤ Rx
Observable + LINQ + Scheduler
✤ wikipedia
Similarities with observer pattern
✤ rxwiki.wikidot.com죄다 Observer 이야기
구글에 observable 을 검색
Observable 을 소개
Observable 의 라이벌 Iterable
Application Iterable
Application Iterable
next()
Application Iterable
next()
next()
Application Iterable
next()
next()
next()
next()
next()
pull
Iterable 과 반대인 Observable
등록기상청
방송국
비가 온다 날씨를 알려줌일기예보에서 방송
Observable
Observers
이게 Iterable 과 무슨 상관이죠
Observer
Observable
say() update( data )
데이터를 받는 Observer
Application ObservableObserver
Application ObservableObserver
say()
Application ObservableObserver
say()notifyObservers()
Application ObservableObserver
say()notifyObservers()
notifyObservers()
Application ObservableObserver
say()notifyObservers()
notifyObservers()
notifyObservers()
notifyObservers()
notifyObservers()
push
Iterable 과 Observable 비교
event Iterable(pull) Observable(push)
retrieve data T next( void ) void notifyObservers( T )
complete check hasNext setChanged
Duality 한 Iterable, Observable
Application ObservableObserver
say()notifyObservers()
notifyObservers()
notifyObservers()Exception
Exception 의 처리
Application ObservableObserver
say()notifyObservers()
notifyObservers()
데이터의 마지막을 알수 없다
?
Reactive Model 로 해결
History
Volta 와 ReactiveX
"It is brought to you by the same team."
–Eric Meijer
what is volta
✤ Microsoft Live Labs
✤ 어플리케이션의 각 구성요소를 네트워크 내에서 분배하는 것을 지원할 목적으로 개발된 툴✤ like GWT
✤ 닷넷 프레임워크에 적용시킬 계획이였으나 망함
volta 에서 Reactive Extensions 로
volta 의 일부였던 지금은 reactive framework 는 2009 년 reactive extensions 로 이름을 바꾸고 공식 릴리즈 됩니다
• Reactive Extensions For .NET 3.5 Sp1
• Reactive Extensions For .NET 4 beta 2
• Rx for Silverlight3
OpenSource 로 전환
Reactive Extensions 는 처음에는 오픈소스가 아니였으나 2012 년 Eric Meijer 는 rx.net rx.js, rx++ 를 오픈소스로 공개하게 됩니다
Netflix 의 고민
Netflix 의 TV User Interface 팀 개발자인 Jafar Husain
엄청난 트래픽을 감당해야 하는 넷플릭스의 아키텍쳐2012 년 북미의 인터넷 트래픽의 33% 를 차지( 유튜브는 15%)
넷플릭스는 사용자경험을 위해 api 를 세분화 시키고 여러번 call 이 들어오도록 설계되었습니다 .
이안에서 network latency 가 여러번 발생되여 지연되는 현상을 알게 되었습니다
이런 문제를 해결하기 위해서는 네트워크 요청 단일화시켜서 축소시키는 것입니다 .
즉 WAN 의 대기시간을 줄이는 대신 처리가 빠른 강력한 하드웨어를 가진 서버를 둬서 이 문제를 해결하는 것입니다 .
동시성스레드의 안정성병렬처리기존 클라이언트 코드를 만지지 않으면서 java API 를 통해 비동기 처리가 되도록 만들기
Reactive programming model 을 고려
고려사항
Jafar Husain 은 JVM 환경에서 ReactiveExtensions 모델이 동작되는 Java 버전을 개발이것이 RxJava 가 되었습니다
Reactive Extensions 가족 구성
Reactive Extension
s.Net
Silverlight
RxJava
RxJs
RxSwift
RxAndroid
많은 기업들이 Reactive Model 을 구현Typesafe -> Akka Stream
Pivotal -> Reactor
Netflix -> RxJava
Redhat -> Vert.x
Reactive 의 표준을 정하자java 의 Reactive 의 표준을 만들기 위해 Typesafe, Red Hat, Netflix, Pivotal, Oracle, Twitter, spray.io들이 모여 스펙을 정의했습니다 .
Reactive Streamswww.reactive-streams.org/
Java9
Oracle 은 java9 에서 reactive stream 이 탑재된다고 발표
Reactive Streams
http://www.reactive-streams.org/
Reactive Stream 의 스펙을 보면서 Observable 문제를 어떻게 해결하였는지 확인하겠습니다 .
Publisher - > Observable
Subscriber -> Observer
Subscription -> publisher 와 subscriber 간에 통신
RxJava
Spring Reactive
✤ Spring 5
✤ Spring IO news
정리✤ Observable 의 동작원리와 문제점✤ Reactive 의 History
✤ Reactive Streams
✤ RxJava
✤ Spring Reactive
회고✤ 자바개발자에게 너무 생소한 Reactive
✤ 은근 상당히 자료가 없음
✤ 유료 세미나는 힘들어✤ 부담