Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

오늘날 우리가 인터넷에서 서비스를 사용하는 방식은 다운로드하거나 혹은 데이터 전송을 비롯한 많은

스트리밍 데이터 인스턴스를 포함하고 있습니다.

TCP의 데이터를 전송하고 수신하는 방식이 일치하기 때문에 소비자가 소비하기위해

읽는 동안만 존재하는 일시적인 개념을 스트림이라고 표현할수 있습니다.

액터 또한 스트림을 다루는것으로 볼수 있습니다.

스트림은 생산자와 소비자사이에 지속적으로 발생하는것이며

쌓아두지 않고 바로 소비하며 원활한 흐름을 만드는것에 대한 고민이며

그것이 다운로드 서비스이든,영화스트리밍 서비스이든 대용량의 데이터를 우리의

어플리케이션이 가진 메모리와 네트워크대역으로는 순간적으로 처리할수가 없습니다.

스트리밍은 항상 생산자와 소비자로 구분되어 있으며 어떻게 생산자와 소비자의 다양한 속도차이를

고려하여 잘처리하느냐에 대한 고민이 필요합니다.

akka-stream은 스트림처리에 제약을 거는 방법을 제공하여 이러한 문제에대한 해법을 제공하며

나아가 스트림을 사용하여 외부 시스템과의 통합하는 방법도 제공합니다이러한 스트림처리에 대해 중재할 무언가가 필요하다란것입니다.

스트림처리가 필요한 이유

...

그림예: Akka에서 발생한 스트림데이터를 바로 소비하여 Kafka로 흘러보내는 전략

( Sink대상은 자신의 서비스일수도 있고 다른 대상이 될수도 있습니다.)


우리의  우리의 서비스는 생산자로부터 끊임없는 데이터가 발생하게 되며, 그것이 집결되어 그것을 집결하여 대량의 데이터가

쌓인 지점을 빅데이터라고 가정해봅시다.  스트림처리의 반대가 패치(일정시간 모아둔데이터를 한꺼번에 처리)이며라고 가정하면

패치전략은 수행되는 동안 많은 메모리와 CPU를 사용하며  그것을 소비하기전 어느 저장공간에 모두 담아야합니다담아야하고 다시 꺼내야 하는 오버헤드가 있습니다.

또한 소비를 위해 중앙저장장치에  이중 부하를 주게되며 결론적으로 빅데이터 처리 반영이 패치시간에 의존적이게 결론적으로 생산에 걸리는 주기가 길어지며 부하가 집중되게 됩니다.


아카 스트림 전략은 생산자로 부터 데이터가 발생하면(Source) 그것을 오랫동안 담아두지않고

바로 소비를하고 (Sink)  실시간으로 활용할수 있다란 점입니다. 생산활동으로 이어지는것입니다.

이것은 AkkaStream의 기능을 떠나서 빅데이터 처리를 위한 중요한 중간 과정입니다.

...