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가 있을수 있습니다.



이 활동을 통해 처리할수 있는개발패턴

아래와 같은 기능을 멀티스레드로 풀어낼수 있다고하면 Stream(AKKA)개념을 도입할 필요는 없습니다.


  • 호출수를 N개 제약하고 , N개 안정적인 동시성 처리를 구현할때~
  • 카프카 전송보장 전략을 이해하고 채택하고 리액티브스트림을 준수하는 다양한 오픈 스트림으로 흘려보낼때~
  • 생산과 소비의 속도 차이가 발생할때 생산 속도조절을 유연하게 하여 안정적 스트림 처리를 구현하고자 할때~
  • 스트림으로 처리된 인메모리 처리를 클러스터 라운터를 도입~ 분산컴퓨팅 처리를 하고자할때~ ( Stream과 무관하지만 AkkaCluster에서 지원 )


참고링크

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

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