2.5 KiB
2.5 KiB
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)은 데이터 스트림과 변경 전파를 중심으로 하는 프로그래밍 패러다임입니다.
- 핵심 개념:
- Streams (Observable): 시간이 지남에 따라 발생하는 이벤트들의 연속적인 흐름.
- Obversers: 스트림을 관찰하다가 값이 들어오면 로직 실행.
- Operators: 스트림을 필터링, 변형, 결합하는 함수 (Map, Filter, Merge 등).
- 프로그래밍 스타일:
- Imperative (명령형): "A = B + C" (나중에 B나 C가 바뀌어도 A는 그대로).
- Reactive (반응형): "A는 언제나 B + C의 결과이다" (B나 C가 바뀌면 A도 즉시 업데이트됨).
- 장점:
- 비동기 처리 간소화: 콜백 지옥(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.