토비의 봄 TV - 비동기 노트 Chapter 1

토비의 봄 수업을 들으면서 기억에 남는 내용을 기록했습니다

“리액티브”란 단어 조심해서 사용해야 함.

이 단어를 보고 각자 연상하고 떠오르는 개념들이 다 다름

리액티브: 이벤트가 발생하면, 거기에 반응하는 방식의 코드

Duality

Duality (쌍대성: 수학용어인듯하다, 하나의 속성은 다르고, 기능은 같다) (에릭 마이어)

Iterable ←—> Observable

Pull Push

Pull: iter.next()로 다음 것 가져옴. 땡긴다.

Push: 이벤트를 보낸다. (가져가게 한다.)

Observable: Event Source, 이벤트를 던진다, 옵저버는 여러개일수잇다, 옵저버패턴

Source → Event/Data → Observer

setChanged() ↔ update()

발행 ↔ 구독

(Reactive Streams) Publisher ↔ Subscriber

(Gang of Pattern) Subject ↔ Observer

(Reactive Extensions) Observable ↔ Subscriber

Event Driven 개념을 자주 사용하는 안드로이드, 스윙은 이런 패턴을 자주 사용한다

Duality

notifyObservers(intArg);

int intArg = it.next();

즉,

void method (DATA) ↔ DATA method(void)

push 방식은 미리 정해진 데이터를 가져오는 방식(pull)보다 훨씬 다이나믹하다

Reactive Extensions를 만든 MS 엔지니어들은 옵저버 패턴의 한계를 크게 2가지 지목

  1. 도대체 언제 이벤트 전송이 Complete 되는가?
  2. Error 핸들링을 어떻게 하는가?

옵저버 패턴에는 위 2개에 대한 기본 골조(아이디어)가 없다

이 2가지로 추가되어 확장된 옵저버 패턴인 옵저버블이 리액티브 익스텐즈의 한 축 (세가지 축 중)

다른 축: 스케줄러

에러

  • 프로그램 버그: Report돼서 Fix해야 함
  • 네트워크 에러: Recoverable함, 자연 복구될 수 있어

50~60분 아주 흥미로운 얘기: 리액티브 탄생 설화 MS → Netflix (ReactiveX 그룹 탄생)

subscribe → onNext* → onCompleteonError

on: 이벤트가 일어났다 unbounded: 한계가 없는

Publisher ↔ Subscription ↔ Subscriber

Subscription: Back Pressure

토비님도… 공부할 때 헷갈렸다고 함… 이름도 비슷비슷하고…

굉장히 어려운 주제

학자들도 연구중, 토비님도 계속 공부중, 계속 발전해나감

4, 5세대 진행중

스케줄러: 비동기, 병렬적 수행

예외: 감당 가능한건지, 복구 가능한건지, 종료해야하는지

1:30 멀티 쓰레드

GRPC




© 2020.12. by 따라쟁이

Powered by philz