반응형 프로그래밍 (Reactive Programming)
옵저버 패턴을 사용하여 데이터가 변경되면 이벤트를 발생시켜 데이터를 계속해서 전달하도록 하는 프로그래밍 기법이다.
옵저버 패턴은 객체의 상태 변화를 관찰하는 옵저버(Observer
)를 등록하고, 객체의 변화가 있을 때 마다 이벤트를 발생시켜 각 옵저버에게 변화를 알려주는 디자인 패턴이다.
Marble Diagram
반응형 프로그래밍에서 데이터의 흐름과 연산자 등을 이해하는데 도움을 주는 핵심 도구이다.
- 해당
Marble
Diagram
을 설명하자면 모형 데이터 ★ 부터 ◆ 까지가 차례대로 들어와 ◆ 이후 데이터의 발행이 완료되었고 각 데이터들은flip
연산자를 거쳐 새로운 데이터로 변환이 되었으나 네 번째 데이터에서 오류(X)가 발생하여 데이터의 발행이 비정상적으로 종료되었다는 것을 의미한다.
동기 / 비동기
동기(Synchronous
)와 비동기(Asynchronous
)는 작업의 진행 방식을 나타내는 개념이다.
동기
동기는 순차적으로 진행되며 한 작업이 끝나야 다음 작업이 되는 방식으로 한 작업이 완료되기를 기다린 후 그 결과를 얻은 뒤에 다음 작업을 수행한다.
동기는 작업 순서를 명확하게 파악할 수 있어서 코드를 이해하고 디버깅하기 쉽기 때문에 간단한 경우에는 유용할 수 있지만 한 작업이 끝날 때까지 다른 작업들이 대기해야 하므로 효율적이지 않을 수 있다.
비동기
비동기는 작업이 완료되지 않았더라도 다음 작업을 시작할 수 있는 방식으로 한 작업이 끝나기를 기다리지 않고 다른 작업을 수행하다가 다른 작업이 완료되면 그 결과를 처리한다.
비동기는 병렬성을 활용하여 시스템 성능을 향상시킬 수 있기 때문에 주로 네트워킹, 파일 입출력 등의 작업에서 사용된다.
블로킹 / 논블로킹
블로킹(Blocking
)과 논블로킹(Non-blocking
)은 작업의 대기 여부를 나타내는 개념이다.
블로킹
블로킹은 작업이 완료될 때까지 호출한 함수나 작업이 멈추고 기다리는 것을 의미하며 다른 작업을 수행할 수 없는 상태가 된다.
논블로킹
논블로킹은 호출한 함수나 작업이 작업을 완료하지 않더라도 다른 작업을 수행할 수 있는 방식으로 작업이 완료되지 않았더라도 대기하지 않고 다음 작업을 실행한다.