Ahea Study reactive programming

Post on 12-Apr-2017

149 views 1 download

Transcript of Ahea Study reactive programming

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

✤ 은근 상당히 자료가 없음

✤ 유료 세미나는 힘들어✤ 부담