Ahea Study reactive programming

60
Reactive and Java

Transcript of Ahea Study reactive programming

Page 1: Ahea Study reactive programming

Reactive and Java

Page 2: Ahea Study reactive programming

발표주제

Reactive Programming

Page 3: Ahea Study reactive programming

왜 Reactive 를 주제로 잡았는가

Page 4: Ahea Study reactive programming

너무 많은 곳에서 나오는 Reactive 라는 단어

Page 5: Ahea Study reactive programming

Reactive 가 뭐길래

Page 6: Ahea Study reactive programming

DEVOX

Page 7: Ahea Study reactive programming

Spring IO 2016

Page 8: Ahea Study reactive programming

Deview 2014

Page 9: Ahea Study reactive programming

다양한 기술에서 Reactive Programming 을 지원

Page 10: Ahea Study reactive programming

결정적인 계기

토비님의 Youtube

Page 11: Ahea Study reactive programming

뭔지 알아보자 !

Page 12: Ahea Study reactive programming

Reactive Programming 이란

Page 13: Ahea Study reactive programming

데이터가 변경됨에 따라 결과도 바뀜반응형 (Reactive)

Page 14: Ahea Study reactive programming

수고하셨습니다

Page 15: Ahea Study reactive programming

뭐부터 공부를 해야 하나

Page 16: Ahea Study reactive programming

Reactive programming 을 찾아보면…✤ Rx

Observable + LINQ + Scheduler

✤ wikipedia

Similarities with observer pattern

✤ rxwiki.wikidot.com죄다 Observer 이야기

Page 17: Ahea Study reactive programming

구글에 observable 을 검색

Page 18: Ahea Study reactive programming

Observable 을 소개

Page 19: Ahea Study reactive programming

Observable 의 라이벌 Iterable

Page 20: Ahea Study reactive programming

Application Iterable

Page 21: Ahea Study reactive programming

Application Iterable

next()

Page 22: Ahea Study reactive programming

Application Iterable

next()

next()

Page 23: Ahea Study reactive programming

Application Iterable

next()

next()

next()

next()

next()

pull

Page 24: Ahea Study reactive programming

Iterable 과 반대인 Observable

Page 25: Ahea Study reactive programming

등록기상청

방송국

Page 26: Ahea Study reactive programming

비가 온다 날씨를 알려줌일기예보에서 방송

Page 27: Ahea Study reactive programming

Observable

Observers

Page 28: Ahea Study reactive programming

이게 Iterable 과 무슨 상관이죠

Page 29: Ahea Study reactive programming

Observer

Observable

say() update( data )

데이터를 받는 Observer

Page 30: Ahea Study reactive programming

Application ObservableObserver

Page 31: Ahea Study reactive programming

Application ObservableObserver

say()

Page 32: Ahea Study reactive programming

Application ObservableObserver

say()notifyObservers()

Page 33: Ahea Study reactive programming

Application ObservableObserver

say()notifyObservers()

notifyObservers()

Page 34: Ahea Study reactive programming

Application ObservableObserver

say()notifyObservers()

notifyObservers()

notifyObservers()

notifyObservers()

notifyObservers()

push

Page 35: Ahea Study reactive programming

Iterable 과 Observable 비교

event Iterable(pull) Observable(push)

retrieve data T next( void ) void notifyObservers( T )

complete check hasNext setChanged

Page 36: Ahea Study reactive programming

Duality 한 Iterable, Observable

Page 37: Ahea Study reactive programming

Application ObservableObserver

say()notifyObservers()

notifyObservers()

notifyObservers()Exception

Exception 의 처리

Page 38: Ahea Study reactive programming

Application ObservableObserver

say()notifyObservers()

notifyObservers()

데이터의 마지막을 알수 없다

?

Page 39: Ahea Study reactive programming

Reactive Model 로 해결

Page 40: Ahea Study reactive programming

History

Page 41: Ahea Study reactive programming

