퀴즈: 워터마크와 늦게 온 자료
워터마크를 '이 시각까지는 자료가 다 왔다는 사실' 이라고 설명하면 무엇이 틀린가?
- 워터마크는 이벤트 시간이 아니라 처리 시간으로 계산되기 때문이다
- 워터마크는 창마다 따로 계산되므로 하나의 시각으로 말할 수 없기 때문이다
- 더 늦게 올 수 있다는 가능성을 닫아 둔 약속일 뿐이고 실제로 그 뒤에도 자료가 온다
- 워터마크는 원천 시스템이 정해 주는 값이라 우리가 해석할 몫이 없기 때문이다
늦게 온 이벤트가 워터마크를 뒤로 되돌리게 만들면 어떤 일이 생기는가?
- 이미 닫은 창이 다시 열렸다 닫히기를 반복해 어떤 값도 확정되지 않는다
- 늦은 자료가 전부 버려져 합계가 조용히 줄어든다
- 창 크기가 자동으로 늘어나 집계 단위가 달라진다
- 처리 시간과 이벤트 시간이 같아져 재처리가 불가능해진다
자료를 다루기 편하라고 이벤트 시간으로 한 번 정렬한 뒤 늦음을 판정했다. 결과는?
- 창 경계에 걸친 이벤트가 두 창에 모두 들어가 합계가 늘어난다
- 늦은 자료가 0건으로 나와 문제가 없는 것처럼 보인다
- 워터마크가 뒤로 밀려 이미 닫은 창이 다시 열린다
- 가장 이른 이벤트 하나가 모든 창을 늦은 것으로 만든다
허용 지연을 지연 분포의 최댓값에 맞춰 잡으면 무엇이 문제인가?
- 최댓값은 실행마다 달라져 창 크기가 계속 바뀐다
- 꼬리에 있는 한 건 때문에 모든 창이 그만큼 늦게 닫혀 결과가 늦어진다
- 최댓값보다 늦은 자료는 아예 집계에 들어오지 않는다
- 허용 지연이 창 크기보다 커지면 창이 서로 겹쳐 중복 집계된다
늦은 자료를 늦은 갱신으로 반영하기로 했다. 이 결정이 우리 쪽만의 결정이 아닌 이유는?
- 원천 시스템이 이벤트를 다시 보내 주어야 반영이 가능하기 때문이다
- 허용 지연을 바꾸려면 창 크기도 함께 바꿔야 하기 때문이다
- 하류가 갱신을 받아들이지 못하고 덧붙이기만 하면 그쪽에서 중복이 생기기 때문이다
- 반영된 값은 이벤트 시간이 아니라 처리 시간 기준이 되기 때문이다
늦은 자료를 버리는 정책을 골랐다. 반드시 함께 해야 하는 일은?
- 버린 이벤트를 원천 시스템에 되돌려 보낸다
- 창 크기를 지연 분포에 맞춰 자동으로 늘린다
- 워터마크를 버린 이벤트의 시각까지 되돌린다
- 버린 건수와 금액을 따로 세어 남긴다