Files
2nd/10_Wiki/Topics_Blog/Reactive-Programming.md
T

37 lines
2.4 KiB
Markdown

---
id: P-REINFORCE-AUTO-REPR-001
category: "10_Wiki/💡 Topics/AI"
confidence_score: 0.96
tags: [auto-reinforced, software-engineering, rx, asynchronous, event-driven]
last_reinforced: 2026-04-20
---
# [[Reactive-Programming]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> "데이터의 흐름에 몸을 맡겨라: 변화가 일어날 때까지 기다리지 않고, 데이터라는 '스트림'이 흐를 때마다 연결된 로직들이 자동으로 반응하게 만드는 선언적 비동기 프로그래밍 패러다임."
## 📖 구조화된 지식 (Synthesized Content)
리액티브 프로그래밍(Reactive Programming)은 데이터 스트림과 변경 전파를 중심으로 하는 프로그래밍 패러다임입니다.
1. **핵심 개념**:
* **Streams (Observable)**: 시간이 지남에 따라 발생하는 이벤트들의 연속적인 흐름.
* **Obversers**: 스트림을 관찰하다가 값이 들어오면 로직 실행.
* **Operators**: 스트림을 필터링, 변형, 결합하는 함수 (Map, Filter, Merge 등).
2. **프로그래밍 스타일**:
* **Imperative (명령형)**: "A = B + C" (나중에 B나 C가 바뀌어도 A는 그대로).
* **Reactive (반응형)**: "A는 언제나 B + C의 결과이다" (B나 C가 바뀌면 A도 즉시 업데이트됨).
3. **장점**:
* **비동기 처리 간소화**: 콜백 지옥(Callback Hell) 탈출.
* **반응성 향상**: 유저 인터랙션이나 네트워크 요청이 많은 환경에서 부드러운 UX 제공.
* **탄력성**: 데이터 부하 급증 시 배압(Backpressure) 조절을 통해 시스템 안정성 유지.
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌**: 이전에는 정적인 상태 관리만으로 충분했으나, 실시간 서비스와 복잡한 프론트엔드 환경이 대세가 되며 리액티브 방식이 대규모 시스템 설계의 필수가 됨.
- **정책 변화(RL Update)**: 고성능 서버 환경에서 자원을 낭비하는 전통적 Blocking 방식 대신, 자원을 효율적으로 점유하는 'Non-blocking 리액티브 선언문'을 표준 코딩 규약으로 채택하는 정책이 확산됨.
## 🔗 지식 연결 (Graph)
- [[Software-Design-Principles]], [[Event-Driven-Architecture]], [[Functional Programming]], User Experience (UX)
- **Modern Tech/Tools**: RxJS, React (State-driven UI), Project Reactor, Akka.
---