Volta 와 ReactiveX

Page 42: Ahea Study reactive programming

"It is brought to you by the same team."

–Eric Meijer

Page 43: Ahea Study reactive programming

what is volta

✤ Microsoft Live Labs

✤ 어플리케이션의 각 구성요소를 네트워크 내에서 분배하는 것을 지원할 목적으로 개발된 툴✤ like GWT

✤ 닷넷 프레임워크에 적용시킬 계획이였으나 망함

Page 44: Ahea Study reactive programming

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

Page 45: Ahea Study reactive programming

OpenSource 로 전환

Reactive Extensions 는 처음에는 오픈소스가 아니였으나 2012 년 Eric Meijer 는 rx.net rx.js, rx++  를 오픈소스로 공개하게 됩니다

Page 46: Ahea Study reactive programming

Netflix 의 고민

Netflix 의 TV User Interface 팀 개발자인 Jafar Husain

엄청난 트래픽을 감당해야 하는 넷플릭스의 아키텍쳐2012 년 북미의 인터넷 트래픽의 33% 를 차지( 유튜브는 15%)

Page 47: Ahea Study reactive programming

넷플릭스는 사용자경험을 위해 api 를 세분화 시키고 여러번 call 이 들어오도록 설계되었습니다 .

이안에서 network latency 가 여러번 발생되여 지연되는 현상을 알게 되었습니다

Page 48: Ahea Study reactive programming

이런 문제를 해결하기 위해서는 네트워크 요청 단일화시켜서 축소시키는 것입니다 .

즉 WAN 의 대기시간을 줄이는 대신 처리가 빠른 강력한 하드웨어를 가진 서버를 둬서 이 문제를 해결하는 것입니다 .

Page 49: Ahea Study reactive programming

동시성스레드의 안정성병렬처리기존 클라이언트 코드를 만지지 않으면서 java API 를 통해 비동기 처리가 되도록 만들기

Reactive programming model 을 고려

고려사항

Page 50: Ahea Study reactive programming

Jafar Husain 은 JVM 환경에서 ReactiveExtensions 모델이 동작되는 Java 버전을 개발이것이 RxJava 가 되었습니다

Page 51: Ahea Study reactive programming

Reactive Extensions 가족 구성

Reactive Extension

s.Net

Silverlight

RxJava

RxJs

RxSwift

RxAndroid

Page 52: Ahea Study reactive programming

많은 기업들이 Reactive Model 을 구현Typesafe -> Akka Stream

Pivotal -> Reactor

Netflix -> RxJava

Redhat -> Vert.x

Page 53: Ahea Study reactive programming

Reactive 의 표준을 정하자java 의 Reactive 의 표준을 만들기 위해 Typesafe, Red Hat, Netflix, Pivotal, Oracle, Twitter, spray.io들이 모여 스펙을 정의했습니다 .

Reactive Streamswww.reactive-streams.org/

Page 54: Ahea Study reactive programming

Java9

Oracle 은 java9 에서 reactive stream 이 탑재된다고 발표

Page 55: Ahea Study reactive programming

Reactive Streams

http://www.reactive-streams.org/

Reactive Stream 의 스펙을 보면서 Observable 문제를 어떻게 해결하였는지 확인하겠습니다 . 

Page 56: Ahea Study reactive programming

Publisher - > Observable

Subscriber -> Observer

Subscription -> publisher 와 subscriber 간에 통신

Page 57: Ahea Study reactive programming

RxJava

Page 58: Ahea Study reactive programming

Spring Reactive

✤ Spring 5

✤ Spring IO news

Page 59: Ahea Study reactive programming

정리✤ Observable 의 동작원리와 문제점✤ Reactive 의 History

✤ Reactive Streams

✤ RxJava

✤ Spring Reactive

Page 60: Ahea Study reactive programming

회고✤ 자바개발자에게 너무 생소한 Reactive

✤ 은근 상당히 자료가 없음

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