[TIL] 240318 - 반응형 프로그래밍(Reactive Programming)

황지원·2024년 3월 19일

TIL

목록 보기
11/15

개요 🎯


  • 챗봇 서비스를 개발하면서 비동기 서비스에 대한 중요성을 느꼈다.
  • 더 효율적인 비동기적 서비스 개발을 위해 반응형 프로그래밍(Reactive Programming)에 대해서 공부하고자 한다.

인사이트 👀


정의

  • 비동기 데이터 흐름에 기반을 둔 프로그래밍 패러다임으로 모든 것을 데이터 스트림으로 간주하고, 데이터(이벤트)에 따라 변경 내용을 전파하는 프로그래밍 방식
  • 데이터와 이벤트의 비동기적 흐름에 중점을 둔 프로그래밍 패러다임
  • 데이터는 데이터의 원본에서 대상까지 한 방향으로 흐르며 일련의 변환 및 처리 단계를 거쳐간다.

특징

  • 데이터가 스트림으로 처리되며, 데이터의 변경이나 이벤트 발생에 따라 처리 과정에서 자동으로 업데이트가 진행된다.
    • 데이터의 변경이나 이벤트 발생에 따라 처리 과정에서 자동으로 업데이트
    • 효율적인 비동기 처리, 데이터 흐름의 일관성 유지, 오류 처리 및 예외 상황 처리 등의 이점을 제공
  • OOP와 다르게 데이터의 흐름에 더 집중
    • 이 데이터 흐름은 관찰할 수 있거나 필터링하거나 다룰 수 있으며 새로운 흐름을 만들기 위해 다른 흐름과 병합할 수도 있다.
    • 비동기 처리를 지원하여 멀티스레딩 환경에서도 효율적으로 동작
  • 함수형 프로그래밍 패러다임의 도구들을 자유자재로 활용하여 데이터 흐름을 제어
  • 변수 값을 바꾸면 해당 변수를 참조하는 모든 식들이 연쇄적으로 스스로의 값을 갱신한다.

장단점

  • 장점 (+)
    • 동기식 비효율적 처리로 인한 병목현상 해결
    • 다수의 비동기 이벤트를 효과적으로 처리할 수 있기에 사용자 경험을 개선가능
  • 단점 (-)
    • 언제 변할지 모르는 수많은 데이터를 일일히 추적하다보면 성능을 저하시켜 고속처리 사용에는 부적합
      • 속도 느린 사용자 입력 반응 UI 등에서 사용
profile
함께 도전하고 성장하는 어린 꿀벌, 주니어 개발자 황지원 입니다

0개의 댓글