
리액티브 시스템은 클라이언트의 요청에 빠르게 반응하고, 예측 가능한 응답을 제공하는 반응성(Responsiveness) 중심의 시스템이다. 단순히 빠르기만 한 시스템이 아니라, 다양한 상황에서도 일관된 응답성과 높은 신뢰성을 유지할 수 있도록 구성된다.
리액티브 프로그래밍은 위와 같은 리액티브 시스템을 구현하기 위한 프로그래밍 패러다임이다. 핵심은 비동기, Non-Blocking, 이벤트 기반이라는 세 가지 키워드를 통해 데이터 흐름(Stream)을 중심으로 프로그래밍한다는 점이다.
즉, 단일 요청-응답이 아니라 시간에 따라 변화하는 데이터 흐름 전체를 다루며, 흐름을 구성하고 가공하며 구독(subscribe)하는 방식으로 프로그래밍한다.
| 구성요소 | 설명 |
|---|---|
| Publisher | 데이터를 발행하는 주체 (Mono, Flux) |
| Subscriber | 데이터를 소비하는 주체. onNext(), onComplete() 등을 통해 데이터 소비 |
| Data Source | 실제 데이터를 공급하는 외부 소스 (DB, 파일, HTTP 등) |
| Operator | 데이터 흐름 중간에서 변환, 필터링, 가공 등을 수행하는 함수 (map, filter, flatMap) |