본문 바로가기

책/Streaming System

Chapter 1. Streaming 101 (2)

반응형

ㅇ..연어!

 

진짜 볼때마다 느끼는건데 번역이 너무 아쉬워요...

 

 

 

스트리밍 시스템이 배치 시스템을 이기기 위해서는?

두가지가 필요하다 

 

1. 정확성  (correctness)

정확성은 스트리밍시스템이 배치와 동등해지기 이해 필요한 조건이며, 

핵심은 일관성을 제공할 수 있는 스토리지[consistent storage]로 귀결된다 

스트리밍 시스템에서는 시간이 지남에 따라 영구 상태를 유지할 수 있는 체크포인트 방법이 필요하다 

어떤 스트리밍 프레임워크든 체크포인트를 만듬에 따라서 중복을 최대한 방지하면서 
멱등성를 보장하는 시스템을 설계하는것이 가장 이상적인데 
과연 스트리밍 시스템에서 멱등성을 100프로 보장할 수 있을까 

 

 

또한 스토리지는 장애 등의 상황에서도 일관성을 유지할 수 있도록 설계되어야한다.

스파크 스트리밍이 등장하면서 일관성 지원이 가능함으로 보여줫는데 그 후로 상황이 크게 개선됫지만

여전 히 얼마나 많은 스트리미이시스템이 강력한 일관성을 제공하고 있지 않는지 주목할 필요가 있음 

 

중요한 문제미으로 다시 한 번 강조하면,

강한 일관성은 정확히 한 번 처리 (exactly-once processing) 방식을 지원하기 위해서 반드시 필요함 

 

apache kafka ack 처리에 따라서 exactly once 를 보장할 수 있는것처럼

정확성을 제공하기 위해서는 정확히 한번 방식이 필요하고 
정확성은 최소한 배치 시스템의 능력 이상을 가지고자 하는 시스템이 갖추어야 하는 필수 요소다 

시스템 처리 결과의 정확성이 중요한 상황이라면
강력한 일관성을 제공하지 않는 스트리밍 시스템은 피해야한다 

배치 시스템을 사용한다면 정확성을 갖춘 답을 얻었는지 손수 검증할필요가

없으며 같은 기준을 만족하지 못하는 스트리밍시스템을 쓰느라 시간을 낭비할 이유도 없음 

 

 

2. 시간 판단 도구 (tools for reasoning about time) 이거 번역이 이상한데.. wateramark 인거같은데..

시간 판단 도구는 스트리밍 시스템이 배치의 능력을 뛰어넘을 수 있게 해주는 부분이다 

시간에 대한 판단을 도와주는 훌륭한 도구는 다양한 이벤트 시간 왜곡이 발행하는 상황에서

무한 비순서 데이터....? 이거 스트림 데이터 를 처리할 때 반드시 시 필요하다 

 

오늘날 점점 더 많은 데이터가 이러한 특성을 보이며 

기존 배치 시스템은 그런 특성으로 인한 어려움을 해결할 수 있는 도구가 부족하다 

 

 

이벤트 시간 대 처리 시간 

무한 데이터 처리에 대해 이야기 하려면 시간 영역에 대한 명확한 이해가 우선돼야 한다 

모든 데이터 처리 시스템에는 일반적으로 다음 두 형태의 시간 영역이 있다 

 

  • 이벤트 시간 
    • 이벤트가 실제 발생한 시간 
  • 처리 시간 
    • 이벤트가 처리 시스템에서 관측된 시간 

이벤트 시간이 모든 경우에 중요한 것 은 아니다. 그리고 만약 그런 경우라면 데이터 분석은 매우 쉬워질꺼임 

하지만 시간에 따른 사용자 행동의 특성을 분석하거나 결제 관련 서비스나 이상 징후 감지 등과 같은 대부분의 경우에는 이벤트 시간은 중요

 

이상적인 상황이라면, 어떤 사건이 발생한 즉시 처리될 것이기 때문에, 이벤트 시간과 처리 시간은 항상 동일해야함

