비동기 데이터의 스트림과 데이터 변경에 대한 전파에 초점을 둔 프로그래밍 패러다임이다.
예를들어 버튼을 누르는 경우는 비동기 이벤트다.
물론 비동기 작업도 동일하다.
시간의 흐름에 따라 데이터가 움직인다
스트림은 시간의 흐름에 따른 이벤트를 나열해놓은 것이다.

버튼 클릭에 따른 데이터 스트림
이 전체의 과정을 하나의 스트림으로 본다
즉, 데이터 스트림은 시간의 흐름에 따라 데이터가 움직이는 것을 말한다.
비동기라는 말이 들어가는 이유는 버튼을 누르는 경우가 비동기적이며
스트림 중에 다음 이벤트가 언제 들어올지 모르기 때문이다
스트림은 3개의 이벤트를 발생시킨다.
onNext, onComplete, onError를 발생시킬 수 있다.
Emit 한다고 한다.
onNext 클로저를 통해 데이터를 Emit한다.
옵저버는 데이터가 변경될 때마다 업데이트를 수신하기 위해 해당 스트림을 구독하게 되는데
이 스트림에서 변경이 발생하면 구독자에게 전파되어 실시간으로 업데이트된 데이터를 받을 수 있다.
이 변경은 구독해두면 자동으로 이루어지기 때문에 많은 양의 데이터나 데이터 변경이 빈번한 경우
효율적인 프로그래밍이 가능하다.
즉, Reactive 프로그래밍이란 비동기 이벤트에 대한 스트림을 만들고
스트림을 통해 데이터 변경을 처리하는 프로그래밍 패러다임이다.