update_data
(DAG)새로운 컨텐츠가 생성되거나 수정되었을 때, 데이터를 업데이트 해주어야 한다.
파이프라인 구조
파이프라인을 설계하면서 가장 주의깊게 생각했던 요소이 얼마나 적용되었는지 살펴보자
[x] 주기적으로 동작하는 DAG
4시간에 한번씩 파이프라인이 실행되는 것은 에어플로우를 사용함으로써 얻는 이점이다. 스케줄러의 주기 에따라서 약 1분~5분 정도의 차이가 있을 것으로 예상은 되지만 전반적인 파이프라인 동작에는 영향을 주지 않을 것으로 판단된다.
[x] 의존성을 가지는 흐름
의존성을 가지며, 의존성이 완성 되었을 경우에 앞의 태스크가 실행되게 된다.
→ 하지만 의존성이 완벽하게 병렬로 보장받는 구조는 아니다.
현재 파이프라인은 병렬적으로 동작하는 것이 아니기 때문에 각 태스크(inverted, keyword, ...) 안의 각 콘텐츠(pik, category, link)가 모두 수행돼야 다음 단계로 넘어가는 것이 아닌 선형적으로 하나씩 완료가 되어야 넘어간다.
[ ] 멱등성을 유지할 수 있는 흐름
완벽한 멱등성은 유지하지 못한다.
먼저 몇번의 파이프라인을 실행하더라도 한 주기 안에 포함되는 시간 동안에 돌린 파이프라인의 경우 항상 같은 결과를 유지하여야 한다. 하지만 이는 태스크가 따로 따로 분리되어 있기 때문에 완벽한 멱등성을 준수하기란 너무 까다로웠다.
UPDATE
를 활용하여 최대한 DB의 데이터가 유실되지 않도록 하는 선에 초점을 맞추는 방향으로 눈을 돌리게 되었다.