<aside> 💡 기존의 대부분 추천에 필요한 키워드, 벡터화를 하는 데에 모두 파이프라인을 활용하였다. 파이프라인지 필요한 부분과 필요하지 않은 부분으로 나뉘고 DAG를 정리할 필요가 있다고 판단하였다.
</aside>
주기적으로 동작하는 DAG
어떤 행동을 주기적으로 실행하기 위해서 파이프라인이 필요하게 된다.
새롭게 추가된 데이터를 처리하거나, 로그를 처리하는 등의 작업이 이에 포함된다.
의존성을 가지는 흐름
순차적으로 태스크를 나누어서 병렬성을 극대화 하면서 각 태스크 마다 의존성을 통해서 안전한 처리를 보장하기 위해서 파이프라인을 설계한다.
멱등성을 유지할 수 있는 흐름
파이프 라인은 주기적으로 동작하지만 코드상의 에러나, 외부의 요인에 의해서 올바르게 동작하지 않을 수 있다. 이러한 문제를 예방하기 위해서 각 DAG는 태스크 마다 멱등성을 유지할 수 있어야 한다.
→ 즉, GET/PUT과 같은 API 메서드 처럼 파이프라인이 제대로 동작하지 않아 추후에 다시 동작하는 상황, 여러번 동작하더라고 동일한 데이터를 유지할 수 있어야 한다.
스크립트 설계(2022.01.15~2022.01.17)
초기에 세팅하는 모든 요소들은 굳이 파이프라인으로 만들 필요가 없다.
이러한 것들은 대부분 초기에 세팅 이후에 반복적인 동작이 필요없기 때문에 단순히 스크립트로 프로그램을 실행하는 것이 바람직하다.
대표적으로 tfidf 계산, 키워드 추출을 들 수 있다.
유저의 활동에 따라 쌓이는 추가적인 데이터를 처리하기 위한 작업에서 진정으로 DAG의 필요성이 생기게 된다.
예를 들어 activity log의 쌓인 content의 추가/수정 사항에 대한 키워드 추출을 다시할 필요가 있다. 이러한 작업은 API를 통해서 즉시 처리할 수 있지만 주기적인 시간을 설정하여 처리할 수 있다.