반응형 프로그래밍 (Reactive Programming)

옵저버 패턴을 사용하여 구독자에게 변경 사항을 알려주는 비동기 이벤트 기반 프로그래밍

반응형 프로그래밍 (Reactive Programming)

반응형 프로그래밍 (Reactive Programming)


옵저버 패턴을 사용하여 데이터가 변경되면 이벤트를 발생시켜 데이터를 계속해서 전달하도록 하는 프로그래밍 기법이다.

옵저버 패턴은 객체의 상태 변화를 관찰하는 옵저버(Observer)를 등록하고, 객체의 변화가 있을 때 마다 이벤트를 발생시켜 각 옵저버에게 변화를 알려주는 디자인 패턴이다.


Marble Diagram


반응형 프로그래밍에서 데이터의 흐름과 연산자 등을 이해하는데 도움을 주는 핵심 도구이다.

  • 해당 Marble Diagram 을 설명하자면 모형 데이터 ★ 부터 ◆ 까지가 차례대로 들어와 ◆ 이후 데이터의 발행이 완료되었고 각 데이터들은 flip 연산자를 거쳐 새로운 데이터로 변환이 되었으나 네 번째 데이터에서 오류(X)가 발생하여 데이터의 발행이 비정상적으로 종료되었다는 것을 의미한다.


동기 / 비동기


동기(Synchronous)와 비동기(Asynchronous)는 작업의 진행 방식을 나타내는 개념이다.

동기

동기는 순차적으로 진행되며 한 작업이 끝나야 다음 작업이 되는 방식으로 한 작업이 완료되기를 기다린 후 그 결과를 얻은 뒤에 다음 작업을 수행한다.

동기는 작업 순서를 명확하게 파악할 수 있어서 코드를 이해하고 디버깅하기 쉽기 때문에 간단한 경우에는 유용할 수 있지만 한 작업이 끝날 때까지 다른 작업들이 대기해야 하므로 효율적이지 않을 수 있다.

비동기

비동기는 작업이 완료되지 않았더라도 다음 작업을 시작할 수 있는 방식으로 한 작업이 끝나기를 기다리지 않고 다른 작업을 수행하다가 다른 작업이 완료되면 그 결과를 처리한다.

비동기는 병렬성을 활용하여 시스템 성능을 향상시킬 수 있기 때문에 주로 네트워킹, 파일 입출력 등의 작업에서 사용된다.


블로킹 / 논블로킹


블로킹(Blocking)과 논블로킹(Non-blocking)은 작업의 대기 여부를 나타내는 개념이다.

블로킹

블로킹은 작업이 완료될 때까지 호출한 함수나 작업이 멈추고 기다리는 것을 의미하며 다른 작업을 수행할 수 없는 상태가 된다.

논블로킹

논블로킹은 호출한 함수나 작업이 작업을 완료하지 않더라도 다른 작업을 수행할 수 있는 방식으로 작업이 완료되지 않았더라도 대기하지 않고 다음 작업을 실행한다.

essential