데브허브 | DEVHUB | [10분 테코톡] 시소의 리액티브 프로그래밍
- 리액티브 프로그래밍은 데이터 및 이벤트 흐름의 전파를 중심으로 하는 프로그래밍 패러다임입니다. 🔄
- 이는 증가하는 사용자 및 데이터 처리량으로 인한 동기/블로킹 방식의 한계와 비동기 이벤트 처리의 복잡성을 해결하기 위해 등장했습니다. 🚀
- 핵심 개념은 '반응형'으로, 마우스 클릭이나 데이터 입력과 같은 이벤트에 반응하여 동작합니다. 💡
- '선언형 프로그래밍' 방식을 채택하여 개발자가 '무엇을 할지'만 명시하면 시스템이 내부 동작을 처리하여 코드 가독성과 복잡성을 개선합니다. ✍️
- '데이터 스트림'은 연속적으로 들어오는 데이터의 흐름을 의미하며, '변경의 전파'를 통해 데이터 변화가 스트림을 따라 자동으로 소비자에게 반영됩니다. 🌊
- 주요 적용 분야는 사용자 상호작용이 많은 UI, 외부 I/O 연동이 잦은 백엔드 서비스, 실시간 데이터 스트림 처리 서비스 등입니다. 🌐
- 자바에서는 비동기 데이터 스트림 처리를 위한 표준 스펙인 'Reactive Streams'를 제공하며, Publisher, Subscriber, Subscription, Processor로 구성됩니다. 🧩
- 'Backpressure'는 소비자가 처리 가능한 속도를 생산자에게 강제하여 오버플로우를 방지하는 중요한 흐름 제어 메커니즘입니다. 🚦
- Reactive Streams의 구현 라이브러리로는 RxJava와 Reactor가 있으며, Spring은 Reactor를 표준으로 채택하고 있습니다. 🛠️
- Spring WebFlux는 Reactor를 기반으로 리액티브 프로그래밍을 구현한 웹 프레임워크입니다. 🕸️