You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Current »

Reactive Streams는 비동기 데이터 처리를 위한 표준으로 다양한 장점을 제공합니다:

  1. 비동기 처리 및 백프레셔(Back-Pressure): Reactive Streams는 데이터 스트림을 비동기적으로 처리하면서, 소비자(Consumer)가 처리할 수 있는 속도를 초과하지 않도록 제어합니다. 이를 통해 시스템의 과부하를 방지하고, 메모리 사용을 최적화합니다.

  2. 확장성과 자원 효율성: 비동기 처리는 시스템 자원을 보다 효율적으로 사용할 수 있게 해주며, 이를 통해 더 많은 작업을 동시에 처리할 수 있습니다. 이는 특히 고성능 애플리케이션 또는 마이크로서비스 아키텍처에서 중요합니다.

  3. 오류 처리: Reactive Streams는 오류를 스트림의 일부로 취급하여, 예외 상황을 보다 우아하게 처리할 수 있습니다. 오류가 발생하면, 스트림은 해당 오류를 전파하고 적절히 반응할 수 있습니다.

  4. 함수형 프로그래밍과의 연계: Reactive Streams는 함수형 프로그래밍 패러다임과 잘 어울립니다. 불변성, 상태 없음, 높은 수준의 추상화 등 함수형 프로그래밍의 특징들은 Reactive 프로그래밍과 잘 맞아 떨어집니다.

  5. 다양한 언어 및 프레임워크 지원: Reactive Streams는 Java, Scala, JavaScript 등 다양한 프로그래밍 언어 및 프레임워크에서 지원되며, 이를 통해 여러 환경에서 동일한 비동기 처리 패턴을 적용할 수 있습니다.

이러한 특징들은 Reactive Streams를 현대 애플리케이션 개발, 특히 대규모 데이터 처리와 높은 동시성을 요구하는 시나리오에서 매우 유용하게 만듭니다.



AkkaStream을 베이스로 주변 Streams기술을 함께 연구하는곳으로 

액터모델을 이해하고 도입하는것이 아니라고 하면AKKA를 항상먼저 채택하는것을 권장하지 않습니다.

ReactiveStream을 준수하는 모든 구현체는 상호 연결이 가능하며 구현레벨에 이용할 코어 스트림은 다음과 같이 채택해서

일관성있는 개발로 구성 하는것이 권장됩니다.

  • 웹환경에서는 Spring Boot와 통합된 Webplux를 이용해 더 간결하고 강력하게 이용할수 있습니다.
    • 웹과의 대응 스펙은 AkkaHttp를 이용하는 Plaframework에서 그 컨셉이 먼저 소개되었으나 대중적이지 않습니다.
  • AkkaStream은 단독또는 클러스터로 작동되는 서버환경에서 유용하게 사용될수 있으며 액터모델과의 상호작용에도 용이합니다.
    • 동시성처리가 약했던 JAVA 7시절 Stream기능을 보완할수 있었으며 현재는 JAVA9-StreamAPI에 영향을 주었습니다.
  • 그외에 JAVA기본 Stream /  rx.java등 다양한 stream처리 API가 있을수 있습니다.


참고링크

  • https://www.reactive-streams.org/
  • https://www.youtube.com/c/ReactiveSummit
    • Reactive Stream활동에 참여한 글로벌 기업들의 도입성공 사례와 함께 기술을 소개합니다. 이제는 도입안정화 단계로 새로운 아키텍처및 스택의 등장이 뜸합니다. - 더이상 핫한 주제가 아님을 의미합니다.
    • 한국에서 성공한 스타트업또는 대기업의 서밋에서도 관련내용을 종종 다루고 있으며, 본방(ReactiveStresm Summit)에서 소개되면 1~2년정도 지난뒤에야 동일한 주제가 국내에 소개가 되곤 합니다.
  • Reactive Stream의 기원

    • 기원을 찾다보면 파생된 주변기술과 서로다른 진영이 각각이 아닌 함께발전한것을 알수 있습니다.
  • No labels