하지만 현실은 그렇게 녹록하지 않으며, 두 시간 사이의 왜곡은 0이 아닐 뿐만 아니라 
입력 소스, 실행 엔진 하드웨어 등 다양한 요소를 반영한 매우 가변적인 함수가 될 수 있음 

 

  • 공유 리소스로 인한 제약 
    • 네트워크의 혼잡 정도 파티션 등등.. CPU같은것 포함 
  • 분산 시스템의 로직, 경쟁 상황 같은 소프트웨어 상의 원인 
    • 멱등성 보장 안될 수 있음 동시성이 동시에 돌아갔을때 또는 실패했을떄 복구 과정에서 멱등성이 보장이 안되면 데이터 오염 가능성이 매우 큼 
  • 데이터 자체의 특성
    • 키 분산, 데이터 양이나 순서의 변화 

그림으로 표현하면 다음과 같다..

 

 

실제로 처리 시간에서 발생하는 지연과 이벤트 시간에서 발생하는 왜곡은 한 지점을 놓고 보면 
동일한 크기 이다 

즉, 같은 현상을 바라보는 두 가지 서로 다른 관점이라고 할 수 있음 
이벤트 처리 시간과 처리 시간 사이의 관계가 고정되어 있지 않고 시간에 따라 변화하기 때문에 
이벤트 시간이 중요한 경우라면 파이프라인 관측 시점만으로는 데이터를 분석할 수 있음 

 

 

무한 데이터셋의 무한함이라는 특성을 다루기 위해 이런 시스템은

일반적으로 인입되는 데이터를 윈도우 라는 단위로 잘라 다룰수 있는 개념을 제공함 

 

본질적으로는 일정 시간 경계에서 데이터셋을 유한한 크기의 조각으로 자르는 것이라 생각하면 된다 

 

단, 정확성과 이벤트 시간을 중요한 경우라면 처리시간(처리 시간 윈도우)을 사용해 이 경계를 설정해서는 안 되며, 

그렇지 않을 경우 처리 시간과 이벤트 사이의 어떤 일관된 관계 없이는 이벤트 시간  데이터중 .. 윈도우로 들어가 정확성에 문제가 생길것임 

 

 

근데 처리 시간이 아닌 이벤트 시간으로 윈도우를 나눈다고 해서  좋은것도 아님..

무한 데이터의 순서가 보장되지 않고 가변적인 왜곡이 발생할 수 있음.. 

 

정확하게 말하면 이벤트 시간 윈도우의 완결 시점을 결정할 수 없다는뜻 
처리 시간과 이벤트 시간 사이의 예측 가능한 관계가 없다면
주어진 이벤트 시간 X에 대한 데이터가 완료됫다고 어떻게 보장할 수 있을까? 

결국 풀어서 말해보면 .. 

이벤트 시간 윈도우의 완결 시점이 명확하게 결정되질 않았는데 
이벤트 들이 발생하는 시간 윈도우 내에서 언제까지 데이터가 완료되었냐고 확신할 수 없는데 ..

이로 인해 이벤트 시간과 처리 관계를 예측할 수 있는게 말이 안되는거고 
특정한 이벤트 시간에 대한 데이터의 완결성을 보장할 수 있냐는말.. 

보장 안되는다는말임 결국은 

 

 

새로운 데이터가 도착하면 이전 데이터를 철회하거나 갱신할 수 있어며하며 

완결 시점이라는 개념을 시스템 전반에 적용되는 일반적인 개념보다

 

특정 경우를 위한 편리한 최적화를 간주해야한다고 써져 있는데..

- 그니깐 처리하는 시점에 효율적으로 프로세스를 최적화하는것을 의미한다는것으로 보임... 

반응형

' > Streaming System' 카테고리의 다른 글

Chapter 1 . Streaming 101 (1)  (0) 2024.02.21
chapter 1. 빅데이터의 기초 지식  (0) 2023.05.09